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

Requêtes MySQL Discussion :

[SGBD] Comportement de mysql_fetch_row


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 107
    Par défaut [SGBD] Comportement de mysql_fetch_row
    Salut a tous,

    Petite question: il y a-t-il un truc a savoir sur mysql_fetch_row ? Je ne peux l'utiliser qu'une seule fois sinon il faut que je refasse ma requete mysql avant chaque utilisation de mysql_fetch_row. Je m'explique :

    Le code suivant marche super :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $req_part=mysql_query("SELECT * FROM participant WHERE id_soc='1'");
     
    while($line=mysql_fetch_row($req_part)){
        printf($line[1]);
    }
    dans le code suivant la deuxième boucle while ne s'execute pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     $req_part=mysql_query("SELECT * FROM participant WHERE id_soc='1'");
     
     while($line=mysql_fetch_row($req_part)){
         printf($line[1]);
     }
     
     while($line=mysql_fetch_row($req_part)){
          printf($line[1]);
      }
    enfin dans ce troisieme code la seconde boucle s'execute mais pour cela il faut que je refasse ma requete, question pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      $req_part=mysql_query("SELECT * FROM participant WHERE id_soc='1'");
     
      while($line=mysql_fetch_row($req_part)){
          printf($line[1]);
      }
     
      $req_part=mysql_query("SELECT * FROM participant WHERE id_soc='1'");
      while($line=mysql_fetch_row($req_part)){
           printf($line[1]);
       }
    D'ou ma première question : est-ce-que mysql_fetch_row n'est utilisable qu'une seule fois sans refaire une requete et surtout pourquoi. Sinon quelle est la solution pour ne pas refaire systematiquement la requete.
    En fait on dirait qu'apres un premier while avec mysql_fetch_row $req_part ne contient plus rien... étrange ou normal ?

  2. #2
    Membre émérite Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Par défaut
    Entre les 2 fais un petit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_field_seek($req_part,0);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 5
    Par défaut
    c'est assez simple, c'est parce que ton mysql_fetch_row est dans un while (tant que)

    ton code dit:
    rechercher les résultats
    tant que reste une ligne
    l'afficher.
    tant que reste une ligne
    l'afficher.
    Dans le 2eme while rien n'est affiché parce que toutes les lignes ont déjà été affichées dans le 1ere. (fetch_row récup la ligne suivante à chaque fois). Donc si tu relances ta requête entre les deux, y'a de nouveau des lignes à afficher.

  4. #4
    Membre Expert
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Par défaut
    stunti t'a donne la bonne solution

  5. #5
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    Ceci dit ta question concerne seulement la compréhension du comportement de mysql_fetch_row?

    Car sinon je ne comprends pas pourquoi faire 2 boucles while pour afficher le même jeu de résultat.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 107
    Par défaut
    Merci pour les reponses, c'est trés clair et ça fonctionne.
    Désolé de ne pas avoir répondu plus tôt : d'habitude un mail de réponse me prévient justement en cas de réponse mais là rien... étrange...

  7. #7
    NoT
    NoT est déconnecté
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Par défaut
    Lut,

    mysql_fetch_array utilise tout simplement un curseur qu'il déplace dans ton jeu d'enregistrement $req_part

    à la fin de ta première boucle le curseur est situé sur le dernier enregistrement, et donc à chaque demande de mysql_fetch_array il considère qu'il n'y a pu d'enregistrement suivant ( puisque le curseur est sur le dernier ) il faut donc repositionner le curseur sur le premier, chose faite par le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_field_seek($req_part,0);

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

Discussions similaires

  1. Réponses: 87
    Dernier message: 06/07/2011, 15h33
  2. Réponses: 12
    Dernier message: 08/03/2006, 17h27
  3. [Choix] Quelles attentes par rapport aux SGBD ?
    Par thierry34 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 13/07/2002, 20h08
  4. Réponses: 2
    Dernier message: 30/05/2002, 08h54

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