Problème d'affichage

Suivre ce topic
Ce topic est suivi par : Personne...
Keitaoxmo

Keitaoxmo Le 16 septembre 2016 à 20:53 (Édité le 25 janvier 2019 à 17:52)

Bonjour svp j'ai besoin d'un coup de main. J'ai fais une requetes qui me permet de recupéré la liste des éléments dans ma table catégorie. Et je veux afficher ces elements 2 fois sur la meme page. pour la premiere fois les éléments s'affichent sans problemes mais il refuse de l'afficher pour la deuxieme fois.voici un extrait du code.<?php    $reqcategorie = $bdd->query('SELECT * FROM categories ORDER BY nomcat');?>             <div class="col-sm-2">                              <div class="form-group">                                                <select class="form-control>                                   <option selected="selected >Catégorie</option>                                       <?php// while($donne = $reqcategorie->fetch()) {?>                                      <option value="<?php echo "fgg";//$donne['idcategories'] ;?>"><?php// echo $donne['nomcat']; ></option>                                   <?php //} ?>                                </select>                              </div>                           </div>                                                                                                  <div>                            <table class="table table-hover">                              <tr>                                <th>#</th>                                <th>Liste des catégorie</th>                              </tr>                              <?php while($e = $reqcategorie->fetch()) {                              ?>                              <tr>                                <td>1</td>                                <td><?php echo $e['nomcat']; ?></td>                                                              </tr><?php } ?>                                                      </table>                          </div>
TheOldNoob

TheOldNoob Le 17 septembre 2016 à 01:17 (Édité le 17 septembre 2016 à 01:20)

Salut l'ami,

Autant j'aime bien les puzzle, que la c'est pas possible....

Sinon, il te manque des fermeture de balise, des fermetures de quote ou double quote, des fermetures de chevrons, des fermetures de php.

Je pense que le problème viens d'un manque de relecture de ton code.
Keitaoxmo

Keitaoxmo Le 17 septembre 2016 à 04:02

D'accord je réexplique le problème:
Pour les besoins de mon projet, je souhaite recommencer les fetch() un peu plus loin dans ma page après avoir déjà parcouru les résultat d'une requête (faite avec la méthode query())...

Je m'explique :
J'ai écrit une requête pour récupérer des données dans ma base MySQL et j'ai effectué un affichage des résultats obtenus avec fetch().
Mais, un peu plus loin, dans la même page, je souhaite réitérer ces résultats afin de les traiter différemment.
En clair, voici ce que ça donnerait :
<?php
$bdd = new PDO('mysql:localhost;dbname=mabase', 'root', '');
$donnees = $bdd->query('SELECT * FROM maTable');
 
while($donnee = $donnees->fetch())
{
     // 1er traitement des résultats
}
 
while($donnee = $donnees->fetch())
{
     // 2ème traitement des résultats
}

Comme vous pouvez le voir, la deuxième boucle ne fonctionnera pas car j'ai déjà parcouru les résultats dans la première boucle.
Existe-t-il une méthode dans PDO qui permettrait de retourner au début des résultats pour que la 2ème boucle s'exécute correctement, sans avoir à refaire la requête de la ligne 3 ?

Merci d'avance pour votre réponse
kinginventeur

kinginventeur Le 17 septembre 2016 à 17:49

$TABASEDEDONNER->closeCursor();

Je crois que tu peux utiliser sa.

<?php$bdd = new PDO('mysql:localhost;dbname=mabase', 'root', '');$donnees = $bdd->query('SELECT * FROM maTable'); 
while($donnee = $donnees->fetch()){
     // 1er traitement des résultats}
 $donnee->closeCursor();
while($donnee = $donnees->fetch()){
     // 2ème traitement des résultats}

Balatharas

Balatharas Le 17 septembre 2016 à 18:08

Salut jeune Ananas,
pourquoi ne pas faire tout simplement:
<?php
$bdd = new PDO('mysql:localhost;dbname=mabase', 'root', '');
$donnees = $bdd->query('SELECT * FROM maTable');
$donnees2 = $bdd->query('SELECT * FROM maTable');

while($donnee = $donnees->fetch()) {
     // 1er traitement des résultats
} 
while($donnee2 = $donnees2->fetch()) {
     // 2ème traitement des résultats
}
Ça te ne coûte qu'une ligne 😗
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte