Y a 15 jours je me mettais au PHP ...

  • Auteur de la discussion Auteur de la discussion Zecat
  • Date de début Date de début
WRInaute accro
Ben voilà, avec l'aide bienveillante (et souvent patiente) de nombreux wrinautes, je peux considérer que je suis désormais opérationnel (en ce sens que je me sens de dire, comme je le disais avec les autres langages que je pratique, si un truc est "descriptible" il est codable, point barre).

Outre mon petit outils de stat visiteurs en temps réel évoqué dans un autre topic, mes deux premiers chantiers ont été :

1 - La programmation de la gestion d'une zone membre (s'inscrire, se connecter, se deconnecter, se desinscrire, mot de passe oublié, changer mot de passe, contacter l'admin, .. avec gestion des emails et tout et tout). Si certains veulent tester c'est sur mon ww colonne de gauche.

2 - Dans la foulée, soyons fou, je me suis programmé une petit gestion de commentaires : exemple ici

http://www.az-sante.com/DICO/A/abces.php

(au millieu de la page après la definition ... ok ok je dois encore virer les anti slash :wink: ).

Bref ca roule de chez ca roule

J'ai oublié le principal : un grand merci à tous ceux qui ont consacré un peu de temps à mon apprentissage.
 
WRInaute impliqué
quand on est motivé par un nouveau projet on progresse très vite, j'en ai fait l'expérience, c'est vrai que le php reste accessible, mais tout ça en 2 petites semaines, effectivement belle perf !
 
WRInaute accro
aucune perf la dedans. Un mec rodé en php plie ca en 1 jour. Simplement au début on rame parce qu'on cherche les bonnes commandes, les bonnes syntaxes, on oublie les ; à la fin etc bref on se prend des bordées d'injures par php :mrgreen:

Sinon effectivement j'ai trouve le php plus accessible que pas mal de langages dit "plus évolués". On s'y fait tres vite. Et surtout enorme avantage, un coup de google et on trouve quasiment tout ce qu'on veut ... dejà tout maché.
 
WRInaute accro
Si tu dois chippoter avec des stripslashes c'est probablement que les magic_quotes sont activées et que le script met des slashes en plus à l'insert (donc échappées 2 fois).
=> solution: désactiver les magic_quotes et bien faire des mysql_real_escape_string() sur les valeurs à ajouter en SQL.
 
WRInaute accro
saypee a dit:
Bravo,
Avec quel support as tu appris ?
Parce que moi, je rame complet.
1 _ je me suis descendu tout le php sur le site du zero en premiere lecture juste pour m impregner et me dire (ah tiens ca ca va servir surement). Juste de la lecture sans prise de note ni rien.

2 - j'ai commencer à repomper un exemple (par exemple un form) puis je l'ai adapté a mon besoin puis testé et retesté. Puis une fois le form diggéré, je me suis attaqué à la recup des $_POST selon le meme mode opératoire puis une fois diggéré, j'ai fait l'envoi d'email qui suit la validation du form. Et hop ca c'est fait ...

3 - Tu traites ainsi 10 points fonctionnels (fabriquer un pass word et hop tu avales le for, le substr, le md5 - fabriquer un graphe et hop tu diggère GD, mémoriser un journal de bord et hop tu diggère date time timestamp etc etc et t'as tout vu. Le siteduzero est impec pour cela (j'ai ni actions ni bl chez eux :mrgreen: Juste que quand un truc est bien, faut le dire - je me prive pas quand c ets mal ...). Et pour le debutant qui veut se former c'est impec.

Voila c'est tout.

Et quand vraiment je coinçait, un petit tour ici pour me decoincer avec l'aide d'un wrinaute.

Bon derrière j'ai 30 ans de dev avec autres langages et BDD donc les grand principes sont déjà assimilés (la structure des infos et la façon de les ranger, le array processing (travail via tableau) qui n'est pas une invention php mais que l'on retrouve dans plein de bdd et autres langages, les pointeurs, etc, j'avais juste a apprendre un nouveau langage.
 
WRInaute passionné
C'est quand même impressionnant. Je serais incapable de le faire, je suis hermétique à la programmation, enfin c'est je pense l'envie qui fait que.
Félicitations!
 
