par
zazadec » 22 avr. 2009, 12:17
Tout d'abord. Merci pour les commentaires. Ca m'a permis de comprendre pas mal de choses.
J'ai corrigé qq erreurs de syntaxe, car chez moi, il n'y avait pas de return.
Mais le problème, c'est que la page malgré qu'elle soit envoyée à mon navigateur, pas de données ! ARF...
Petite chose, me suis aperçu que 'parent' était une fonction PHP, alors je l'ai transformée en 'parente'
Voici le code que j'ai (commenté)
$SQL = "SELECT * FROM service WHERE activate = '1'";
$REQ = @mysql_query($SQL, $mysqlCnx) or die('Pb de requête 1');
$Arbre = array();
while ($Res = mysql_fetch_array($REQ, MYSQL_ASSOC)) {
$parente = (!empty($Res['service_parent']) && ! is_null($Res['service_parent'])) ? $Res['service_parent'] : 1 ;
if(empty($Arbre[$parente])[b])[/b] $Arbre[$parente] = array(); // Manquait la parenthèse fermée
$Arbre[$parente][count($Arbre[$parente])] = $Res;
}
/* désormé, nous avons une table de la forme :
$Arbre[id_parent] = array( [enfant1], [enfant2], ...);
nous allons donc monter une fonction pour l'utilisation de nos éléments : */
function extra($arr, $Arbre){
print_r($arr);
if (isset($Arbre[$arr['service_id']])){
foreach($Arbre[$arr['service_id']] as $ar){
extra($ar, $Arbre);
}
}
}
// comme tu le constate la fonction s'appelle elle-meme si il existe des enfant portant son identifiant
// il ne nous reste plus qu'à lancer la fonction pour tous les parents dont l'identifiant est '0'
////// En fait mon premier id est 1, j'ai donc mis $arr[1]
if (isset($Arbre[$arr[1]])){
foreach($Arbre[$arr[1]] as $ar){
extra($ar, $Arbre);
}
}
As-tu une idée pourquoi j'ai rien en retour ?
Petite question annexe : Si je veux afficher d'autres colonne de ma table, je le code dans la fonction ? ou je refais une requete SQL que je met après le extra($ar, $Arbre); de la fin ?
Tout d'abord. Merci pour les commentaires. Ca m'a permis de comprendre pas mal de choses.
J'ai corrigé qq erreurs de syntaxe, car chez moi, il n'y avait pas de return.
Mais le problème, c'est que la page malgré qu'elle soit envoyée à mon navigateur, pas de données ! ARF...
Petite chose, me suis aperçu que 'parent' était une fonction PHP, alors je l'ai transformée en 'parente'
Voici le code que j'ai (commenté)
[php]
$SQL = "SELECT * FROM service WHERE activate = '1'";
$REQ = @mysql_query($SQL, $mysqlCnx) or die('Pb de requête 1');
$Arbre = array();
while ($Res = mysql_fetch_array($REQ, MYSQL_ASSOC)) {
$parente = (!empty($Res['service_parent']) && ! is_null($Res['service_parent'])) ? $Res['service_parent'] : 1 ;
if(empty($Arbre[$parente])[b])[/b] $Arbre[$parente] = array(); // Manquait la parenthèse fermée
$Arbre[$parente][count($Arbre[$parente])] = $Res;
}
/* désormé, nous avons une table de la forme :
$Arbre[id_parent] = array( [enfant1], [enfant2], ...);
nous allons donc monter une fonction pour l'utilisation de nos éléments : */
function extra($arr, $Arbre){
print_r($arr);
if (isset($Arbre[$arr['service_id']])){
foreach($Arbre[$arr['service_id']] as $ar){
extra($ar, $Arbre);
}
}
}
// comme tu le constate la fonction s'appelle elle-meme si il existe des enfant portant son identifiant
// il ne nous reste plus qu'à lancer la fonction pour tous les parents dont l'identifiant est '0'
////// En fait mon premier id est 1, j'ai donc mis $arr[1]
if (isset($Arbre[$arr[1]])){
foreach($Arbre[$arr[1]] as $ar){
extra($ar, $Arbre);
}
}[/php]
As-tu une idée pourquoi j'ai rien en retour ?
Petite question annexe : Si je veux afficher d'autres colonne de ma table, je le code dans la fonction ? ou je refais une requete SQL que je met après le extra($ar, $Arbre); de la fin ?