Bonjour,
Je réalise un script en php afin d'aller chercher dans ma base de données les catégories mere de mon site, ensuite il va chercher les sous catégorie, puis les sous catégories de deuxième niveau.
Voici mon premier script qui fonctionne mais qui a deux inconvénient:
- je répète trois fois la même chose (grosso-modo)
- le script s'arrête au deuxième sous-niveau et s'il y en a 15, je dois écrire 15 fois la même chose.
Comme je l'ai dis si dessus mon code ce répète trois fois pour le niveau1, le niveau2 et le niveau3 et s'il y a plus de 3 niveau ce ne marchera plus ou du moins cela s'arrêtera au troisième niveau.
J'ai donc essayé de réalisé ce même script avec des variables variables, puisqu'il n'y a que les niveau qui change dans le code ci-dessus, mais je ne parviens pas à mes fin.
Voici le code qui ne marche pas. (ça tourne en boucle j'ai l'impression)
Quelqu'un peut-il m'aider à débugger mon script
Merci d'avance.
Modifié par yann123 (29 May 2008 - 18:14)
Je réalise un script en php afin d'aller chercher dans ma base de données les catégories mere de mon site, ensuite il va chercher les sous catégorie, puis les sous catégories de deuxième niveau.
Voici mon premier script qui fonctionne mais qui a deux inconvénient:
- je répète trois fois la même chose (grosso-modo)
- le script s'arrête au deuxième sous-niveau et s'il y en a 15, je dois écrire 15 fois la même chose.
// J'afiche toutes les catégories.
$req_cat_mere1 = mysql_query("SELECT * FROM categories_annuaire WHERE id_categorie_mere='0' order by nom_categorie") or die(mysql_error()); // Requête SQL
echo '<ul>';
while($categorie_mere1 = mysql_fetch_array($req_cat_mere1))
{
$id_categorie_mere1 = $categorie_mere1 ['id'];
echo '<li>' .$categorie_mere1 ['nom_categorie']. '</li>';
// J'afiche toutes les sous-catégories
$req_cat_mere2 = mysql_query("SELECT * FROM categories_annuaire WHERE id_categorie_mere='$id_categorie_mere1' order by nom_categorie") or die(mysql_error()); // Requête SQL
echo '<ul>';
while($categorie_mere2 = mysql_fetch_array($req_cat_mere2))
{
$id_categorie_mere2 = $categorie_mere2 ['id'];
echo '<li>' .$categorie_mere2 ['nom_categorie']. '</li>';
// J'afiche toutes les sous-catégories de niveau-2
$req_cat_mere3 = mysql_query("SELECT * FROM categories_annuaire WHERE id_categorie_mere='$id_categorie_mere2' order by nom_categorie") or die(mysql_error()); // Requête SQL
echo '<ul>';
while($categorie_mere3 = mysql_fetch_array($req_cat_mere3))
{
$id_categorie_mere3 = $categorie_mere3 ['id'];
echo '<li>' .$categorie_mere3 ['nom_categorie']. '</li>';
}
echo '</ul>';
}
echo '</ul>';
}
echo '</ul>';
?>
Comme je l'ai dis si dessus mon code ce répète trois fois pour le niveau1, le niveau2 et le niveau3 et s'il y a plus de 3 niveau ce ne marchera plus ou du moins cela s'arrêtera au troisième niveau.
J'ai donc essayé de réalisé ce même script avec des variables variables, puisqu'il n'y a que les niveau qui change dans le code ci-dessus, mais je ne parviens pas à mes fin.
Voici le code qui ne marche pas. (ça tourne en boucle j'ai l'impression)
$niveau = 0; // J'nitialise le niveau de la categorie
$id_categorie_mere = 0; //J'initialise ma variable id_categorie_mere
$nb_sous_categories != 1 // Pour lancer la premiere bouble.
while($nb_sous_categories != 0)
{
// J'afiche toutes les catégories.
$req_cat_mere{$niveau} = mysql_query("SELECT nom_categorie, id, id_categorie_mere FROM categories_annuaire WHERE id_categorie_mere='$id_categorie_mere' order by nom_categorie") or die(mysql_error()); // Requête SQL
// Je compte le nombre de resultat.
$compter = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM categories_annuaire WHERE id_categorie_mere = '$id_categorie_mere' ") or die(mysql_error());
$nb_sous_categories = array_pop(mysql_fetch_row($compter));
if ($nb_sous_categories != 0)
{
echo '<ul>';
while($categorie_mere{$niveau} = mysql_fetch_array($req_cat_mere{$niveau}))
{
$id_categorie_mere = $categorie_mere{$niveau} ['id'];
echo '<li>' .$categorie_mere{$niveau} ['nom_categorie']. '</li>';
}
$niveau = $niveau + 1;
}
}
$nb_ul = 0;
while($nb_ul != $niveau) // Je ferme autant de liste a puce que j'en ai ouvert
{
echo '</ul>';
}
Quelqu'un peut-il m'aider à débugger mon script
Merci d'avance.
Modifié par yann123 (29 May 2008 - 18:14)