WRInaute accro
Tu sais moi j'ai codé pendant 30 ans et j'aime ca ... on se refait pas ... je me souviens de mon premier job en ... hou 1979 ... ca fait loin ma brave dame : mon boss était fou ... j'avais pondu un programme en assembleur (un truc des vieux de la vieille que la generation php ignore) de près ... d'un million de ligne de code !

Plus tard, j'ai fait chauffer le cuivre avec des algo de ouf (ils m'ont marqué ceux là) pour des calculs de "prédiction de vieillissement" (c'est le terme technique) de composants electroniques sur satellites en orbite basse (pour matra espace à l'époque) et j'en passe des vertes et des pas mûres :mrgreen:

Bref de la corne au bout des doigts :wink:
 
WRInaute accro
carrel a dit:
Félicitations pour la rapidité.

évite les parse error :lol:
Au debut c'est usant... tu avances une ligne pas une ligne (putain le ; damned la parenthèse, crotte param inversés). maintenant ca va, il m'arrive de coder une fonctionnalité de 30 ,50lignes ou 100 lignes , de bien tout vérifier, de mettre on ftp et hop : 0 bug ca marche ...

Juste un petit conseil saypee (qui n'ets pas propre au php) : Des que tu as fait marcher un truc (aller disons l'envoi d'un email), mets le truc en générique dans une boite noir avec param en entree et en sortie :

1 - tu isoles le code dans un doc nommé envoi_mail.php
2 - tu organises les param en entree (dans le cas de envoi mail c'est chez moi un array a 5 ou 6 lignes qui contient les paramètres _ from to Cc sujet corps etc)
3 - les paramètres en sortie (par exemple ici un $error qui peut prendre différente valeur ou 0 si ok, $message_error qui contient le bla pour pouvoir l'exploiter ensuite)

Et voila un truc qui te fera plus ch...
 
WRInaute occasionnel
Avec un bon éditeur, on peux aussi éviter tout un tas d'erreurs d'inattention. Perso sous eclipse je code souvent des blocs entiers avant de tester. Le jour et la nuit comparé aux solutions light (pspad, notepad etc...).
 
WRInaute accro
Oui moi je suis un de la vieille ecole qui aime bien controler tout et du coup (c'ets pas bien je sais) je code tout avec ... le bloc-note quand je suis sur le pc ou sur mon vieux mac anté-diluvien (un powerbook pismo (500 MHz quand même :mrgreen: ) pour les connaisseurs en bon vin vieilli en fut de chene - si si y en a encore en etat de marche opérationnelle) avec son equivalent sur mac : BBedit ! Bon en fait c'est 99 % sur le mac et le bloc note c'est juste pour corriger vite fait pendant les tests : ftp --> filezila --> blocnote -->filezila --> ftp

Sinon saypee, il y a à mon avis une règle immuable : on n'apprend pas un langage dans le vide jute pour apprendre. Je ne connais qu'un moyen vraiment efficace : avoir un truc a traiter, être au pied du mur et donc ne pas avoir le choix : mouiller la chemise, ramer pour arriver au résultat. C'est la meilleure des formations. Tu rames peut être parce que tu t'es dit tiens je vais apprendre le php mais sans avoir un projet précis a traiter ... et du coup :

1 - tu butines de points en points sans leur rentrer vraiment dans le chou les mains dans le cambouis
2 - tu manques de motivation parce que tu t'essoufles a rien voir avancer puisque t'a pas un projet précis à traiter
 
WRInaute accro
Seul souci, pour Texmate faut être sous OsX aux dernières nouvelles.

Sous Mac perso je suis sur Coda, un éditeur ultra-bien fichu qui permet de gérer en mode projet. Et sous windows j'alterne entre SciTE, UltraEdit ou Dreamweaver.
 
WRInaute passionné
Effectivement Zecat je n'ai pas de projet précis à traiter ou bien quand j'en ai un ,je cherche un script tout fait que j'essaie d'adapter à mes besoins, je suis conscient que ca n'aide pas mais je n'ai que très peu de temps.

Ceci dit, tu m'as donné envie de m'y mettre, je te remercie pour tes conseils , je vais faire un tour sur le site de zero pour voir (tiens il est down pour le moment).

J'ai un petit projet vraiment tout con (j'en suis sûr) que je vais essayer de me faire ;)

Merci encore.
 
WRInaute accro
UsagiYojimbo a dit:
Seul souci, pour Texmate faut être sous OsX aux dernières nouvelles.
Ouaip j'ai fait il y a longtemps une install OsX sur mon pismo ... ca tournait mais bon il était à la peine le pov' avec ses 500 Mhz ... donc retour à un bon vieux mais néanmoins robuste 9.2.2 qui ne m'a jamais laché depuis le temps !!! Enplus j'ai une foule d'appli qui tourne qu'en os9 ... le seul truc c'est que je sers les fesses qu'il tombe pas en rade parce que va trouver une becanne en bon état (un portable de surcroit) qui tourne en os9 en 2010 !!!! :roll:
 
WRInaute accro
skyll a dit:
Zecat a dit:
(au millieu de la page après la definition ... ok ok je dois encore virer les anti slash :wink: ).
stripslashes() :mrgreen:
Na na na nère .... bon bon ok j'y vais :mrgreen: (vous z'inquiéter pas, aucune agression, on se connait bien skyll et moi). :wink:

edit : voila c'est srtipslashé :mrgreen:
 
WRInaute passionné
Zecat a dit:
siteduzero marche bien chez moi ...

C'est quoi ton petit projet tout con ?

Sous IE , il ne marche pas, il y a une redirection vers -http://www.go.out

Sous FF ok.

Mon projet c'est de creer un formulaire de demande dinscription qui me permetterais d'accorder à certains membres d'acceder à un sous domaine pendant un temps donné.

Je crois que c'est un peu chaud pour un noob comme moi :wink:
 
WRInaute accro
non non c'est pas chaud du tout ... regarde ca a été mon premier truc sur mon www (regarde la colonne de gauche zone memebres, inscrits toi, conecte toi, deconecte toi desinscrit toi envoie un mail a l'admin (mezigues) etc et tu as toute la marche a suivre.

1 - form
2 - action
3 - notification mail
4 - refresh zone membre (accès reservé)

Chapitre a lire pour le faire :

- les form (fab et recup de var)
- les email (envoi en html avec lien de validation/refus dedans)
- les sessions (pour memoriser dans les var $_session les ref du connecté) et toute var interpage utile
- la manipulation de documents sur le serveur (creation, ecriture, suppression) pour stocker les infos - j'ai fait l economie d'une base mysql pour le moemnt (ca va aussi bien avec des doc sur le serveur bien organisés)

et ensuite à toi d'organiser ton machin. Et tu peux pas être plus newbee en php que je l'étais : je connaissais que "include" (qui d'ailleurs n'includait que du html :mrgreen:

PS : pour ton histoire de "un temps donné" :

Tu crees sur le disque un doc par user nommé par exemple Pseudo.txt et dedans tu ranges

Zecat
13ze434fR5Rtr56ty675
200100229

Premiere ligne rappel du pseudo par secu et pis c'est plus zouli ainsi
Deixieme ligne le password MD5isé
troisieme ligne la date limite

Chaque fois que le pseudo zecat se connecte, tu lis ce doc (de toute façon tu va le lire pour verif du password) et tu regarde si pas périmé (la date ... pas zecat qui comme chacun le sait est inoxydable :mrgreen: ) sinon tu jettes. Voila plus simple y a pas.
 
WRInaute accro
Salut

Tout le site fonctionne sans BDD ?...

En tout cas très belle réalisation :-) (bon, niveau design faudra améliorer un peu ;) )
 
