Toon posts:

[php] return in functie

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
ik heb de onderstaande recursieve functie geschreven die in een tabel een item opzoekt.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function getParent( $start_id, $target ){
    global $db;
    
    //search recursively from startingpoint ($start_id) till the first target ($target) is found
    $query_contactinfo = "select contacthistorie_id, contacthistorie_parent from contacthistorie where contacthistorie_id = ". $start_id;   
    $db->selectQuery( $query_contactinfo );
    if( $db->numRows() == 1 ){
        $record = $db->result;
        if( $record [0]["contacthistorie_parent"] == $target ){
            //target gevonden, return het id
            return $record[0]["contacthistorie_id"];
        }else{
            //zoek nog maal, maar nu met het zojuist gevonden id
            getParent( $record[0]["contacthistorie_parent"], $target );
        }
    }else{
        return 0;
    }
}


de functie werkt, maar het returnen van de het gevonden id werkt niet?
wie wat waar doe ik fout? mag ik op die plek in de functie geen waarde returnen?

[ Voor 10% gewijzigd door Verwijderd op 15-10-2003 11:47 ]


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Voordat dat ik nu die lap code ga doorlezen, vraag ik eerst maar eens wat er fout gaat, wat is de return-waarde/foutmelding...

Edit: Je roept getParent recursief aan, maar wat doe je met de return-waarde? :)

[ Voor 25% gewijzigd door SWfreak op 15-10-2003 11:50 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
PHP:
1
2
3
4
        }else{ 
            //zoek nog maal, maar nu met het zojuist gevonden id 
            getParent( $record[0]["contacthistorie_parent"], $target ); 
        }
Hier gaat het fout. Bij de recursieve aanroep, returned je 'kind aanroep' wel z'n id, maar je doet er niets mee. Maak er maar eens van

PHP:
1
2
3
4
        }else{ 
            //zoek nog maal, maar nu met het zojuist gevonden id 
            return getParent( $record[0]["contacthistorie_parent"], $target ); 
        }

Beter nog zou het zijn, de returns even wat meer te kanaliseren tot 1 return statement, want zo is het een beetje een wirwar van exits van je functie :)

Verwijderd

return getParent op regel 14

offtopic:
hrm net te langzaam, nare zweedse toetsenborden ook...

[ Voor 60% gewijzigd door Verwijderd op 15-10-2003 11:51 ]


  • McFreak
  • Registratie: December 2000
  • Laatst online: 25-10 12:30

McFreak

McFraGG de gekste !!

zet er een debug functie in en je weet het:

$debug = true
if($debug)echo $waarde

McFraGG de gekste !!


Verwijderd

Topicstarter
sorry, geen foutmelding & geen return waarde
als ik een ongeldig $start_id meegeef returned hij wel 0, maar het gevonden record returned hij niet.
ik kan hem op het punt waar ik hem wil returnen wel echo'en...

Verwijderd

Topicstarter
oooh inderdaad Glimi, fladder & swfreak....
/me slaps himself on his head

thnx! :)
Pagina: 1