Funktion gibt nichts zurück

queicherius

♥ PHP ♥
Ich verzweifle gerade an folgender Funktion:

PHP:
function get_how_many_parents($id, $zaehler=0){

    $abfrage = "SELECT * FROM `xcms_sites` WHERE `id` =".$id.";
    $ergebnis = mysql_query($abfrage);
    
    while($row = mysql_fetch_object($ergebnis))
    {
          if($row->child_of != 0){
              $zaehler += 1;
              get_how_many_parents($row->child_of, $zaehler);
              
          }else{
              return $zaehler;
          }
    }
 
}

Kann mir jemand sagen warum diese Funktion genau *nichts* zurückgibt
/* Ich rede hier von NULL und nicht 0 oder "" */
 
Zuletzt bearbeitet:
Betrachte mal die farbliche Hervorhebung deines Quelltextes. Fällt dir was auf? Richtig! Da sind Sachen rot gefärbt, die nicht rot gefärbt sein sollten. Und weißt du auch warum? Ich gebe dir einen Hinweis: hinter deiner MySQL Anfrage, genauer gesagt hinter `id` ist eine doppelte Klammer zu viel. Verwunderlich, dass dir kein Fehler angezeigt wird.
 
Betrachte mal die farbliche Hervorhebung deines Quelltextes. Fällt dir was auf? Richtig! Da sind Sachen rot gefärbt, die nicht rot gefärbt sein sollten. Und weißt du auch warum? Ich gebe dir einen Hinweis: hinter deiner MySQL Anfrage, genauer gesagt hinter `id` ist eine doppelte Klammer zu viel. Verwunderlich, dass dir kein Fehler angezeigt wird.


:D
Das lag daran, dass ich es bereits ein bisschen anders hab und dann hier noch schnell versucht hab das alte hinzubekommen...

PHP:
function get_how_many_parents($id, $zaehler=0){

    $abfrage = "SELECT * FROM `xcms_sites` WHERE `id` =".$id;
    $ergebnis = mysql_query($abfrage);
    
    while($row = mysql_fetch_object($ergebnis))
    {
          if($row->child_of != 0){
              $zaehler += 1;
              get_how_many_parents($row->child_of, $zaehler);
              
          }else{
              return $zaehler;
          }
    }
 
}  

$z = get_how_many_parents(4);
var_dump($z);
die();

Ergebnis: NULL
Eigentlich: 3
 
Du willst wissen wieviele Spalten in der Tabelle sind wo child_of != 0 ist?

Dann mach es doch so:
PHP:
function get_how_many_parents($id){

    $abfrage = "SELECT * FROM `xcms_sites` WHERE `id` =".$id." AND `child_of`!=0";
    $ergebnis = mysql_query($abfrage);
    return mysql_num_rows($ergebnis);
 
}
 
Nein ich hab folgende Tabellenstruktur:

Code:
------------------
| id  | child_of |
------------------
| 1   | 0        |
| 2   | 1        |
| 3   | 2        |
| 4   | 3        |
------------------

D.h. 4 ist ein Unterpunkt von 3 usw...
Und ich möchte wissen wie viele "Eltern" 4 hat.
 
Probier mal:

PHP:
function get_how_many_parents($id){ 

    $abfrage = "SELECT * FROM `xcms_sites` WHERE `id` =".$id; 
    $ergebnis = mysql_query($abfrage); 
     
    while($row = mysql_fetch_object($ergebnis)) 
    { 
          if($row->child_of != 0){ 

              return 1 + get_how_many_parents($row->child_of); 
               
          }
    } 
    return 0;
}   

$z = get_how_many_parents(4); 
var_dump($z); 
die();
 
Zurück