WRInaute accro
cedric_g a dit:
Salut

Tout le site fonctionne sans BDD ?...

En tout cas très belle réalisation :-) (bon, niveau design faudra améliorer un peu ;) )
Oui c'est un site totalement statique hormis les 2 fonctions que je viens de developper en php (zone membre et commentaires qui eux sont en dynamique mais sans BDD mysql).

Le reste, en fait c'est du semi-statique (je bosse une bdd en local, je fabrique des morceaux de page et tout ce joli petit monde s'include en veux tu en voila dans tous les sens (non non c'est pas cochon). Cela a comme avantage par exemple que toute la partie doc connexes est pré-préparée et donc aucunes ressources bouffées durant la navigation (et la ca aurait mouliné grave si en temps réel avec mysql !). Autre avantage : pas besoin de rewritting !

Jusqu'à présent le fait de pas connaitre le php faisait que je faisais plein de ruses booléennes en jouant sur les noms de documents pour afficher tel ou tel morceau ... je vais petit a petit l'alléger puisque maintenant j'ai les "if" :-) Oui oui y a pas un seul if dans tout le site :mrgreen: Y a même pas de php hormis include !

Coté design, le seule truc bien est celui qui n'est pas de moi : le logo :mrgreen: (fait spontanément par un wrinaute qui a du avoir pitié de moi en voyant la bouse que j'avais pondu :mrgreen: ).

