C'est des queues de cerises.. Echo ca fait plutot basic pas beau... print est plus classe et en phase avec le reste des fonction php. :)Citation:
Envoyé par Linie
Version imprimable
C'est des queues de cerises.. Echo ca fait plutot basic pas beau... print est plus classe et en phase avec le reste des fonction php. :)Citation:
Envoyé par Linie
Moi aussi j'ai eu ma période "cout tout pourri" et "printf trop prise de tête"
Au final chacun a ses charmes.
Merci pour les lien. Mais j'ai un handicap de taille pour faire dde l'info je deteste l'anglais et j'y comprend pas grand chose.Citation:
Envoyé par Swoög
Mais c'est interessant alors je vais prendre mon courage a deux mains.
fr au début des liens, ça veut dire quoi à ton avis? c'est la page en français qui est appelée, bien sur.
ben à chaque tour de boucle la fonction sizeof(); est appelée et elle est relancée à chaque fois, donc on recalcule le sizeof du tablo $arr... alors que si ça devient une valeur fixe à chaque fois le tour de boucle est plus rapide.Citation:
Envoyé par iubito
on compare une valeur fixe à une autre valeur fixe plutot que comparer une valeur fixe à une valeur sas cesse recalculée.
j'espère que c assez clair. :roll:
Je tiens à dire merci pour ce bench, car il m'a bcp servi et bcp appris.Citation:
Envoyé par iubito
Alors merci d'avoir pris le temps de le faire et de le partager avec les co-internautes.
bonjour
Je ne sais pas si c'est la meilleur façon de faire ce que je veux faire (à savoir afficher en dessous mon formulaire des données en fonction des réponses de mon formulaire.
J'ai écrit ça pour le formulaire (dans un page html:
et ça pour la page php qui fait le tris:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <body> <table border=0 width="100%"> <tr><td> <A Href="JavaScript:top.close();"><IMG SRC="../../Global/Img/fermer.gif" Border=0 width="100" height="24"></A></center> </td> </tr> </table> <Hr> <p><ul><li> <center> <H2 align="left"><font size="6" face="Geneva, Arial, Helvetica, san-serif"> <font size="6">Menu :</font></H2> </center> <ol><ul> <li><A href="info.php"><font size=3>Vers page d'information pour tous <font></A> <br> <li> <form action="fo.php" method="post"> Nom : <input type="text" name="username"><br> Prénom: <input type="text" name="prenom"><br> <input type="submit" name="submit" value="Ce qui me concerne"> </form> </center> </body>
Désolé pour la longueur du message.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 <body> <div> <?php include('menu.htm'); ?> </div> <div> <?php $fichier=fopen("../../Export/EXP.csv", "r"); //$largeurcol=(10,200,10,40,40,40,40,70,70); $orig="<table border=1 width=1300 bordercolor=#CCCAFF cellpadding=6 cellspacing=1>"; $orig .= "<tr bgcolor=#CCCAFF valign=center><td width=80><FONT size=2><b>Demande N°</b></font></td><td width=400><FONT size=2><b>Description de la demande</b></font></td><td width=50><FONT size=2><b>Car</b></font></td><td width=80><FONT size=2><b>Nom CI</b></font></td><td width=80><FONT size=2><b>Prénom CI</b></font></td><td width=60><FONT size=2><b>Phase</b></font></td><td width=65><FONT size=2><b>Statut</b></font></td><td width=80><FONT size=2><b>Date de création</b></font></td><td width=80><FONT size=2><b>Date butée</b></font></td><td width=60><FONT size=2><b>Prénom bénéficiaire</b></font></td><td width=60><FONT size=2><b>Nom bénéficiaire</b></font></td></tr>"; while (!feof($fichier)) //on parcourt toutes les lignes { $ligne = fgets($fichier, 300); // lecture du contenu de la ligne $tabli =explode(";",$ligne); $tempo = $tabli[10]; for($i=10;$i>2;$i--) { $tabli[$i]=$tabli[$i-1]; } $tabli[2] = $tempo ; $_POST['username']; $_REQUEST['username']; import_request_variables('p', 'p_'); $_POST['prenom']; $_REQUEST['prenom']; import_request_variables('p', 'p_'); $p_username = strtoupper($p_username); $p_prenom = strtoupper($p_prenom); if($tabli[3]=="$p_username" && $tabli[4]=="$p_prenom") { $orig .= "<tr><td>"; $regroup = implode("</td><td>", $tabli); $orig .= $regroup; $orig .= "</td></tr>"; } elseif($p_username== "PER" && $p_prenom == "AL") { $orig .= "<tr><td>"; $regroup = implode("</td><td>", $tabli); $orig .= $regroup; $orig .= "</td></tr>"; } } $orig .= "</table>"; fclose($fichier); if($p_username!=null) { $b = html_entity_decode($orig); echo $b; } ?> </div> </body>
Est ce que ce code vous parraît satisfaisant?
Peut on faire autrement que de passer par le $orig et de concaténer mes chaines de caractère?
Merci Pierre
P.S. si ce code peut servir à quelqu'un servez vous ;)
j'ai pas bien compris ton truc, mais si tu veux concaténer du bazar pour l'écrire plus loin, utilise une variable comme t'a fait, sinon tu peux écrire directement aussi echo "....."
bon pour la lisibilité de ton code, vire tout de suite les <font>, <b> et autres trucs de ce genre, et passe aux styles CSS, tu verras, ça sera + facile à maintenir ton code, et le code sera + léger et + lisible.
Je demande de tout afficher à la fin car il sagit de tableaux en code html
et je ne crois pas que ça marchera si j'utilise echo.
Merci pour le conseil des CSS (cependant je n'y connais vraiment rien)
mais je n'ai jamais manipulé de CSS est-ce facile à mettre en place?
Merci Pierer
CSS est extrêment smple à mettre en place : la Doc CSS au Format HTML Zippé ou au Format PDF
est ce que le language peut poser des problèmes de compatibilité avec des vieux browsers ou des browsers peu communs (mozilla, epiphany, ...)?
est-ce que les pages seront plus longues à charger?
merci
Bien sur que si echo fonctionnera, echo envoit du texte, si ce texte est du html valide alors ton navigateur en fera quelque chose. Ceci dit il existe des librairies pour générer une table html directement, ce qui te fait un code plus lisible.
Les CSS rendent les pages bcp plus legeres, donc rapides, mais en effet de tres vieux navigateurs ne les interpretent pas tres bien ou pas du tout. Enfin franchement les navigateurs étant gratuits, qui traine encore un ie4 ou un ns4?
Je conseille de développer via Mozilla (ou galeon, thunderbird) qui respecte les standards, puis de vérifier dans IE si c ok.
Selon toi cedric le code suivant devrait fonctionner:
j'ai un doute mais je vais essayer demain.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 <? echo "<table>"; echo "</tr>"; for($i=0;i<5;i++) { echo "<td>"; echo $i; echo "</td>"; } echo "</tr>"; echo "<table>"; ?>
Bon je sent que CSS est intéressant je vais me renseigner merci pour le site.
Plutot Firebird (enfin firefox maintenant) parce que Thunderbird c'est un client mailCitation:
Envoyé par cedricgirard
Oui ca devrait marcher mais remplace les echo "bidule" par des echo 'bidule', ca sera d'autant plus rapide. Et puis à la fin tu as écrit <table> au lieu de la balise fermante </table>Citation:
Envoyé par lunart
et y'a un </tr> au début, ça devrait être un <tr>... mais le principe est là.
Ets'abrège très bien en :Code:
1
2
3 echo "<td>"; echo $i; echo "</td>";
il vaut mieux faire une concaténation plutôt que plusieurs echo.Code:echo '<td>' . $i . '</td>';
merci pour les conseils
désolé d'avoir fait ça à la vavite.
Pierre
Très intéressant ce post !
Avec le bench en aide,cela pourrait faire l'objet d'un tuto.
Sinon je me posais la question à partir de quand est-il interessant de faire des mysql_free_result().Je me osuviens avoir essayé sur un script après une grosse requete avec bcp de resultats mais en ajoutant d'autres mysql_free_result(),ca n'a rien changé.
Sinon j'ai une autre astuce( il ne me semble pas l'avoir vu ):
Plutot que dans une boucle afficher a chaque boucle le texte,préférez l'enregistrer dans une variable pour l'afficher après:
Au lieu de :
Préferez :Code:
1
2
3
4 for($i = 0;$i < 4;$i++){ echo '<select value="'.$i.'">'.$i.'</select>'; }
Pour éviter des for(),on peut faire aussi à la mode du C:Code:
1
2
3
4
5 for($i = 0,$string = '';$i < 4;$i++){ $string .= '<select value="'.$i.'">'.$i.'</select>'; } echo $string;
Et pour les fichiers textes,il vaut mieux lire le fichier ligne par ligne je crois et s'arrêter une fois que l'info cherchée est trouvée plutot que de lire le fichier en entier puis de chercher après.Code:
1
2 while($i-- >0){}
De manière générale ,evitez de recreer des fonctions qui existent déjà:
Pas de fread(par exemple) puis de explode(),mais plutot fgetcsv().
J'ai lu qque part aussi que mysql_fetch_object() etait perceptiblement + long que mysql_fetch_array() ou autre.
En tt cas c'est un super post ,j'ai appris plein de trucs :lol:
MErci à tous
Bonjour à tous et à toutes, ce topic est vraiment interressant, on y apprends pas pas mal de choses !
J'aimerai savoir pour ma part si le fait d'utiliser beaucoup d'objets dans ses projets ralentissait considérablement le script ou bien c'est négligeable ?
Je me pose la question si vous pouvez y répondre même si elle peut paraitre un peu bête.
D'avance je vous remercie. :D
C'est une question interessante et je crois que cela peut ralentir,mais après je sais pas :oops: .
Moi j'en avais une autre:vaut-il mieux utiliser des fonctions mysql ou php ?
MD5 ou md5 ?
Mysql ! Faut faire des requetes qui te génère les resultats pret à etre affiché ... Utilise par exemple les fonctions de formatage de date de ta BD plutot que celui de php...Citation:
Moi j'en avais une autre:vaut-il mieux utiliser des fonctions mysql ou php ?
Mais j'ai aussi une question qui se raproche de celle de despe974 !!
Je suis sur un projet actuellement que je dev en php (c'est un vrai soft à lui tout seul) et j'aurais bien structurer le projet comme je l'aurais fait en java par exemple (Tout objet casiment) mais j'ai eu peur de devoir faire des includes de pages contenant 1000000000 de lignes avec toutes mes classes qui au final ne seraient pas toute utilisées dans chaque page.
Alors est ce que le fait de faire des includes de "porc" va entrainer une grosse charge et un ralentissement ?
Ma solution : utiliser des include_once uniquement pour les libs utiles dans toutes les libs qui en dépendent. Comme ça les modules ne sont chargés qu'en cas de besoin.
PEAR::Cache_lite fait pareil, il ne charge le coeur de pear qu'en cas de besoin (en cas d'erreur en fait)
Le include_once ne se charge qu'en cas de besoin ? :D
C'est ce qu'il me faut mais j'ai pourtant pas vu ca dans la doc ...
http://fr2.php.net/manual/fr/function.include-once.php
Non, j'ai mal expliqué : tu ne mets des include_once que dans les fichiers qui ont besoins d'autres fichiers, au lieu d'inclure tout ce qui peut être utile au début.
Genre classefille.php inclue classemere.php qui inclue commun.php
et classefille2.php inclue classemere2.php qui inclue commun.php
Dans une page qui n'utilise que classefille.php, les fichiers inutiles fille2 et mere2 ne seront pas chargés (gain de temps).
Mais si une page appele fille et fille2, commun.php sera inclu deux fois, d'où l'obligation d'utiliser le include_once, qui ne le reincluera pas.
salut,
J'ai appris pleins de choses à la lecture de ce topic !!! Grand merci à ceuzes qui y contribuent :D
Du coup, j'ai une question... qu'est-ce qui est plus rapide - et la différence est-elle sensible ?
3 variables différentes :
ouCode:
1
2
3 $var1=1; $var2=2; $var3=3;
1 variables tableau :
:?Code:
1
2
3 $var[1]=1; $var[2]=2; $var[3]=3;
Qu'est ce qui te pousse à nous faire aveuglement confiance, alors que tu peux facilement tester? :twisted: :lol:
euh... ben comment :oops: ???
Classiquement
- note l'heure
- execute 1000 fois le script
- calcule heure-heure notée
Par exemple
Tu as ainsi le nombre (non entier) de secondes entre le début et la fin.Code:
1
2
3
4
5
6
7
8
9 function getmicrotime() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $time = getmicrotime(); for($ct=0; $ct<1000; $ct++) mafunctionatester(); echo getmicrotime()-$time;
Tu fais ça pour les deux versions (pour un script très simple, passe à 10000) et tu compare. Retente plusieurs fois, évite d'encoder un divx en même temps, histoire que le multitache ne brouille pas tout.
vlavlavla
Cédric
J'ignorai l'existence de cette fonction ( :oops: ).
Je croyais que les benchs de ce topic étaient faits par des logiciels spéciaux (quoique, en y reflechissant bien, avec le bench en ligne de iubito, j'aurai du me douter qu'il y avait du php derrière tout ça)
En tout cas, voilà une fonction qui va m'enlever bien des doutes !!!!
J'essaye demain et vous dis pour les $var et $var[] !
Merci :D
alors je viens de tester, mais comme c'est la première fois que je fais se genre de chose, j'aimerai savoir si j'ai procédé correctement :
J'ai repris le script ci-dessus et j'ai fais :
resultat sur plusieurs essaies : entre 0.29 et 0.33Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php function getmicrotime() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $time = getmicrotime(); for($ct=0; $ct<100000; $ct++) { $var0=5; $var1=5; $var2=5; $var3=5; $var4=5; } echo getmicrotime()-$time; ?>
puis
resultat sur plusieurs essaies : entre 0.34 et 0.36Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <?php function getmicrotime() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $time = getmicrotime(); for($ct=0; $ct<100000; $ct++) { $var[0]=5; $var[1]=5; $var[2]=5; $var[3]=5; $var[4]=5; } echo getmicrotime()-$time; ?>
SI j'ai tout compris, le résultat c'est que c'est plus rapide de stocker des valeurs dans des variables que dans des tableaux. J'ai juste, ou je suis complétement à coté de la plaque ???
Tout bon! :D
Toutefois, si un tableau te permet de gérer plus simplement les données, je pense qu'il ne faut pas hésiter à l'utiliser. Les gros gains se font sur les algorithmes plus que sur les astuces.
En plus pour un logiciel serveur (comme un site web) il faut prendre en compte l'utilisation mémoire, mais je n'y ai pas encore touché et je te laisse ça en exercice ;-)
Bonne nuit
un tableau va prendre légèrement plus de mémoire, mais si tu as besoin d'un tableau, utilise un tableau.
Maintenant si tu veux juste 3 variables temporaires $tmp1, $tmp2, $tmp3 n'utilise pas un tableau.
Par contre si tu veux une liste que tu peux trier, rechercher... bein c'est les tableaux qui s'imposent ;)
Merci pour vos lumières !
Salut,
à votre avis il vaut mieux faire :
ou bienCode:if(isset($tab[$indice])) ...
:?:Code:if(array_key_exists($indice, $tab)) ...
J'en sais rien...
Mais j'ai une question : comment on est censé présenter le code (que faite vous, vous ?) ?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <? function maFonction() { instructions } ou function maFonction() { instructions } ou function maFonction() { instructions } ou autre chose ? pareil pour les if, switch, etc...
Salut !
à ce niveau, c'est de la présentation, chacun fait comme il veut, pour ma part, c'est la première ou seconde façon, mais si dans le cas d'un if par exemple, l'expression est trop complexe, il arrive aussi que je la décompose en plusieurs lignes...
Je ne pense pas que ça ais d'incidence notable au niveau des performances.
Ouais ça change rien por les performances (ce sont des "Caractères blancs", comme les sauts de ligne :D ), mais c'était pour savoir ce que vous trouvez "joli"... Moi c'est la 2 (je trouve la 1 "désaxée" :lol: ).
et moi la 3, mais bon les gouts et les couleurs...
moi c'est la 2. De toute façon aucune incidence.
ça, ça m'a toujours posé problème :? j'ai pris l'habitude d'indenté "à ma sauce", et j'avoue avoir du mal à en démordre...
ça donne :
C'est à dire un mélange de la (1) et la (3).Code:
1
2
3
4 <?php function maFonction() { instructions }