Se connecter avec
S'enregistrer | Connectez-vous

[RESOLU] Probleme requete d'affichage php/mysql

Dernière réponse : dans Programmation

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.
Lassé par la pub ? Créez un compte
Expert Programmation

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

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 />
Expert Programmation

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

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.

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 :) 
Lassé par la pub ? Créez un compte
Tom's guide dans le monde