Là aussi, Paris ne s'est pas fait en un jour ... L'essentiel est que j'ai une structure interne bien organisée et facile à maintenir et à faire évoluer ...

Illustration de mon propos sur le semi dynamique. Toutes le spages du dico sont ainsi tout simplement :

Code:
<?
include($_SERVER["DOCUMENT_ROOT"]."/AA_php2/before-html.php");
?>

<html>
	<?
	global $title;$keywords;$description;
	$title="abdomen : Definition sur Az-sante.com";
	$keywords="abdomen, sante, medecine, soins";
	$description="L'abdomen est la partie creuse du corps, limitee en haut par un grand muscle dis ...";
	include($_SERVER["DOCUMENT_ROOT"]."/AA_php/bloc-head.php");
	$numsite="2";
	$lignemenu="2";
	$lettre="ab";
	$mot="abdomen";
	$motaccent="Abdomen";
	$motsconnexes="abdomen";
	$motsitereco="";
	include($_SERVER["DOCUMENT_ROOT"]."/AA_php/bloc-master-dico.php");
	?>
</html>

Donc la "base de données" est en fait transmise aux page via des variables. Et juste avec ca il se débrouille pour fabriquer la page correspondante. Avec $mot il sait quel morceau il doit aller includer pour choper le texte, avec $lettre il sait quel morceau il doit récuperer pour afficher la bonne liste de mots sous la règle, avec $motconnexes il sait quel morceau ... si c'est vide il sait que pas de mots connexes et va appeler un doc vide ... $idem pour sitereco ...

Bref ca include et ca booléen a donf ... Petit a petit j'allège. Par exemple je ne vais plus passer les variables $motconnexes et $sitereco ... remplacées par if (file_exists()) quand j'en ai besoin etc etc. Pareil pour $lettre avantageusement remplacé par un substr ... etc

Mais je vais garder ce principe semi-dynamique plein d'avantages (tout en distilant peut être un peu de mysql lorsque ca m'arrangera).

Dans le même registre, toutes les pages de l'annuaire :

Code:
<?
include($_SERVER["DOCUMENT_ROOT"]."/AA_php2/before-html.php");

global $depnum;$depnom;$sectnum;$sectnom;$villenum;$villenom;$lettre;$premiere;$REMONTE;$REMONTESOC;$DOMAINE;
$REMONTE="../"; 
$REMONTESOC=""; 
$DOMAINE="com/PROF"; 
$depnum="01"; 
$depnom="Ain"; 
$sectnum="1063"; 
$sectnom="Sages-femmes"; 
$sectshort="sages-femmes"; 
$lettre=""; 
$villenum="1"; 
$villenom="Bourg En Bresse"; 
$premiere="1"; 
include($_SERVER["DOCUMENT_ROOT"]."/AA_php/bloc-head-prof.php"); 
$numsite="3"; 
$lignemenu="2"; 
include($_SERVER["DOCUMENT_ROOT"]."/AA_php/bloc-master-prof.php"); 
?>

Tu noteras la variable $REMONTE="../" :mrgreen: :mrgreen: Ben vi comme j'étais manchot du php et sans if ... fallait ruser et donc selon les pages, cette var est remplie ou vide en fonction du niveau dans la hierachie ... Là aussi je vais faire du ménage ...

