Bonjour,
J'ai un truc que je comprends pas.
J'essaye de faire un multi array qui s'imbrique.
J'espère que vous pourrez prendre le temps de lire mon code.
J'ai créé un array à $poolCategories dans lequel je veux avoir mes menus de premier niveau, puis dans l'élément child, je veux avour tout ceux du deuxième niveau.
Dans la première requete sql, j'ai tout mes menus de premier niveau qui s'ajoute comme si j'utilisais la fonction array_push.
Par contre, pour ma seconde requete, il n'enregistre que le dernier menu du deuxième niveau.
Je pourrais utiliser la fonction array_push, pour le deuxième niveau, mais j'aimerais bien comprendre pourquoi ca marche dans le premier cas (premier niveau), mais pas dans le second.
Merci pour vos lumières
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 // Extract available categories 1st level if(isset($this->settings['fppShow']['categories']) AND $this->settings['fppShow']['categories'] == "categories" ){ $queryCat1stLevel = "SELECT * FROM "._DB_PREFIX_."category c INNER JOIN "._DB_PREFIX_."category_lang l ON c.id_category = l.id_category WHERE c.active = 1 AND c.level_depth = 1 AND l.id_lang = ".$language." ORDER BY l.name ASC"; $resultCat1stLevel = Db::getInstance()->s($queryCat1stLevel); //print_r($resultCat1stLevel); echo $nbCat1 = sizeof($resultCat1stLevel); // Commence à 1 et pas 0 $poolCategories = array(); for($i=0;$i<$nbCat1;$i++){ foreach($resultCat1stLevel[$i] as $key => $val){ if($key == "id_category"){ $poolCategories[$i][$key] = $val; } if($key == "name"){ $poolCategories[$i][$key] = '<b>'.$val.'</b>'; } if($key == "level_depth"){ $poolCategories[$i][$key] = $val; } if($key == "id_parent"){ $poolCategories[$i][$key] = $val; } $queryCat2ndLevel = "SELECT * FROM "._DB_PREFIX_."category c INNER JOIN "._DB_PREFIX_."category_lang l ON c.id_category = l.id_category WHERE c.active = 1 AND c.level_depth = 2 AND c.id_parent = ".$poolCategories[$i]['id_category']." AND l.id_lang = ".$language." ORDER BY l.name ASC"; $resultCat2ndLevel = Db::getInstance()->s($queryCat2ndLevel); $nbCat2 = sizeof($resultCat2ndLevel); // Commence à 1 et pas 0 for($i2=0;$i2<$nbCat2;$i2++){ foreach($resultCat2ndLevel[$i2] as $key2 => $val2){ if($key2 == "id_category"){ echo $key2.'<br>'; $poolCategories[$i]['child'][$key2] = $val2; } if($key2 == "name"){ echo $key2.'<br>'; $poolCategories[$i]['child'][$key2] = '<em>'.$val2.'</em>'; } if($key2 == "level_depth"){ echo $key2.'<br>'; $poolCategories[$i]['child'][$key2] = $val2; } if($key2 == "id_parent"){ echo $key2.'<br>'; $poolCategories[$i]['child'][$key2] = $val2; } } } }
Partager