While imbriqués
beru002
Messages postés
497
Date d'inscription
Statut
Membre
Dernière intervention
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train de m'énerver sur un truc qui pourtant ne paraît pas bien compliqué, à la base... mais l'habit ne fait pas le moine!
Voilà, j'ai une table "livres". Dans cette table, tous les champs du livre: titre, auteur, etc...
Sur une page de mon site, j'aimerais les ranger par "theme"... avec le titre du thème, bien sûr!
Avec SELECT DISTINCT theme, pas de souci, j'ai mes titres... mais ensuite, sous chaque titre "thème1", thème2", etc... j'aimerais avoir la liste des livres qui ont ce thème... et c'est là que je bloque. à priori, il ne suffirait que de refaire un while, avec
$theme=$donnees['theme']
SELECT * FROM livres WHERE theme=$theme
mais ça buggue... il ne veut pas de fetch là-dessus. peut-être y a-t-il une manière particulière d'embriquer les while? je n'ai trouvé de solution un peu nulle part, donc je viens poser ma question ici.
voici, plus précisément, mon code:
Je suis en train de m'énerver sur un truc qui pourtant ne paraît pas bien compliqué, à la base... mais l'habit ne fait pas le moine!
Voilà, j'ai une table "livres". Dans cette table, tous les champs du livre: titre, auteur, etc...
Sur une page de mon site, j'aimerais les ranger par "theme"... avec le titre du thème, bien sûr!
Avec SELECT DISTINCT theme, pas de souci, j'ai mes titres... mais ensuite, sous chaque titre "thème1", thème2", etc... j'aimerais avoir la liste des livres qui ont ce thème... et c'est là que je bloque. à priori, il ne suffirait que de refaire un while, avec
$theme=$donnees['theme']
SELECT * FROM livres WHERE theme=$theme
mais ça buggue... il ne veut pas de fetch là-dessus. peut-être y a-t-il une manière particulière d'embriquer les while? je n'ai trouvé de solution un peu nulle part, donc je viens poser ma question ici.
voici, plus précisément, mon code:
<?php $reponse=$bdd->query('SELECT DISTINCT theme FROM livres ORDER BY theme'); while ($donnees=$reponse->fetch()) { ?> <h1 id="ancre_<?php echo stripslashes($donnees['theme']); ?>"><?php echo stripslashes($donnees['theme']); ?></h1><br /><br /> <!--ceci affiche les titres des parties avec des ancres--> <?php $theme=$donnees['theme']; $requete=$bdd->query('SELECT * FROM livres WHERE theme=$theme'); while ($donnees2=$requete->fetch()) { echo $donnees2['titre']. '<br />'; } $requete->closeCursor(); } $reponse->closeCursor(); ?>
A voir également:
- The i/o cache encountered an error while updating data in medium "ahci-0-0" (rc=verr_disk_full). make sure there is enough free space on the disk and that the disk is working properly. operation can be resumed afterwards.
- What is my movie français - Télécharger - Divers TV & Vidéo
- Hp usb disk storage format tool - Télécharger - Stockage
- Disk boot failure insert system disk and press enter - Guide
- Crystal disk info - Télécharger - Informations & Diagnostic
- App data - Guide
1 réponse
Bonjour,
Deux problèmes dans cette ligne :
$requete=$bdd->query('SELECT * FROM livres WHERE theme=$theme');
1) les simples quotes ' autour de la requête empêchent PHP d'interpréter la variable $theme. Il faut plutôt utiliser "
2) Dans la requête SQL, une chaîne de caractères doit être délimitée par des simples quotes '
Du coup, cette ligne devient :
$requete=$bdd->query("SELECT * FROM livres WHERE theme='$theme'");
Xavier
PS : il y avait d'autres possibilité, notamment en ne faisant qu'une seule boucle... mais bon ^^
Deux problèmes dans cette ligne :
$requete=$bdd->query('SELECT * FROM livres WHERE theme=$theme');
1) les simples quotes ' autour de la requête empêchent PHP d'interpréter la variable $theme. Il faut plutôt utiliser "
2) Dans la requête SQL, une chaîne de caractères doit être délimitée par des simples quotes '
Du coup, cette ligne devient :
$requete=$bdd->query("SELECT * FROM livres WHERE theme='$theme'");
Xavier
PS : il y avait d'autres possibilité, notamment en ne faisant qu'une seule boucle... mais bon ^^