PS : le before html c'est tout récent ... c'est pour y caser le session start :wink:
 
WRInaute passionné
Ah ouais pas de BDD o_O
Tu comptes y passer? Ca t'ouvrirais pas mal de nouvelles possibilités pour le site je pense.

Et Zecat : a quand l'objet? :)
 
WRInaute accro
Bacteries a dit:
Ah ouais pas de BDD o_O
Tu comptes y passer? Ca t'ouvrirais pas mal de nouvelles possibilités pour le site je pense.
Pas tant que ca en fait. N'oublie pas que les traitement complexes sont pre digérés en amont dans une BDD. Sur le fond que 3 adresses soit stockées :

a) dans une bdd, dans une table adresse, dans un enregistrement dupont, dans trois champs a b c
ou
b) sur le disque du serveur, dans un dossier adresse, dans un document dupont.txt, comportant 3 lignes

C'ets la même info et accessible quasiment aussi rapidement et facilement.

Et puis de la BDD, j'en ai bouffé et re bouffé (pendant plus de 20 ans et de la "lourde" avec des millions de records) et j'en retiens que c'est une dépendance aussi et une faiblesse potentielle : base de données non accessible, endomamgée, corrompues etc ... un bon vieux .txt c'est un bon vieux .txt :wink: Et au final pour les problèmes simple (et les stockage web sont de sproblemes simples), c'est pas une obligation du tout.

Dans le cas de mon www je ne vois absolument aucune fonctionnalités qui pourrait imposer l'usage d'une base de données. Prenons l'exemple du petit outil de saisie de commentaire. Pas de basse de données.

1 - Le gars poste un commentaire
2 - C'est stocké dans un doc nommé lemot_timestamp.txt (en attente de validation)
3 - je recois un mail m'informant du commentaire et contenant les lien accepter / refuser (le nom du doc en ? dans les url bien sur)
4 - Je refuse : le doc est supprimé
4b - j'accepte : le doc est lu, son contenu est ajouté au doc lemot.txt (sans timestamp = publié), le doc est supprimé.

Une base de données n'apporterait rien de décisif sur le plan focntionnel (d'ailleurs la meilleure preuve en est que si je ne le dit pas, quelqu'un qui poste un commentaire va à tout les coup penser que c'est une Bdd derrière, idem pour le processus d'inscription).

Le seul critère qui peut imposer dans ce contexte une BDD serait une très importante volumétrie (ce qui n'est pas le cas de la plupart des projet web et en tout cas pas le cas du mien pour le moment). Si un jours il y a 50000 inscrits sur az, il sera toujours temps de peut etre remonter les infos "inscrits" dans uen BDD. Ca prendra 15 mn et ca ne provoquera aucune perturbation visible : il y a d'un cote le stockage (doc/bdd) et de l'autre l'affichage (les pages web).
 
WRInaute passionné
Je ne parlais pas du site, qui est très bien et fonctionne comme il se doit mais plutôt de possibles ajouts / évolution.

Par exemple faire une liste des derniers commentaires, une liste des membres les plus actifs avec leurs derniers commentaires, ... Ca reste possible avec des fichiers txt mais ça devient un peu plus "chiant", et surtout tu peux pas dev ça en 5 minutes si ça a pas été prévu.

Et niveau BDD : je pense que ça a pas mal évolué et que niveau fiabilité c'est quand même plus sécurisé que des fichiers txt. Pour avoir une BDD avec quelques millions d'enregistrements (pour un site web) je n'ai jamais eut de soucis de base corrompues (ou alors sur une table, et un repair l'a vite corrigé).
 
WRInaute accro
Bacteries a dit:
Je ne parlais pas du site, qui est très bien et fonctionne comme il se doit mais plutôt de possibles ajouts / évolution.

Par exemple faire une liste des derniers commentaires,
Ca ca y est deja ... par exemple chaque membre peux voir la liste de ses commentaires postés dans la zone membre. Pour le moment j'ai pas mis "les derniers commentaires" sur la home mais ca va viendre. Nul besoin de bdd pour cela.

