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

Langage PHP Discussion :

mysql_fetch_assoc plusieurs fois dans un script


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 18
    Points
    18
    Par défaut mysql_fetch_assoc plusieurs fois dans un script
    Bonjour,
    J'ai mon script suivant :
    Tout fonctionne bien jusqu'au niveau de mon premier mysql_fetsh_assoc. La région répétée de mon select s'affiche bien avec les bonnes valeurs. La ou je n'arrive plus à rien. C'est que lorsque je répète la même procédure pour la deuxième boucle, rien ne s'affiche. Le pointeur ne remonte pas (enfin c'est que j'en ai conclu). Du coup pour l'exemple j'ai mis une simple boucle. Donc j'ai bien mes $i qui s'incrémente mais du coup plus moyen de récupérer les valeurs du mysql_fetsh_assoc du haut (forcément plus dans la boucle), mais si je mets le même code : ne fonctionne pas
    Je suis un peu perdu et débutant. Je continue à chercher mais je désespère.

    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
    21
     
     
    <?php if ($totalRows_ListeOptions > 0) { // Show if recordset not empty ?>
    	<input type="hidden" name="on1" value="Option">
        <select name="os1">
        <option value="Sans Options">Sans options €<?php echo $row_ListEvent['ACOMPTE_EVENT']; ?></option>
            <?php do { ?>
              <option value="<?php echo $row_ListeOptions['NAME_OPTION_EVENT'];?>"><?php echo $row_ListeOptions['NAME_OPTION_EVENT']." €".number_format(($row_ListeOptions['PRIX_SUP_OPTION_EVENT']+$row_ListEvent['ACOMPTE_EVENT']), 2, '.', ' ');?></option>
              <?php } while ($row_ListeOptions = mysql_fetch_assoc($ListeOptions)); ?> // jusque la tout fonctionne bien j'ai bien mon select avec mes options et ma région répétée nickel la ou ca bloque c'est juste après
              </select>
              <input type="hidden" name="option_index" value="1">
              <?php do { ?>
              <input type="hidden" name="option_select<?php echo $i; ?>" value="<?php echo $row_ListeOptions['NAME_OPTION_EVENT'];?>">
              <input type="hidden" name="option_amount<?php echo $i; ?>" value="70.00">
              <?php $i++; } while ( $i < $totalRows_ListeOptions ); ?>
     
     
     
            <?php } else {// Show if recordset not empty sinon afficher le prix de base?>
             <input type="hidden" name="amount" value="<?php echo $row_ListEvent['ACOMPTE_EVENT']; ?>">
    		<?php } ?>
    Si quelqu'un pouvait me donner une piste ou une solution ca serait vraiment cool. Je vous remercie par avance.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Enregistres les résultats de ta requête dans un tableau. Ce sera plus pratique et tu pourras le lister autant de fois que tu veux.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup pour la réponse rapide.
    Je débute. Comment fais-tu pour stocker les résultats dans un tableau et les appeler dans la boucle ? via une méthode particulière ? Je ne vois pas comment faire si tu avais un exemple ou une doc. Merci encore

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $data = array();
    while($row = mysql_fetch_assoc($query)) {
       $data[] = $row;
    }
    Ensuite, tu parcours ainsi autant de fois que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($data as $row) {
       ...
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Re
    Merci beaucoup pour la réponse rapide :
    J'ai essayé le code suivant :
    et lorsque je fais un print_r($data) : Je n'ai qu'une seule ligne sur les 3 résultats qui devraient apparaitre. Je dois mal faire quelque chose.

    2e chose : Je ne sais pas comment faire apparaitre le numéro de ligne de résultat équivalent à $i rien ne s'affiche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    print_r($data)
    Array
    (
        [0] => Array
            (
                [ID_OPTION_EVENT] => 2
                [ID_EVENT] => 27
                [ORDRE_AFFICH] => 2
                [NAME_OPTION_EVENT] => Location Snow
                [PRIX_SUP_OPTION_EVENT] => 200.00
            )
     
    )
    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
     
        <option value="Sans Options">Sans options €<?php echo $row_ListEvent['ACOMPTE_EVENT']; ?></option>
     
            <?php foreach($data as $row) { ?>
              <option value="<?php echo $row['NAME_OPTION_EVENT'];?>"><?php echo $row['NAME_OPTION_EVENT']." €".number_format(($row['PRIX_SUP_OPTION_EVENT']+$row_ListEvent['ACOMPTE_EVENT']), 2, '.', ' ');?></option>
              <?php }; ?>
              </select>
              <input type="hidden" name="option_index" value="1">
              <?php foreach($data as $row) { ?>
              <input type="hidden" name="option_select<?php echo $i; ?>" value="<?php echo $row['NAME_OPTION_EVENT'];?>">
              <input type="hidden" name="option_amount<?php echo $i; ?>" value="<?php echo number_format(($row['PRIX_SUP_OPTION_EVENT']+$row_ListEvent['ACOMPTE_EVENT']), 2, '.', ' ');?>">
              <?php  }; ?>
     
            <?php } else {// Show if recordset not empty sinon afficher le prix de base?>
             <input type="hidden" name="amount" value="<?php echo $row_ListEvent['ACOMPTE_EVENT']; ?>">
    		<?php } ?>

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Pour afficher ta ligne il suffit de déclarer $i=1 avant ton foreach et ensuite d'incrémenter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $i=1;
    foreach($data as $row) 
    { 
    //...
    echo $i;
    //...
    $i++;
    } 
    ?>
    Pour ta question numéro 1, quand tu fais exécuter ta requête dans une fenêtre sql de phpMyAdmin (pour contrôle) tu as bien 3 lignes de résultats ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Re
    Merci pour le retour. Je m'arrache les cheveux sur un truc qui a l'air simple...
    j'ai essayé simplement le code debug suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $i=1;
    foreach($data as $row) 
    { 
    //...
    echo "test".$i;
    //...
    $i++;
    } 
    ?>
    J'ai simplement test1 qui apparait.

    et mon print_r($data) ne retourne qu'une seule ligne alors qu'il devrait en retourner 3. J'ai l'impression qu'il ne stocke que la dernière ligne de résultat.

    est ce que ce code la vous parait bon ou bien approprié ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    			// on stocke dans un tableau les résultats pour les appeler par la suite dans les boucles
    				$data = array();
     
    				while($row = mysql_fetch_assoc($ListeOptions)) {
    				   $data[] = $row;
    				}
    Je vous remercie vraiment. Je continue à chercher

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    C'est bon j'ai trouvé d'ou ca venait.
    Je faisais déjà dans ma requête mysql un premier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    mysql_query("SET NAMES 'utf8'");
    $query_ListeOptions = sprintf("SELECT * FROM  OPTION_EVENT WHERE  ID_EVENT = %s ORDER BY ORDRE_AFFICH ASC", GetSQLValueString($colname_ListEvent, "int"));
    $ListeOptions = mysql_query($query_ListeOptions, $MDB) or die(mysql_error());
    //$row_ListeOptions = mysql_fetch_assoc($ListeOptions);
    $totalRows_ListeOptions = mysql_num_rows($ListeOptions);
    Je vous remercie encore pour toutes vos réponses. Je vais pouvoir aller me coucher. Bonne nuit à tous

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par energie13 Voir le message
    Je faisais déjà dans ma requête mysql un premier

    $row_ListeOptions = mysql_fetch_assoc($ListeOptions);

    Je vous remercie encore pour toutes vos réponses. Je vais pouvoir aller me coucher. Bonne nuit à tous
    Une erreur classique qu'on fait tous au moins une fois à ses débuts Te voilà "vacciné"

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

Discussions similaires

  1. utilisation de script js plusieurs fois dans une même page
    Par tribalnanasss dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/07/2010, 00h34
  2. repeter plusieurs fois le meme script dans une page
    Par juju03 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 02/07/2008, 11h22
  3. [GD] Redimension d'image - plusieurs erreurs dans mon script
    Par Henry9 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/02/2007, 10h58
  4. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 16h18
  5. Réponses: 2
    Dernier message: 14/06/2006, 08h53

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