[ Thugzsr @ 26.07.2013. 13:39 ] @
Pozdrav ljudi, kao sto naslov kaze imam problem sa rekurzivnom funkcijom, tj njen ispis mi se ne svidja. Ispisuje kao redovan niz, od prvog do poslednjeg clana, a meni treba od poslednjeg do prvog. I onda sam ja hteo da upisem funkciju u niz, pa da iz niza iscitam od poslednjeg do prvog. Probao sam
Code:
array_push($niz, display_children($row['parent_id'], $level+1)) ; 
na ovaj nacin, ali tako dobijem beskonacni niz i errore...Zna li neko bolji nacin?
[ deZio @ 26.07.2013. 13:42 ] @
Jel bi ti pomoglo kad bi obrnuo niz uz pomoć f-je array_reverse ?
http://www.php.net/manual/en/function.array-reverse.php
[ plus_minus @ 26.07.2013. 13:42 ] @
... array_reverse() ... ?

[edit] > @deZio .. preteče me za par sekundi.. D:

Al' pazi kad php čoveče iz 2 do 3 cuga bukvalno sve može sa nizovima.. gde šta je sa leve strane.. pa onda kombinacija.. samo treba da se pročita i isproba.
[ Thugzsr @ 29.07.2013. 12:27 ] @
Problem je sto meni sada upisuje umesto 4 clana koja treba da upise u niz, upise 4 broja 1...evo funkcije
Code:
function display_children($category_id, $level) 
{
  global $database;
   
    $result = mysql_query("SELECT * FROM parents WHERE id_roditelja='$category_id'") or die(mysql_error());
    
   $broj = $database->num_rows($result);
    $niz = array();
  
    while ($row = mysql_fetch_array($result)) 
    {
       echo str_repeat('  ',$level) . $row['naziv'] . "-> ";
       $niz =  array_push($niz, display_children($row['parent_id'], $level+1)) ; 
       var_dump($niz);
    }
    
}

e sad meni upis u taj $niz ne radi, funckija funckionise savrseno, dobijem putanju kako treba, ali ja hocu da je upisem u niz i obrnem :) to cu verovatno uspeti sa array_reverse
ali kad dodjem do toga :)
var_dump($niz) daje ovako
Code:
int 1
int 1
int 1
int 1

i to mi je problem...
[ pajaja @ 29.07.2013. 18:57 ] @
array_push vraca integer a ne niz.
http://php.net/manual/en/function.array-push.php


[ Thugzsr @ 31.07.2013. 11:28 ] @
Na koji nacin onda da upisem? Moze li neko pomoci?
[ pajaja @ 09.08.2013. 16:44 ] @
Ti sa
Code (php):

$niz =  array_push($niz, display_children($row['parent_id'], $level+1)) ;
 

nizu dodeljujes novi broj elemenata u tom nizu, tako da on nije vise array vec obican broj.
Probaj da umesto toga stavis samo:
Code (php):

array_push($niz, display_children($row['parent_id'], $level+1)) ;
 


[Ovu poruku je menjao pajaja dana 10.08.2013. u 14:03 GMT+1]
[ Thugzsr @ 27.08.2013. 09:52 ] @
Kada uradim tako, var_dump $niza je
Code:
array
  0 => null
array
  0 => null
array
  0 => null
array
  0 => null

4 ponavljanja treba da bude, ali nikako ne bi trebalo biti null...
[ miloskec @ 27.08.2013. 14:18 ] @
Kad negde zapne, a sve ti deluje ok onda je verovatno problem u logici razmišljanja ili u "aksiomama" tj. u onome za šta veruješ da znaš kako radi.

1. Odradi kod van funkcije.

2. Dampuj sve što možeš:
a- $result
b- $row = mysql_fetch_array($result)
c- $row['parent_id']
d- display_children($row['parent_id'], $level+1)
...da vidiš šta vraća upit i da li su možda prazna polja za koja očekuješ da imaju rezultat.
[ Thugzsr @ 29.08.2013. 10:14 ] @
Sve uradio, i ok je sve, osim $niza, koji je prazan niz...ne znam u cemu je problem.
[ Burgos @ 29.08.2013. 15:52 ] @
Code:
array_push($niz, display_children($row['parent_id'], $level+1)) ; 


Šta tebi vraća funkcija display_children, pa stavljaš u niz? Koliko vidim, ništa.

(Verovatno neće raditi, vidi ispod)

Code:
function display_children($category_id, $level) 
{
  global $database;
   
    $result = mysql_query("SELECT * FROM parents WHERE id_roditelja='$category_id'") or die(mysql_error());
    
   $broj = $database->num_rows($result);
    $niz = array();
    $str = '';
    while ($row = mysql_fetch_array($result)) 
    {
       $str = str_repeat('  ',$level) . $row['naziv'] . "-> ";
       array_push($niz, display_children($row['parent_id'], $level+1)) ; 
       var_dump($niz);
    }
    return $str;
}


A na drugi pogled, nemaš ni uslov završetka rekurzije, već ulaziš beskonačno unutra (SQL naredba ne zavisi od $level promenljive, ako jednom vrati red, uvek će). Ne znam ni zašto stalno praviš novi niz, i šta bi u njemu trebalo da bude. Razmisli malo bolje o rešenju, ovde imaš mnogo problema.