Bacteries a dit:
une liste des membres les plus actifs avec leurs derniers commentaires, ... Ca reste possible avec des fichiers txt mais ça devient un peu plus "chiant", et surtout tu peux pas dev ça en 5 minutes si ça a pas été prévu.
mais si mais si ... boucler sur une liste de records ou sur une liste de doc c'est du pareil au meme.

Bacteries a dit:
Et niveau BDD : je pense que ça a pas mal évolué et que niveau fiabilité
C'est évident mais pas décisif pour justifier de passer tout en BDD. La BDD n'est pas une fin en soit mais un moyen d'arriver à un résultat. Si on y arrive sans, pourquoi s'imposer une BDD.

Bacteries a dit:
c'est quand même plus sécurisé que des fichiers txt. Pour avoir une BDD avec quelques millions d'enregistrements (pour un site web) je n'ai jamais eut de soucis de base corrompues (ou alors sur une table, et un repair l'a vite corrigé).
C'est vrai, que ces dernières années ca a gagné en fiabilité mais bon avec mes quelques dizaines ou centaines d'infos qui se abttent en duel ... je ne vois pas vraiment d'avantage décisif à utiliser mysql et je vois que je perdrais plein de souplesses liées au fait d'utiliser des doc.

Bon sur le plan sécurité :

1 - ce sont pas infos ultra sensibles
2 - les infos sensibles sont MD5isés avec chamboullement du MD5 anti reverse :mrgreen:

Donc c'ets quand même pas "open bar" :wink:

Bon sur le fond, je comprends que cette démarche interpelle un user de mysql (ou autre) mais elle n'est pas complètement hérétique (hors norme certes mais pas totalement infondée à mon avis. Je le fais en conscience parce que j'y trouve mon compte - la meilleure illustration est la fonctionnalité "mots connexes" : va coder ca en temps réel en dynamique :

- complexité
- ressources consomées

Tandis que là c'est une moulinette en amont en local (aucun besoin de temps réel la dessus - ce sont des données figées) et 0 ressources bouffées en ligne (juste un if (file_exists("zegooddoc.php") et un include("zegooddoc.php"))
 
WRInaute accro
Tiens bacteries, juste pour valider mon approche, je viens de tester la chose ... j'ai donc codé la fonction derniers commentaires postés :

Verdict : 4 (oui pas 5 pas 10 .. 4) lignes de codes a ajouter à mon code existant :

$chemin="ce qui va bien";
$pagereferer = fopen ($chemin, "a+");
fputs ($pagereferer, $work)
fclose ($pagereferer)

That's all ! $work était déjà prêt puis que traité juste avant. Ca m'a pris montre en main 3mn30. Pas sur que Mysql m'eut apporté un gain (pas de perte peut etre mais pas de gain)

Bon maintenant me reste a trouver un place sur le site pour caser l'info ... :wink:
 
WRInaute accro
ok on teste la chose :

en entree tu as $work qui contient les infos sur le dernier commentaire posté :

(date, heure, ip, pseudo du gars, mot concerné, titre, corps).

Voilà. maintenant que dois tu coder pour :

1 - initaliser la table dans mysql
2 - stocker les infos dans la base

Allez fait chauffer le code :wink: Si on parle de faciliter les choses, je ne demande qu'à être converti que j'en aurais moins a faire ...
 
WRInaute passionné
1 - initaliser la table dans mysql :
ca, tu le fais une seule fois, par exemple dans phpMyAdmin y'en à pour 1 minute...
après tu t'en occupe plus.

2 - stocker les infos dans la base (date, heure, ip, pseudo du gars, mot concerné, titre, corps)
mysql_query("insert into matable(date,heure,ip,pseudo,mot,titre,corps) values('$date','$heure','$ip','$pseudo','$mot','$titre','$corps')") or die("Query failed");

Voila..
2 secondes :mrgreen:
 
WRInaute accro
Zecat a dit:
Allez fait chauffer le code :wink: Si on parle de faciliter les choses, je ne demande qu'à être converti que j'en aurais moins a
Il y a moyen de faciliter les choses en travaillant avec framework (CakePHP, CodeIgniter, Zend framework,...) (pour ne pas réinventer la roue à chaque fois)
 
WRInaute accro
skyll a dit:
1 - initaliser la table dans mysql :
ca, tu le fais une seule fois, par exemple dans phpMyAdmin y'en à pour 1 minute...
après tu t'en occupe plus.

