Se connecter / S'enregistrer
Votre question

[RESOLU] Probleme requete d'affichage php/mysql

Tags :
  • Signature
  • Programmation
Dernière réponse : dans Programmation
16 Mars 2007 05:29:01

Bonjour,
voici mon problème:

je souhaite afficher le contenu de la table signature.
en temps normal, c'est une requête de base que j'arrive à faire et à afficher dans une page tout simplement.
je précise bien sur que la table n'est pas vide et contiens
plusieurs enregistrements.

la page
  1. <?
  2. // Déclaration des paramètres de connexion
  3. $host = "******";
  4. $login = "******";
  5. $pass = "******";
  6. $base = "******";
  7. // Connexion au serveur
  8. mysql_connect($host, $login,$pass) or die("erreur de connexion au serveur");
  9. mysql_select_db($base) or die("erreur de connexion a la base de donnees");
  10. // Creation et envoi de la requete
  11. $query = "SELECT * FROM signature";
  12. $result = mysql_query($query)or die(mysql_error());
  13. // Recuperation des resultats
  14. if (!mysql_fetch_row($result)) {
  15. echo "Aucun enregitrement ne correspond\n";
  16.  
  17. }
  18.  
  19. else {
  20. echo "les resultats sont :<br />";
  21. while ($row = mysql_fetch_array($result)) {
  22. $id_r = $row[0];
  23. $type_r = $row[1];
  24. $nom_r = $row[2];
  25. $mail_r = $row[3];
  26. $theme_r = $row[4];
  27. $couleur_r = $row[5];
  28. $precisions_r = $row[6];
  29. $ip_r = $row[7];
  30. $statut_r = $row[8];
  31. echo " - " . $id_r . ", " . $type_r . ", " . $nom_r . ", " . $mail_r . ", " . $theme_r . ", " . $couleur_r . ", " . $precisions_r . ", " . $ip_r . ", " . $statut_r . ", ";
  32.  
  33. }
  34. }
  35. ?>


ce qui est affiché à l'ecran :
  1. les resultats sont :


structure de la table
  1. CREATE TABLE `signature` (
  2. `dem_id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
  3. `dem_type` VARCHAR( 11 ) NOT NULL ,
  4. `dem_nom` VARCHAR( 255 ) NOT NULL ,
  5. `dem_mail` VARCHAR( 70 ) ,
  6. `dem_theme` VARCHAR( 50 ) ,
  7. `dem_couleur` VARCHAR( 35 ) ,
  8. `dem_precisions` VARCHAR( 255 ) ,
  9. `dem_ip` VARCHAR( 20 ) ,
  10. `dem_status` INT( 1 ) NOT NULL ,
  11. PRIMARY KEY ( `dem_id` )
  12. ) TYPE = MYISAM ;


Merci d'avance a qui trouvera.

Autres pages sur : resolu probleme requete affichage php mysql

a c 145 L Programmation
16 Mars 2007 07:54:17

déjà, tu utilise mysql_fetch_array() qui te crée un tableau associatif, donc tu devrais plutôt avoir des lignes du genre: $id_r = $row['dem_id'];.
Sinon, remplace ton mysql_fetch_array() par un mysql_fetch_row().

Si aucune des deux solutions ne marche, fait un affichage de debug: print_r($row);
16 Mars 2007 09:19:03

j'ai essayé les deux solutions sans succès.

  1. echo "les resultats sont :<br />";
  2. $row = mysql_fetch_row($result);
  3. print_r($rows);
  4. while ($row = mysql_fetch_array($result)) {
  5. $id_r = $row['dem_id'];
  6. $type_r = $row['dem_type'];
  7. $nom_r = $row['dem_nom'];
  8. $mail_r = $row['dem_mail'];
  9. $theme_r = $row['dem_theme'];
  10. $couleur_r = $row['dem_couleur'];
  11. $precisions_r = $row['dem_precisions'];
  12. $ip_r = $row['dem_ip'];
  13. $statut_r = $row['dem_status'];
  14. echo " - " . $id_r . ", " . $type_r . ", " . $nom_r . ", " . $mail_r . ", " . $theme_r . ", " . $couleur_r . ", " . $precisions_r . ", " . $ip_r . ", " . $statut_r . ", ";


meme avec le print_r($row); ca m'affiche toujours la meme chose :

  1. les resultats sont :<br />
Contenus similaires
a c 145 L Programmation
16 Mars 2007 13:41:24

Citation :
  1. $row = mysql_fetch_row($result);
  2. print_r($rows);

Moi, ça ne m'étonne pas... figure toi qu'en PHP (comme dans la plupart des langages), $row n'est pas $rows.

Second point: vérifier la présence de mysql_fetch_row($result) est dangereux: tu risques de perdre une ligne.
Il vaut mieux utiliser:
if (@mysql_num_rows($result) > 0) {
...
16 Mars 2007 18:21:48

voila, maintenant, cela fonctionne, mais en partie.
voiciu donc le code sur la page :

  1. echo "les resultats sont :<br />";
  2. //$row = mysql_fetch_row($result);
  3. //print_r($row);
  4. while ($row = mysql_fetch_row($result)) {
  5. $id_r = $row[0];
  6. $type_r = $row[1];
  7. $nom_r = $row[2];
  8. $mail_r = $row[3];
  9. $theme_r = $row[4];
  10. $couleur_r = $row[5];
  11. $precisions_r = $row[6];
  12. $ip_r = $row[7];
  13. $statut_r = $row[8];
  14. echo " - " . $id_r . ", " . $type_r . ", " . $nom_r . ", " . $mail_r . ", " . $theme_r . ", " . $couleur_r . ", " . $precisions_r . ", " . $ip_r . ", " . $statut_r . ", ";
  15.  
  16. }


ce qui affiché a l'ecran

  1. les resultats sont :
  2. - 3, utilisateur, Hylien Link, lol@yahoo.com, , , , xx.xxx.xxx.xx, 0,


hors, le probleme, c'est que si j'execute la meme requete dans mysql, je n'obtiend pas le meme resultat.
j'obient ceci :

http://levingtdeux.free.fr/screen.jpg

hors, avec un SELECT * FROM signature; je devrait avoir 2 ligne sur ma page php.

merci.

edit :
j'ai trouvé la solution
En fait, c'etait le
  1. if (!mysql_fetch_row($result)) {
qui posait probleme car a cause de cette ligne, on parcourait deja un enregristement.
Voila pourquoi le premier ne s'affichait pas.
16 Mars 2007 19:20:27

c'était le second point de @crazycat :) 
16 Mars 2007 19:34:14

oui en fait j'ai d'abord appliqué son premier point, puis j'avais plus ou moins lu la suite en diagonale. hors, j'ai fait quelques test et j'en suis arrivé a la meme conclusion.
en tout cas, merci @ crazycat pou ton aide :) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS