connection base de donnee - PHP - Programmation
Marsh Posté le 31-10-2007 à 14:34:20
oui.
entre <?php et ?> il ne doit pas y avoir d'HTML, ou alors, c'est du echo HTML ...
Code :
|
Marsh Posté le 31-10-2007 à 14:35:37
ou sinon :
Code :
|
EDIT :
En => connection / language
Fr => connexion / langage
Marsh Posté le 31-10-2007 à 14:38:56
Juste pour précision: il est préférable en développement, d'éviter d'ouvrir/ fermer pour si peu des balises php!!
Ici par exemple tu pourrais préférer l'utilisation de la fonction "echo", donc un seul couple de balisage php. L'air de rien en faisant attention à ça sur des dizaines de pages de plusieurs centaines de lignes, tu optimises un minimum ton code.
EDIT/ exactement le code précédent
Marsh Posté le 31-10-2007 à 14:54:34
amaranthae> n'importe laquelle des deux solutions de newslettux est parfaitement correcte.
Plexi86 a écrit : Juste pour précision: il est préférable en développement, d'éviter d'ouvrir/ fermer pour si peu des balises php!! |
Port'nawak
Par définition PHP est un langage de template qui est fait pour avoir des "bouts" de code parsemés un peu partout.
Et même si ce que tu dis est peut-être vrai ( encore que je demande un vrai benchmark pour ce genre d'affirmation sur de l'optimisation "alakon.com" ), il est complètement pourri en terme de lisibilité de faire un écho de 30 lignes d'html.
Spoiler : on est un mercredi qui ressemble à un vendredi, je peux me permettre de lancer un débat |
Marsh Posté le 31-10-2007 à 15:03:49
merci pour vos reponses.
la deuxieme solution, avec les echo, ne fonctionne pas chez moi (je me retrouve toujours a affiche le morceau de code, avec un echo devant en plus)
du coup, je vais prendre la premiere, meme si en general, je prefere optimiser mon code un max (programmation objet etc), mais la je debute en php, et c'est moins facile ^^'
par contre, meme si je n'ai plus l'affichage du code, je n'ai pas l'affichage du resultat que je voulais... je pense que 'ENBONT' ne doit pas etre la bonne cle... mais dans ce cas, comment voir le resultat du print_r($piece) pour verifier?
ps: merci pour la faute sur connection ^^ je la fait tout le temps, ayant plus l'habitude de lire des documents en anglais qu'en francais... idem pour langage ^^'
Marsh Posté le 31-10-2007 à 15:10:53
c'est normal que ça marche pas, le code remis en forme contient quelques bétises
Code : |
$req existe pas ( tout du moins dans le code que tu montre) et c'est pas plutot $sql que tu voulais utiliser?
Code :
|
tu fetch un array indexé, très bien, mais la clé de celui-ci va correspondre au nom du champs de ta requete, en l'occurence truc et pas enbont.
Et si pour la solution avec echo, tu as toujours des morceaux de code qui trainent, il est plus que vraisemblable que tu aies oublié un balise fermante php quelque part.
Marsh Posté le 31-10-2007 à 15:58:51
j'ai corrige les petites erreurs (du a un changement de nom, car j'avais renomme la requete un moment...)
le TRUC de la requete est Sum(ENBONT.MONTHT), je replace donc $piece['ENBONT'] par $piece['Sum(ENBONT.MONTHT)'] ?
sinon, j'ai remarque un autre truc bizarre, quand je modifie le bloc php, il ne me renvoie JAMAIS d'erreur (meme quand j'en ai introduit de maniere volontaire, pour verifier, car ca me semblait louche...)
je voudrait aussi savoir s'il est obligatoire d'utiliser un mysql_select_db($nom_base, $connection) lorsqu'il n'y a q'une seule base de donnees?
Marsh Posté le 31-10-2007 à 22:37:17
tu as fait "SELECT TRUC" donc j'ai pensé que le champ de formulaire était bon ...
Je te conseille alors de tester Select Sum(ENBONT.MONTHT) AS somme WHERE [...]
puis plus loin, $piece['somme'].
Concernant les multiples balises PHP, c'est vrai que j'ai tendance à en mettre une bonne fois pour toutes plutôt que de passer mon temps à ouvrir/fermer. Mais mes 2 solutions marchent.
Concernant l'affichage des erreurs, documente-toi sur "E_Warning" de php.
Enfin, même si ton serveur n'a qu'une seule base de données, il faut la sélectionner : mysql_connect est là pour établir une connexion au serveur, mais ce n'et pas parce que tu y établis une connexion que forcément tu vas travailler sur l'unique base de données ...
Marsh Posté le 01-11-2007 à 05:59:44
anapajari a écrit :
|
J'ai fait ton benchmark avec un test sur 10000 itérations...
1ère version (temps d'exécution moyen: 687ms):
Code :
|
VS 2e version (temps d'exécution moyen: 82ms):
Code : |
La deuxième version est 7 fois plus rapide que la première!! Donc je ne dis pas "Port'nawak ". Maintenant, je suppose qu'il ne fait pas 10000 items pour ses listes, mais disons 20 maxi (pour exemple), la différence est minime pour le temps d'exécution des deux versions de scripts: Négligeable?
Pour si peu, on peut certainement privilégier la lisibilité du code, mais je ne suis pas sûre que la version que je préfère soit peu claire, ou peu lisible!
Marsh Posté le 01-11-2007 à 12:42:41
Merci de cette précision ... Effectivement si une liste n'a pas 10 000 items, un serveur mutualisé peut avoir 100 clients qui ont chacun 100 items, et ça peut se ressentir à ce niveau là également.
Marsh Posté le 01-11-2007 à 20:34:38
Certes, c'est plus lent, mais il a néanmoins parfaitement raison : l'usage correct de PHP est plutôt comme langage de template, et la version d'anapajari est plus lisible pour un intégrateur HTML.
C'est la solution retenue par Symfony, au passage.
Marsh Posté le 02-11-2007 à 14:15:37
merci pour les precisions apportees
par contre, j'ai l'impression que le probleme sur les erreurs qui ne sont jamais affichees vient du fait que le bloc php de ma page html n'est pas pris en compte du tout par mon navigateur (IE6).
la structure de la page est la suivante:
Code :
|
et tout ce que je met en dehors du/des bloc php fonctionne parfaitement... alors que le bloc php ne donne jamais rien, meme quand je supprime un/des point virgule de fin d'instruction...
Marsh Posté le 02-11-2007 à 19:49:41
est-ce que le nom du fichier a bien l'extension.php, et est bien passé par la moulinette d'Apache ?
Qu'est-ce que cela donne dans le code source, le php est-il affiché ?
Marsh Posté le 05-11-2007 à 09:22:33
Plexi86 a écrit : J'ai fait ton benchmark avec un test sur 10000 itérations... |
Un, c'est pas 'mon' benchmark.
Deux, celui que tu as fait est complètement inutile.
Contre exemple, à ma façon:
Code :
|
résultat: 3.30000000001E-05ms
A ta façon:
Code : |
résultat: 0.370207ms
Ton code est 10.000 fois plus lent
Plexi86 a écrit : La deuxième version est 7 fois plus rapide que la première!! Donc je ne dis pas "Port'nawak ". Maintenant, je suppose qu'il ne fait pas 10000 items pour ses listes, mais disons 20 maxi (pour exemple), la différence est minime pour le temps d'exécution des deux versions de scripts: Négligeable? |
Ok, lol
Plexi86 a écrit : Pour si peu, on peut certainement privilégier la lisibilité du code, mais je ne suis pas sûre que la version que je préfère soit peu claire, ou peu lisible! |
A partir du moment ou tu choisis délibérement de ne pas séparer html et php, oui c'est illisible et pas claire
Marsh Posté le 05-11-2007 à 09:58:48
Spoiler : C'est déjà vendredi? |
Marsh Posté le 06-11-2007 à 05:45:28
anapajari a écrit : |
Je veux bien, puisque tu le dis! Mais au moins explique moi pourquoi, parce qu'avec le contre-exemple je ne comprend pas?!
Marsh Posté le 06-11-2007 à 08:44:57
Peut-être simplement ton benchmark n'a-t-il rien de réaliste? Peut-être parce qu'il s'agit d'une micro optimisation qui ne servira peut-être à rien?
Peut-être parce que tu as fait 10001 itérations plutôt que les 10000 annoncées?
Hé... Tout ceci ne nous mène à rien.
Marsh Posté le 31-10-2007 à 14:14:53
Bonjour,
j'ai un script php de connexion a une base de donnees, integre dans une page html.
voila le script:
sur ma page html, il me renvoie:
Pièce :
mysql_close($conn); ?>
au lieu de quelque chose comme ca:
Pièce : 3847563
je pense que ca merde au niveau de:
peut etre a cause de l'imbriquement php dans de l'html dans du php dans de l'html...
est ce que vous voyez une erreur quelque part?
Message édité par amaranthae le 31-10-2007 à 15:04:59