Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1948 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  connection base de donnee

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

connection base de donnee

n°1634658
amaranthae
Posté le 31-10-2007 à 14:14:53  profilanswer
 

Bonjour,
j'ai un script php de connexion a une base de donnees, integre dans une page html.
voila le script:
 

Code :
  1. <?php
  2. $conn = mysql_connect('SYSTEM', 'ID', 'PW') or die(mysql_error());
  3. $sql = 'SELECT TRUC FROM BIDULE WHERE MUCHE';
  4. $dataset = mysql_query($sql) or die($req.mysql_error());
  5. $piece = mysql_fetch_array($dataset);
  6. print_r($piece);
  7. <ul>
  8. <li>Pièce : <?php echo $piece['ENBONT']; ?></li>
  9. </ul>
  10. mysql_close($conn);
  11. ?>


 
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:
 

Code :
  1. <ul>
  2. <li>Pièce : <?php echo $piece['ENBONT']; ?></li>
  3. </ul>


 
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
mood
Publicité
Posté le 31-10-2007 à 14:14:53  profilanswer
 

n°1634675
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 31-10-2007 à 14:34:20  profilanswer
 

oui.
entre <?php et ?> il ne doit pas y avoir d'HTML, ou alors, c'est du echo HTML ...
 

Code :
  1. <?php
  2.     $conn = mysql_connect('SYSTEM', 'ID', 'PW') or die(mysql_error());
  3.     $sql = 'SELECT TRUC FROM BIDULE WHERE MUCHE';
  4.     $dataset = mysql_query($sql) or die($req.mysql_error());
  5.     $piece = mysql_fetch_array($dataset);
  6.     print_r($piece);
  7. ?>
  8.   <ul>
  9.       <li>Pièce : <?php echo $piece['ENBONT']; ?></li>
  10.   </ul>
  11. <?php
  12.     mysql_close($conn);
  13. ?>



---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1634678
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 31-10-2007 à 14:35:37  profilanswer
 

ou sinon :

Code :
  1. <?php
  2.     $conn = mysql_connect('SYSTEM', 'ID', 'PW') or die(mysql_error());
  3.     $sql = 'SELECT TRUC FROM BIDULE WHERE MUCHE';
  4.     $dataset = mysql_query($sql) or die($req.mysql_error());
  5.     $piece = mysql_fetch_array($dataset);
  6.     print_r($piece);
  7.     echo '<ul>';
  8.     echo '  <li>Pièce : '.$piece['ENBONT'].'</li>';
  9.     echo '</ul>';
  10.     mysql_close($conn);
  11. ?>


 
 
EDIT :
En => connection / language
Fr => connexion / langage


Message édité par NewsletTux le 31-10-2007 à 14:37:02

---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1634679
Plexi86
Tu peux le fiare, Just do it!
Posté le 31-10-2007 à 14:38:56  profilanswer
 

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 :)

Message cité 1 fois
Message édité par Plexi86 le 31-10-2007 à 14:40:16
n°1634696
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-10-2007 à 14:54:34  profilanswer
 

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!!
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 :)


Port'nawak [:dawak]
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 :o


Message cité 1 fois
Message édité par anapajari le 31-10-2007 à 14:55:06
n°1634704
amaranthae
Posté le 31-10-2007 à 15:03:49  profilanswer
 

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 ^^'

n°1634708
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-10-2007 à 15:10:53  profilanswer
 

c'est normal que ça marche pas, le code remis en forme contient quelques bétises :o

Code :
  1. $dataset = mysql_query($sql) or die($req.mysql_error());


$req existe pas ( tout du moins dans le code que tu montre) et c'est pas plutot $sql que tu voulais utiliser?

Code :
  1. $sql = 'SELECT TRUC FROM BIDULE WHERE MUCHE';
  2. ...
  3. $piece = mysql_fetch_array($dataset);
  4. ...
  5. echo '  <li>Pièce : '.$piece['ENBONT'].'</li>';


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.


Message édité par anapajari le 31-10-2007 à 15:20:23
n°1634777
amaranthae
Posté le 31-10-2007 à 15:58:51  profilanswer
 

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?