2 - stocker les infos dans la base (date, heure, ip, pseudo du gars, mot concerné, titre, corps)
mysql_query("insert into matable(date,heure,ip,pseudo,mot,titre,corps) values('$date','$heure','$ip','$pseudo','$mot','$titre','$corps')") or die("Query failed");

Voila..
2 secondes :mrgreen:
C'est bien ce que je disais, c'est kif kif. Ca m'apporte quoi. 2s chez toi idem chez moi (mon 3m30 c'est parce que je voulais pas marquer 2s :wink: ). Donc premier constat = match nul en terme de taf.

dans les deux cas c'est du "temps marginal" comparé au reste (là ca fait 15mn que je regarde mon ecran à me demander quelles infos je vais afficher, comment et sous quelle présentation :wink: )
 
WRInaute accro
spout a dit:
Zecat a dit:
Allez fait chauffer le code :wink: Si on parle de faciliter les choses, je ne demande qu'à être converti que j'en aurais moins a
Il y a moyen de faciliter les choses en travaillant avec framework (CakePHP, CodeIgniter, Zend framework,...) (pour ne pas réinventer la roue à chaque fois)
On a dejà eu cette discussion dans un autre topic avec matthieu je crois et la conclusion était : pour un projet perso, la perte de maitrise liée à l'utilisation d'un framework ne vaut pas le coup. Pour un projet d'entreprise avec des impératifs stricts de rentabilité oui, par pour un site web perso. En plus avec les includes, on fait les choses une fois (c'ets formateur) et on réutilise.
 
WRInaute accro
Par contre au niveau BDD, ça t'aurait facilité les choses, je le pense également. Pour les perfs, en quelques minutes tu peux mettre en œuvre un système de cache simplissime (j'en utilise un super efficace pour ça, me rappelle plus son nom mais ça se fait en 2 lignes de code dont un test, pour chaque "bout" à cacher)

Mon modeste site photo fait +12000 pages vues par jour, ça tourne nickel depuis 2006 (bon, je l'ai pas mis à jour depuis... fin 2007 donc le cache également : c'est quelque part littéralement un site sans BDD depuis cette date :mrgreen: car on peut pas dire que MySQL aura été sollicité depuis !!!)



Au niveau des frameworks par contre, je partage ton avis (même si j'utilise .Net dans le cadre de mon boulot depuis 2001 - pas en web, je précise). Au mieux, je préfère développer mes propres outils en objet (surtout quand tu sais que ça va évoluer dans le temps : que de temps gagné, justement !)
 
WRInaute accro
Bon j'ai mis en palce les denier messages sur la home. Pas bien compliqué (et encore j'ai fait du zèle avec deux listes etc)

Code:
<?

	//
	// ---------- on va lire les messages dasn last ...
	$chemin=$_SERVER["DOCUMENT_ROOT"]."/**********/***********.txt";
   	 if (file_exists($chemin))
    	{ 					
			$array_fichier=file($chemin);
			$nblignes=sizeof ($array_fichier);
			$nbcomment=$nblignes/10;
		
    		if ($nbcomment > 0)
    			{
    				$nbliste1=3; // nb dans partie affichŽe
    				$nbliste2=7; // nb dans partie dŽployable (suite ...)
    				$lgcomok=60; // lg de comm gardŽe
    				
    					$texte_com1="";
					$texte_com2="";
    				
					for ($indice=1; $indice<=$nbliste1; $indice++) 
   						{
   							$rang=($indice-1)*10;
   						
   							// $date_com=$array_fichier[$rang];
   							// $heure_com=$array_fichier[$rang+1];
   							$pseudo_com=$array_fichier[$rang+2];
   							$mot_com=$array_fichier[$rang+3];
   							$titre_com=stripslashes($array_fichier[$rang+4]);
   							$texte_com=stripslashes($array_fichier[$rang+5]);
   							$texte_com=substr($texte_com, 0, $lgcomok);
   							
   							$texte_com0='<a href="'.'"><b>['.$mot_com.']</b> - par '.$pseudo_com.'<br>'.$titre_com.'</a><br>'.$texte_com.'...<br>';
   							$texte_com1=$texte_com1.$texte_com0;				
   						}	
   						
   						
   					for ($indice=$nbliste1+1; $indice<=$nbliste2; $indice++) 
   						{
   							$rang=($indice-1)*10;
   						
   							// $date_com=$array_fichier[$rang];
   							// $heure_com=$array_fichier[$rang+1];
   							$pseudo_com=$array_fichier[$rang+2];
   							$mot_com=$array_fichier[$rang+3];
   							$titre_com=stripslashes($array_fichier[$rang+4]);
   							$texte_com=stripslashes($array_fichier[$rang+5]);
   							$texte_com=substr($texte_com, 0, $lgcomok);
   							
   							$texte_com0='<a href="'.'"><b>['.$mot_com.']</b> - par '.$pseudo_com.'<br>'.$titre_com.'</a><br>'.$texte_com.'...<br>';
   							$texte_com2=$texte_com2.$texte_com0;	
   											
   						}
   												
				}
		}
?>
 
WRInaute accro
cedric_g a dit:
Par contre au niveau BDD, ça t'aurait facilité les choses, je le pense également.
Je suis pas quelqu'un de fermé (regarde je voulais pas utiliser les sessions, et ici on m'a convaincu argument à l'appui que je le devais. J'ai changé de fusil d'épaule.

Là on me repète qu'on pense que ca me faciliterai les choses mais sans me montrer un seul point ou ca me les faciliterai effectivement. Mon propos n'est pas de dire "arrêtez mysql" !! Mon propos est de dire "on peut très bien faire sans" dans x % des cas avec la même efficacité et les mêmes perf qu'avec,tant que les volumes à gérer sont raisonnables s'entend. Et je le démontre.

Plus globalement c'est meme pas "avec ou sans mysql" c'est "avec ou sans bdd en ligne".
 
WRInaute passionné
Ah mais tu peux tout gérer avec des fichiers txt. Mais comme tu le dis si le site venait à grossir ta solution risque de vite trouver ses limites (comme les forums sans BDD, basé sur des txt).
Vu que le temps de dev est comparable, pourquoi ne pas prendre une solution plus pérenne du coup?
 
WRInaute accro
Parce que je suis une grosse faignasse ... si si j 'assume. :wink: Je me range dans la catégorie "bosseur faignants" :mrgreen: et avec les grosses chaleurs qui arrivent ici, ca va pas s'arranger ...

Et si ca grossit il sera alors temps de remonter un paquet de txt dans un table et personne s'en rendra compte.
 
WRInaute accro
en fait, si les requêtes sont simplissimes et qu'il n'y a pas besoin d'accès concurrents, il n'y a aucune différence entre des données dans une BDD mises en cache et des données directement mises sur des fichiers plats. D'autant plus, qu'éventuellement, tu peux les mettre sous forme xml pour effectuer des requêtes plus simplement.
Après, utiliser ou non un framework...
un framework, c'est qui peut le plus peut le moins : on charge moults fonctions qu'on n'utilisera pas, mais qui vont induire de possibles failles dans le développement, des problèmes de compatibilité.
 
WRInaute accro
Je suis effectivement dans ce cas de zero accès concurrents possibles :

- lorsque les users saisissent une info (que ce soit un message, une inscription, un commentaire), c'est stocké dans un doc unique de type Mess_pseudo_timestamp.txt donc fichier a usage unique.
- Lorsque je valide cette saisie (un commentaire par exemple) je le fais par un clic sur un lien dans le mail que je reçois qui contient le nom de ce doc en param de l'url et un petit bout de code va choper ce fichier, lire les données et les consolider dans un fichier existant cette fois. Mais par definition je suis le seul a faire un clic a un instant t donc pas de risque de collision. Le mouvement est alors inscrit dans un fichier journal de bord et la non pas de collision possible. Ensuite le fichier Mess_pseudo_timestamp.txt est supprimé et on attend le suivant.

Et tout est bati ainsi. donc peinard coté accès concurrents ...

Coté volumétrie, on parle pour le moment de nombre à 2 ou 3 chiffres ... bref que dalle et rien qui justifie une bdd.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut