IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème pour récupérer toutes les lignes contenue dans un select [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut problème pour récupérer toutes les lignes contenue dans un select
    Bonjour, j'ai un problème pour récupérer toutes les lignes contenue dans mon
    select, normalement j'en ai 3 et je n'en récupère que 2.

    Le but final du code est de convertir le résultat de la requête vers un fichier xml, cela fonctionne sauf pour le problème précèdent.

    Voici mon code pour la récupération des données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    mysql_select_db($database_ConnexionMYSQL, $ConnexionMYSQL);
    $query_rstest = "SELECT `match`.MATCH_ID, `match`.MATCH_DATE, `match`.MATCH_TIME, `match`.MATCH_PLAY FROM `match`";
    $rstest = mysql_query($query_rstest, $ConnexionMYSQL) or die(mysql_error());
    $row_rstest = mysql_fetch_assoc($rstest);
    $totalRows_rstest = mysql_num_rows($rstest);
    ?>
    La pourtant $totalRows_rstest est bien égal a 3


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <body>
     
     <?php 
    		//echo $totalRows_rstest;
     
          $xml_output  = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
          while ($row = mysql_fetch_array($rstest)) 
    	{ 
    		$xml_output  .= "<MATCHS>\n";
    		$xml_output  .= "<MATCH_ID>" .$row["MATCH_ID"]."</MATCH_ID>\n";
    		$xml_output  .= "<MATCH_DATE>" .$row["MATCH_DATE"]."</MATCH_DATE>\n";
    		$xml_output  .= "<MATCH_TIME>" .$row["MATCH_TIME"]."</MATCH_TIME>\n";
     
     
    	}
    $xml_output  .= "</MATCHS>\n";
     ?>
      <?php  file_put_contents ('test.xml', $xml_output);?>
    </body>
    Merci pour le coup de main.
    A bientot

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row_rstest = mysql_fetch_assoc($rstest);
    C'est pas une bonne idée de mettre cette ligne de code ci-dessus, c'est elle qui te fait perdre une ligne (la 1ère à tous les coups).

    L'explication est simple, et c'est lié au curseur (ou pointeur) de MySQL.
    Du fait d'appeler la fonction mysql_fetch_assoc() une 1ère fois (sans boucle), cela renvoie un tableau associatif du résultat de la 1ère ligne, ça le stock dans la variable $row_rstest.
    Ensuite, ça place le curseur automatiquement à la ligne suivante.

    Ce qui fait que lorsqu'on lance la boucle while avec mysql_fetch_array(), et bien celle-ci débutera à partir de la 2ème ligne.

    Donc supprime cette ligne (mysql_fetch_assoc) et tout devrait rentrer dans l'ordre.


    Pour mieux comprendre le phénomène, met en commentaire (ou supprime provisoirement) toute la partie avec la boucle, et affiche ces 3 lignes de résultat manuellement en appelant successivement 3 fois la fonction mysql_fetch_assoc.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <pre>
    <?php
    // 1ère ligne de résultat
    $row_rstest = mysql_fetch_assoc($rstest);
    print_r($row_rstest);
     
    // 2ème ligne de résultat
    $row_rstest = mysql_fetch_assoc($rstest);
    print_r($row_rstest);
     
    // 3ème ligne de résultat
    $row_rstest = mysql_fetch_assoc($rstest);
    print_r($row_rstest);
    ?>
    </pre>
    Ceci revenant au même que de faire directement une boucle (while), c'est à dire automatiquement.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Mais oui !!! merci beaucoup et avec les explications en plus merci beaucoup l'ami

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour récupérer toutes les informations d'un XML
    Par neo62matrix dans le forum Général Python
    Réponses: 2
    Dernier message: 30/03/2012, 11h55
  2. Réponses: 6
    Dernier message: 23/03/2009, 16h40
  3. récupérer toutes les lignes (même nulles)
    Par aurelie83 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/02/2008, 10h01
  4. Récupérer toutes les actions faites dans Oracle ?
    Par M Roncheau dans le forum Oracle
    Réponses: 3
    Dernier message: 16/11/2007, 17h16
  5. Réponses: 14
    Dernier message: 13/07/2007, 13h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo