Warum kommt es zu einer Unendlichschleife?

Prophet05

Erfahrenes Mitglied
PHP:
if($BOARD != 0 and is_array($act_board))
{
	$temp_board = $this_board;
	$temp_navibar = '';
	
	$stop = false;
	
	do
	{
		$temp_navibar = ' &raquo; <a href="?page=forum&amp;mode='.$MODE.'&amp;pos='.$temp_board->getID().'/0/0">'.$temp_board->getTitle().'</a>'.$temp_navibar;
		if($temp_board->getBoard() != 0)
			$temo_board = $act_board[$temp_board->getBoard()];
		else
			$stop = true;
	}while(!$stop);
	
	$NAVIBAR .= $temp_navibar;
	
	unset($temp_board);
	unset($stop);
}

In diesem Code soll ein Navigationsbalken aufgebaut werden. Dabei gehe ich rekursiv vor, indem in einem Array von Elementen immer wieder das Eltern-Element vor setzte und dann mit ebendiesem weitermache. Sind keine Eltern-Elemente (Boards) mehr vorhanden, wird abgebrochen und der entstandene String wird gesichert.

Nun kommt es bei machen Elementen zu Unendlichschleifen und zwar jedes Mal, wenn Eltren-Elemente exsitieren ... Kann mir jemand sagen, wo der Fehler liegt?
 
Welche Werte liefert die getBoard()-Funktion zurück? Ist der Rückgabewert denn überhaupt irgendwann Null?
 
Die Tabelle hat die Spalten „Title“, „ID“ und „Board“ (das sind auf jeden fall die wichtigsten).
In Board wird die ID des Eltern-Elemnets gespeichert.
Im Moment trage ich noch alles per Hand in die db ein und Board wird durch die Rekursion 100% Null.

Hier ein Ausschnitt der Tabelle:
Code:
id	title		board
================================
1 	Webdesign  	0
2 	Off-Topic 	0
3 	HTML 		1
4 	CSS 		1
5 	Off-Topic 	2
6 	Disskussionen 	2
7 	HTML Sub 	3
 
Ändert sich denn der Rückgabewert der getBoard()-Funktion automatisch oder ist sie an einer zusätzlichen Bedingung (zum Beispiel Wertänderung einer Variable) verknüpft?
 
in $act_board sind in form eines Array alle zeilen der datenbank als Board-Objekte gespeichert. Dabei entspreicht der Index des Arrays der ID der jeweiligen Zeile/Boards. Die Board-Objekt haben folgenden Aufbau (schematisch):
Code:
Board
-> private id;
-> private title;
-> private board;

-> public getBoard => liefert board
-> public getTitle => liefert title
-> public getID => liefert id
(Den Code hier zu posten würde seiten verbrauchen...)

$this_board enthält das aktuel aktive Board, also den standpunkt auf der Seite (Auch wieder in form eines Board-Objekts).

In den Objekten/Klassen stecken keine fehler. Auch nicht im restlichen script den sobald ich den oben geposteten Teil auskommentiere Funktioniert alles einwandfrei.
 
Meine Frage war ja bereits, ob ich denn der Rückgabewert der getBoard()-Funktion automatisch ändert oder ob er an einer zusätzlichen Bedingung (zum Beispiel Wertänderung einer Variable) geknüpft ist.
 
Bin mir nicht sicher, obs hilft und zum Thema gehört, aber:
Code:
$temo_board = $act_board[$temp_board->getBoard()];
Ist das korrekt, dass die Variable $temo_board heisst?

Schöne Grüsse
 
Das war der fehler. Danke! Das kommt davon wenn stundenlang davor sitzt und vor verzweifelung kleinigkeiten übersieht...
 
Zurück