Message édité par amaranthae le 31-10-2007 à 16:03:34
n°1634963
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 31-10-2007 à 22:37:17  profilanswer
 

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 ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1635000
Plexi86
Tu peux le fiare, Just do it!
Posté le 01-11-2007 à 05:59:44  profilanswer
 

anapajari a écrit :


Port'nawak [:dawak]
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 :o




 
J'ai fait ton benchmark avec un test sur 10000 itérations...
1ère version (temps d'exécution moyen: 687ms):

Code :
  1. <ul>
  2. <?php for ($i=0; $i<10001; $i++)    
  3.     { ?>
  4.     <li>nombre <?php echo $i;?></li>
  5. </ul>
  6. <?php
  7.     }
  8. ?>
  9. <span style="background-color:red">Temps d'éxécution : <?php echo $tps; ?>ms</span>


 
VS 2e version (temps d'exécution moyen: 82ms):

Code :
  1. <?php
  2. echo '<ul>';
  3. for ($i=0; $i<10001; $i++)
  4. {
  5.     echo '<li>nombre ' . $i . '</li>';
  6. }
  7. echo '</ul>';
  8. echo '<span style="background-color:blue">Temps d\'éxécution : ' . $tps . 'ms</span>';
  9. ?>


 
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!

Message cité 1 fois
Message édité par Plexi86 le 01-11-2007 à 06:01:58
mood
Publicité
Posté le 01-11-2007 à 05:59:44  profilanswer
 

n°1635056
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 01-11-2007 à 12:42:41  profilanswer
 

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.


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1635219
antika
Posté le 01-11-2007 à 20:34:38  profilanswer
 

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.

n°1635532
amaranthae
Posté le 02-11-2007 à 14:15:37  profilanswer
 

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 :
  1. <html>
  2. <head> ... </head>
  3. <body>
  4. ...
  5. <?php ... ?>
  6. ...
  7. </body>
  8. </html>


 
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...


Message édité par amaranthae le 02-11-2007 à 14:16:29
n°1635728
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 02-11-2007 à 19:49:41  profilanswer
 

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é ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1636651
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-11-2007 à 09:22:33  profilanswer
 

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 :
  1. <html>
  2. <body>
  3.  ... plein de trucs ...
  4.  <br/>
  5.  Temps d'éxécution :<?php echo microtime()-microtime() ?>ms</span>
  6. </html>


résultat: 3.30000000001E-05ms
A ta façon:

Code :
  1. <?php
  2. $a = microtime();
  3. echo '<html>';
  4. echo ' <body>';
  5. echo '  ... plein de trucs ...';
  6. echo '  <br/>';
  7. echo '  Temps d\'éxécution : '.($a-microtime).'ms</span>';
  8. echo '</html>';
  9. ?>


résultat: 0.370207ms
Ton code est 10.000 fois plus lent  [:klem3i1]

 
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 [:spamafote]

Message cité 1 fois
Message édité par anapajari le 05-11-2007 à 09:22:52
n°1636663
sircam
I Like Trains
Posté le 05-11-2007 à 09:58:48  profilanswer
 

Spoiler :

C'est déjà vendredi? [:cupra]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1637295
Plexi86
Tu peux le fiare, Just do it!
Posté le 06-11-2007 à 05:45:28  profilanswer
 

anapajari a écrit :


Un, c'est pas 'mon' benchmark.
Deux, celui que tu as fait est complètement inutile.


 
Je veux bien, puisque tu le dis! Mais au moins explique moi pourquoi, parce qu'avec le contre-exemple je ne comprend pas?! :pfff:
 

n°1637318
sircam
I Like Trains
Posté le 06-11-2007 à 08:44:57  profilanswer
 

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? :D
 
Hé... Tout ceci ne nous mène à rien. :pfff:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  connection base de donnee

 

Sujets relatifs
[SQLserver 2005] Copier la structure complete d'une baseLost connection to MySQL server during query
[VBA-Outlook 2k3] Pb de connection a une base de donnée SQL ServerConnection à base de donnée via fichier DSN
Probleme de connection base de donnée connection a une base de donnée Acess Par VBS
[C#]Changer la connection a la base de donnée du crystal reportconnection à une base de donnée
pb avec [ Multimania et php ] connection base de donnée .....[php/Mysql] connection base de donnée
Plus de sujets relatifs à : connection base de donnee


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR