2012-09-05 14 views
5

Ho una tabellacreare albero attraverso la funzione ricorsiva

id,name,parent_id,designation colonne,

voglio creare albero attraverso funzione ricorsiva in php.

ogni parent_id sta cercando nella colonna id e se l'utente effettua il login, l'utente può vedere i propri e tutti i registri successivi in ​​base a parent_id.

come

A | B | c | D | E | F

se un utente effettua il login allora può tutti (A, B, C, D, E, F) dettagli. E se il login B allora vede (B, c, D, E, F) e come tutti. .. se F login allora può vedere solo i propri record .. Grazie per l'anticipo

+0

C'è una corrispondenza uno a uno tra 'id' e' parent_id', in tal caso, si ottiene solo un collegamento di 'ids', non sarà un albero. – mtk

+0

sì, la mia tabella è mappata una ad una tra id e parent_id – user1625518

risposta

1

creare una funzione fetch_parent;

function fetch_parent($parent_id) { 
    $query = 'SELECT * FROM `my_table` WHERE `parent_id`='. $parent_id; 
    // use your own sql class/function whatever to retrieve the record and store it in variable $parent 
    if($parent->parent_id !== null) { // asuming a 'root' record will have null as it's parent id 
     fetch_parent($parent->parent_id); // here you go with your recursion 
    } 
    return; 
} 

Poi basta chiamare la funzione con il record che si desidera che i propri genitori da:

$first_parent_id = 8; 
fetch_parent($first_parent_id); 

Note:

  • il $ genitore var può anche essere un array, a seconda del mysql set di risultati
  • PER FAVORE, PER FAVORE, controllare $ parent_id nella query per mysql injection, ecc.
Problemi correlati