Jump to content
php.lv forumi

Problēmas ar rekursiju un izvadi


Recommended Posts

Posted (edited)

function show($parent){
  $query = mysql_query("SELECT id, parent, kautkas FROM tabula WHERE parent='$parent' ORDER BY sort ASC");

  if(mysql_num_rows($query) > 0){
	 $out .= ($parent == 0 ? '<ul class="mktree">' : '<ul>');
	 while($row = mysql_fetch_array($query)){
		$out .= '<li>'.$row['kautkas'];
		$this->show($row['id']);
		$out .= '</li>';
	 }
	 $out .= '</ul>';
  }

return $out; 
  }

 

Šis tiek likts temleitā:

$klase->show(0);

 

Problēma ir tāda, ka neizvada pareizi html'u, ja $out .= vietaa lietoju echo, tad viss ir pareizi, bet es nevaru lietot echo, jo izmantoju templeitu sistēmu.

return šaja funkcijā it kā nevar lietot, jo tad nestrādā rekursija, bet lai ar šo $klase->show(0); varētu izvadīt html'u ir vajadzīgs return. Ir kādi risinājumi?

Edited by Jackal
Posted

Kas tieši tev tur neizvadās pareizā html'ā?

 

btw tev tur $out mainīgais ir neinicializēts, kad pirmo reizi to lieto.

Posted

Jā par šitādu variantu neiedomājos

$out .= $this->show($row['id']);

Tagad viss darbojas.

 

Bet vai tad return nepārtrauca funkcijas darbību?

 

Paldies!

×
×
  • Create New...