Mysql
 sql >> Database >  >> RDS >> Mysql

mysql + php recupera i figli foglia con il percorso

Soluzione molto semplice per stampare l'id e il percorso a tutti gli ultimi nodi figlio usando PHP poiché non sono a conoscenza di un modo per farlo all'interno di MySQL. Spero che questo aiuti!

function getChildren($parent= "", $x = 0) {
   $sql = "SELECT id, name FROM recurr WHERE parentId = $x";
   $rs = mysql_query($sql);
   //echo "Name: $parent has ". mysql_num_rows($rs)." children<br/>";
   while ($obj = mysql_fetch_object($rs)) {
      if (hasChildren($obj->id)) {
         getChildren($parent."/".$obj->name, $obj->id);
      } else {
         echo $obj->id .", ".$parent."/".$obj->name."<br/>";
      }
   }
}

function hasChildren($x) {
   $sql = "SELECT * FROM recurr WHERE parentId = $x";
   $rs = mysql_query($sql);
   if (mysql_num_rows($rs) > 0) {
      return true;
   } else {
      return false;
   }
}

Per eseguire basta chiamare:

getChildren();