Voici ce que j'essaie de faire:
- J'ai besoin d'une fonction que lorsqu'elle est passée comme un argument, une carte d'identité (pour une catégorie de choses) fournira toutes les sous-catégories et les sous-sous-catégories et sous-sous-sous-sous-sous-substance.
- Je pensais utiliser une fonction récursive puisque je ne connais pas le nombre de sous-catégories leurs sous-catégories et ainsi de suite
Voici donc ce que j'ai essayé de faire jusqu'à présent si j'utilise le retour au lieu d'ECHO, je n'aurai pas le même résultat. J'ai besoin d'aide afin de le réparer ou de la réécrire de zéro p> p>
7 Réponses :
J'ai eu du mal à essayer de comprendre votre fonction. Je pense que cela fera ce que vous voulez. Il reçoit tous les enfants d'une catégorie avec ID $ ID, ainsi que leurs enfants (obtenant ainsi la sous-catégorie entière, l'effet sous la catégorie sous la catégorie que vous vouliez).
$var = array(
'categoryChild ID' => array(
'subcategoryChild ID' => array(
'subcategoryChild child 1' => array(),
'subcategoryChild child 2' => array()
)
),
'anotherCategoryChild ID' => array() # This child has no children of its own
);
Arbre de base de données au tableau multidimensionnel
<?php
function getTree($rootid)
{
$arr = array();
$result = mysql_query("select * from PLD_CATEGORY where PARENT_ID='$rootid'");
while ($row = mysql_fetch_array($result)) {
$arr[] = array(
"Title" => $row["Title"],
"Children" => getTree($row["id"])
);
}
return $arr;
}
?>
function categoryChild($id)
{
$s = "SELECT category_id,name FROM proads_categories WHERE parent_id =".$id;
$r = mysql_query($s);
$children = array();
if(mysql_num_rows($r) > 0)
{
#It has children, let's get them.
while($row = mysql_fetch_array($r))
{
#Add the child to the list of children, and get its subchildren
$children[$row['category_id']]['nam'] = $row['name'];
$arr = categoryChild($row['category_id']);
if(count($arr) > 0)
{
$children[$row['category_id']]['child'] = categoryChild($row['category_id']);
}
}
}
return $children;
}
It's perfect. If you need please try this
Comme cela a été élevé par @pawan Sharma, je pensais que je pouvais aussi donner une réponse.
Toutes les solutions données souffrent d'un problème commun - ils effectuent une requête SQL pour chaque enfant. Par exemple, s'il y a 100 enfants au 2ème niveau, 100 requêtes seront effectuées, alors qu'elle peut effectivement être effectuée dans Single forte> requête en utilisant échantillon dB: p> Voici ma solution: p> où parent_id in (
select id, parent_id, title from category where parent_id = 4
select id, parent_id, title from category where parent_id in (7,8)
select id, parent_id, title from category where parent_id in (9)
Pourquoi diable feriez-vous que lorsque vous avez utilisé ces titres comme des titres IP, vous pouvez simplement utiliser un indiqué avec comme et obtenir le résultat.
function breadCrumb($id)
{
$ar = array();
$result = mysql_query("SELECT * FROM groups WHERE ParentID = '$id'");
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_object($result))
{
$ar[] = $row->DBGroupID;
$r = mysql_query("SELECT * FROM groups WHERE ParentID = '".$row->GroupID."'");
if(mysql_num_rows($r) > 0)
$ar = array_merge($ar, breadCrumb($row->GroupID, 1));
}
}
return $ar;
}
Utilisation de la fonction PRESTHOP:
public function getRecursiveChildren() {
$subCategories = $this->recurseLiteCategTree();
//print_r($subCategories);
$my_tab = array();
foreach ($subCategories['children'] as $subc) {
$my_tab[] = $subc['id'];
foreach ($subc['children'] as $subc2) {
$my_tab[] = $subc2['id'];
foreach ($subc2['children'] as $subc3) {
$my_tab[] = $subc3['id'];
foreach ($subc3['children'] as $subc4) {
$my_tab[] = $subc4['id'];
}
}
}
}
$my_tab [] = $this->id;
return $my_tab;
}
<?php
require('db/dbconnect.php');
$user_id='triD-100';
$sql="select * from ajent_joining where sponser_id='".$user_id."'";
$qR=mysql_query($sql);
while($rowD=mysql_fetch_assoc($qR)){
echo $childId=$rowD["user_id"];
echo "<br/>";
categoryChild($childId);
}
function categoryChild($childId) {
$s = "select user_id from ajent_joining where sponser_id='".$childId."'";
$r = mysql_query($s);
if(mysql_num_rows($r) > 0) {
while($row = mysql_fetch_array($r)) {
echo $childId=$row["user_id"];
echo "<br/>";
categoryChild($childId);
}
}
}
?>