Bonjour,
J'ai une table mysql avec ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 category_id - category - parent_num 1 - Catégorie 1 - 0 2 - Catégorie 2 - 5 3 - Catégorie 3 - 2 4 - Catégorie 4 - 3 5 - Catégorie 5 - 3 ...
Il s'agit d'un système de catégorie à plusieurs niveaux. Une catégorie peut en contenir une autre (ceci à l'infini). Si je suis dans la catégorie 5 le fil d'ariane peut ainsi donner :
Index > Catégorie 3 > Catégorie 5 >Catégorie 2
Je souhaite donc faire un fil d'ariane. J'ai abouti à cette fonction :
Mais cela me sort ce message d'erreur :
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 // Fil d'Ariane $category_id = $db_data['category_id']; echo $category_id; // affiche bien l'id de la catégorie en cours function getTopParent($pi_current, $pa_data) { // sql + query $sSql = "SELECT parent_num, category FROM categories WHERE category_id=$pi_current"; $req = mysql_query($sSql) or die(mysql_error()); if (mysql_num_rows($req)>0) { $aData = mysql_fetch_assoc($req); $pa_data = array($aData); getTopParent($aData['parent_num'], $pa_data); } } // Appel de la function getTopParent($category_id, $pa_data) ; // Reverse l'ordre des resultats pour avoir en premier le root $aFinalData = array_reverse($pa_data) ; // pour parcourir ce tableau, utilisons la boucle foreach foreach($individu as $cle=>$valeur) { echo $cle.' : '.$valeur.'<br>'; }
pour la ligne correspondant à :Warning: array_reverse() [function.array-reverse]: The argument should be an array
Le problème semble venir de (la mauvaise) insertion des données dans le tableau, car lorsque je fais seulement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $aFinalData = array_reverse($pa_data) ;
Cela m'affiche bien le nom de mes catégories, mais dans l'ordre inverse d'un fil d'ariane (à gauche il y a la catégorie la plus basse dans la hiérarchie et à droite la plus haute, alors que ça devrait bien sûr être l'inverse pour un fil d'ariane...). D'où l'idée de stocker les données dans un tableau pour ensuite inverser le tableau et afficher les données (si vous avez mieux je suis tout autant preneur
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 function getTopParent($pi_current, $pa_data) { // sql + query $sSql = "SELECT parent_num, category FROM categories WHERE category_id=$pi_current"; $req = mysql_query($sSql) or die(mysql_error()); if (mysql_num_rows($req)>0) { $aData = mysql_fetch_assoc($req); echo $aData['category']; getTopParent($aData['parent_num'], $pa_data); } } // Appel de la function getTopParent($category_id, $pa_data) ;).
J'ai cherché avec mon ami Google les cours présentant la mise en tableau de données, mais je n'ai pas réussi à comprendre où était l'erreur dans mon code :-/... Je suppose pourtant que la bêtise est évidente :- ?
Pourriez-vous m'aider s'il vous plait :- ?
Partager