Bonjour à tous,
J'ai besoin d'aide pour un problème qui me fait tourner en rond depuis des heures...
J'aimerai créer dans un formulaire, une liste déroulante qui listerait des catégories et leurs sous-catégories respectives de manière "aérée" pour que ce soit bien lisible pour l'utilisateur, et voici le code que j'ai mis en place :
Si dans ma table "categories" j'ai par exemple 3 catégories configurées comme ci-dessous, le code fonctionne bien et ma liste déroulante n'a pas de problème :
catId....catParentId....catName
1................0................Test
2................1................Test2
3................2................Test3
Par contre dès que je rajoute une autre catégorie principale (donc avec catParentId = 0) comme ci-dessous, le code zappe la première catégorie principale (Test) et s'occupe uniquement de la dernière catégorie principale qui a été créée (Test4) :
catId....catParentId....catName
1................0................Test
2................1................Test2
3................2................Test3
4................0................Test4
5................4................Test5
Est-ce que vous pourriez me dire ce qui ne va pas et/ou d'où peut venir le problème ? Merci d'avance.
J'ai besoin d'aide pour un problème qui me fait tourner en rond depuis des heures...
J'aimerai créer dans un formulaire, une liste déroulante qui listerait des catégories et leurs sous-catégories respectives de manière "aérée" pour que ce soit bien lisible pour l'utilisateur, et voici le code que j'ai mis en place :
Code:
<?php
function untree($parent, $level)
{
$parentsql = mysql_query("SELECT * FROM `". PREFIX ."categories` WHERE `catParentId` = $parent ORDER BY `catName`");
$return = "";
if (!mysql_num_rows($parentsql))
{
return;
}
else
{
while($branch = mysql_fetch_assoc($parentsql))
{
$echo_this = "<option value='";
$echo_this.= $branch["catId"];
$echo_this.= "'>";
for ($x=1; $x<=$level; $x++)
$echo_this.= " ";
$echo_this.= $branch["catName"];
$echo_this.="</option>";
$return.=$echo_this;
$rename_level = $level;
$return.= untree($branch["catId"], ++$rename_level);
}
}
return $return;
}
function getCategories()
{
$catList = mysql_query("SELECT * FROM `". PREFIX ."categories` WHERE `catParentId` = 0 ORDER BY `catName`");
while ($row = mysql_fetch_array($catList))
{
$string = "<option value='";
$string.= $row["catId"];
$string.= "'>";
$string.= $row["catName"];
$string.= "</option>";
$string.= untree($row["catId"], 1);
}
return $string;
}
$catList = getCategories();
?>
<select name='catParent'><option value='0'>None</option><?php echo $catList ?></select>
Si dans ma table "categories" j'ai par exemple 3 catégories configurées comme ci-dessous, le code fonctionne bien et ma liste déroulante n'a pas de problème :
catId....catParentId....catName
1................0................Test
2................1................Test2
3................2................Test3
Par contre dès que je rajoute une autre catégorie principale (donc avec catParentId = 0) comme ci-dessous, le code zappe la première catégorie principale (Test) et s'occupe uniquement de la dernière catégorie principale qui a été créée (Test4) :
catId....catParentId....catName
1................0................Test
2................1................Test2
3................2................Test3
4................0................Test4
5................4................Test5
Est-ce que vous pourriez me dire ce qui ne va pas et/ou d'où peut venir le problème ? Merci d'avance.