Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

problema cu result array in functie recursiva
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Subiectul anterior :: Subiectul următor  
Autor Mesaj
radumm



Data înscrierii: 13/Apr/2005
Mesaje: 6

Trimis: Mar Iun 03, 2008 3:15 pm    Titlul subiectului: problema cu result array in functie recursiva  

am o problema mare cu codul de mai jos si de 2 ore incerc sa imi dau seama unde gresesc dar nu pricep.

ideea e ca in interiorul functiei imi afiseaza corect array-ul

cand incerc sa il afisez dupa ce a fost functia executata nu imi arata nimic.

puteti sa ma ajutati si sa imi spuneti de ce nu imi intoarce funcia rezultatul?



tabelul are 3 coloane folosite in aceasta functie:
id - auto_increment - numarul unic al fiecarei inregistrari
idf - legatura intre copil si parinte - daca este 0 este meniu principal
nivel - la ce distanta de meniul principal se afla inregistrarea


functia merge corect (inainte de return afisez arrayul care este corect)

nu pricep de ce nu imi intoarce rezultatul

sunt disperat :wallbash:

Cod:


function parinte($id,$nivel=array()) {
   // avem id-ul meniului ales
      
   $query=" Select * from meniu where id=".$id;
   $result = mysql_query($query);
   $row=mysql_fetch_assoc($result);
   
   $nivel[$row['nivel']]=$row['id'];

   if($row['idf']==0) { 
      print_r($nivel);
      return $nivel;
   }else{
      parinte($row['idf'],$nivel);
   }
}



echo"<pre>";
print_r(parinte(29));
echo"</pre>";





va multumesc
Sus  
gabysolomon



Data înscrierii: 09/Apr/2006
Mesaje: 743
Locație: Bacau

Trimis: Mar Iun 03, 2008 5:11 pm    Titlul subiectului:  

else {
return parinte(.....);
Sus  
212



Data înscrierii: 12/Mai/2008
Mesaje: 13

Trimis: Mar Iun 03, 2008 5:12 pm    Titlul subiectului:  

Cod:
........................................
if($row['idf']==0) {
      print_r($nivel);
      return $nivel;
........................................


scoate print_r($nivel); din functie .... 8O





212
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3012
Locație: țopăi pe tasta DELETE

Trimis: Mar Iun 03, 2008 5:13 pm    Titlul subiectului:  

in primul rand afiseaza-ti erorile [error_reporting(E_ALL)]

apoi, cum apelezi functia?

edit //
gaby, acolo e recursivitatea, deci aia nu e o greseala
212, ala e doar un debug... nu are importanta

radumm, functia returneaza un array [dupa cate imi dau eu seama]

$ar = parinte('id', 'nivel');
print_r($ar);
Sus  
gabysolomon



Data înscrierii: 09/Apr/2006
Mesaje: 743
Locație: Bacau

Trimis: Mar Iun 03, 2008 5:25 pm    Titlul subiectului:  

@octavian

imi pare rau ca tb sa te contrazic .. .dar daca rezultatul trebuie retunat ... atunci trebuie acel return.

si e ok daca pune si asa print_r(parinte(29)); nu are importanta asupra rezultatului.

daca ma insel .. atunci mia culpa ... am cenusa pregatita
Sus  
radumm



Data înscrierii: 13/Apr/2005
Mesaje: 6

Trimis: Mar Iun 03, 2008 5:25 pm    Titlul subiectului:  

multumesc gabysolomon

asta era gresala - dar nici ca ma prindeam

multumesc tare mult
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3012
Locație: țopăi pe tasta DELETE

Trimis: Mar Iun 03, 2008 5:28 pm    Titlul subiectului:  

ok, my bad... nu am testat
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community