[RESOLU] Problème de consultation d'une table

Petit nouveau ! | 6 Messages

30 janv. 2013, 00:38

Bonjour,

J'ai un problème de consultation d'une table dans ma base de données.

Voici tout d'abord ma table :
lien :
  • id (la clé primaire de la table. Un entier en auto-increment)
  • url (l'adresse internet que pointera le lien)
  • nom (le nom qui sera affiché comme lien)
  • id_categorie (pointe une entrée d'une table lien_categorie qui permettra de trier les liens à l'affichage)
Dans ma page, ma requête est écrite comme ceci :

<?php
$tous_les_liens=$bdd->prepare('SELECT * FROM lien');
while($liens=$tous_les_liens->fetch()){
echo "mouchard";
	//categorie
	$la_categorie=$bdd->prepare('SELECT nom FROM lien_categorie WHERE id = :id');
	$la_categorie->execute(array('id' => $liens['id_categorie'] ));
	
	echo $la_categorie['nom']." : ";
	$la_categorie->closeCursor();
	//Nom
	echo $liens['nom']."  ";
    <?php
	
}
//On ferme la requête
$tous_les_liens->closeCursor();
?>
Cependant, on n'entre pas dans le boucle.
J'ai placé un "echo 'mouchard';" au début de la boucle et il ne s'affiche pas.
Il y a des entrées dans mes tables et, jusqu'à nouvel ordre, la syntaxe semble respectée.

Un indice? (merci d'avance)

Eléphant du PHP | 267 Messages

30 janv. 2013, 00:48

salut,

il faut rajouter :
$tous_les_liens->execute();
<?php
$tous_les_liens=$bdd->prepare('SELECT * FROM lien');
$tous_les_liens->execute();
while($liens=$tous_les_liens->fetch()){
echo "mouchard";
        //categorie
        $la_categorie=$bdd->prepare('SELECT nom FROM lien_categorie WHERE id = :id');
        $la_categorie->execute(array('id' => $liens['id_categorie'] ));
       
        echo $la_categorie['nom']." : ";
        $la_categorie->closeCursor();
        //Nom
        echo $liens['nom']."  ";
    <?php
       
}
//On ferme la requête
$tous_les_liens->closeCursor();
?>
@+
dix2

Petit nouveau ! | 6 Messages

30 janv. 2013, 00:57

Le problème est effectivement règlé.
Merci beaucoup dix2.

Mammouth du PHP | 571 Messages

30 janv. 2013, 01:05

t'as pas besoin de 2 requêtes car les 2 tables sont liées et c'est vraiment coûteux en terme surcharge du serveur bd.Tu peux faire une seule requête avec jointure sur les 2 tables.