|
|
|
|
Posté par
yazerty, le dimanche 9 septembre 2007 à 22:18:02category_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
// 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>';
}
Warning: array_reverse() [function.array-reverse]: The argument should be an array
$aFinalData = array_reverse($pa_data) ;
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) ;
Configuration: Windows XP Firefox 2.0.0.6
bonjour,
je pense que comme ton systeme de categorie est a un niveau predifini fixe, tu devrais mettres un critere d'arret qui porte aussi sur le maximum de catégorie possibles dans ta pile d'appels récursifs. Ex ici ton systeme est a 5 niveaux -> il ne faut pas avoir 5 -> 3 -> 2 -> 5 -> 3 -> 2 -> 5 ... qui est une boucle à l'infini... Il y a aussi le cas d'avoir deux parent pour un meme noeud ou deux fils différents pour un meme parent. Est-ce que tu as un critere pour choisir un plutot que l'autre? |
Mmm je ne comprends pas pourquoi tu dis que c'est sur 5 niveaux dans mon exemple :-?
Une catégorie ne peut pas avoir deux parents différents. Une catégorie n'a qu'un seul et unique parent (c'est un petit système d'annuaire). Mais ceci peut-il réellement être la cause de l'erreur (à propos de l'enregistrement en tableau) que j'obtiens :-? |
Problème résolu :-) !! |
| 09/07 19h52 | Warning: rmdir(..): Directory not empty | PHP |
| 27/03 16h03 | [PHP] Méthodes de débogage | PHP |
| 24/05 06h49 | L'indexation linéaire et le reshape sous Matlab | MatLab |
| 29/10 12h46 | Trier un tableau sans utiliser la fonction sort | Perl |
| 11/01 11h08 | Décaler les éléments d'un tableau (Rotation) -Récursivité- | Pascal |
| 10/06 09h01 | Fonction afficher un tableau en php | 6 |
| 14/12 00h07 | Langage C / Fonction récursive | 18 |
| 26/05 19h10 | Que fait cette fonction recursive | 1 |
| 29/04 14h44 | Pointeur de fonction recursive | 0 |
![]() | MediaInfo - MediaInfo fournit la liste des codecs nécessaires ainsi que des informations techniques sur vos fichiers vidéo et audio. ... | Catégorie: Codecs Licence: Open Source |
![]() | FileZilla Client - FileZilla est un client FTP pour Windows offrant une interface intuitive avec les fonctionnalités suivantes : Support... | Catégorie: FTP Licence: Open Source |
![]() | Scribus - Scribus est un logiciel de PAO libre. Scribus est un équivalent libre aux logiciels tels que Microsoft Publisher,... | Catégorie: Présentation Licence: Freeware/gratuit |
![]() | FreeMind - FreeMind est un logiciel de Mind mapping entièrement libre, permettant de créer des cartes heuristiques permettant de... | Catégorie: Organisation Licence: Open Source |
![]() | U.S. Robotics Wireless Turbo | Catégorie: Point d'accès pour réseaux sans fil |