Benötige Hilfe bei Schleifenproblem

Danke Dir recht herzlich für Deine Mühe.

Aber leider:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes)

Gruss
 
function_dbQuery($query) {

$result = mysql_query($query) or mysql_error();

return $result;
}

Ich kanns mir leider auch nicht erklären, wäre zu schön gewesen ;-)

Gruss
 
Gut.

Dann änder doch die Funktion bitte nochmal so ab:
PHP:
function getSubmenu($id, $mids) {
    $r_sub_navi = @function_dbQuery("select mid from menu WHERE parent_id ='".$id."'");
    if (!$r_sub_navi) {
        array_push($mids, $r_sub_navi);
                return $mids + getSubmenu($id, $mids);
        } else {
                return $mids;
        }
}
 
Ok.

Jetzt bekomme ich "Array ( )" ausgegeben.

Aber kann das so funktionieren?

Ich benötige ja immer wieder die parent_id und zwar von jedem Eintrag.

Also mit der Abfrage Markiere ich den 2ten Eintrag (1_1) und hab somit dessen id.
Wenn ich nun dessen id habe, dann muss ich den nächsten Eintrag suchen dessen parent_id gleich dieser id ist, also hab ich 1_1_1
Und so kann ich alles Abfragen, rein theoretisch.

Und ganz am Schluss lösche ich einfach den ersten Eintrag dessen Wert ich ja per GET bekomme.

Die Frage ist einfach nur wie...;-(
 
Zuletzt bearbeitet:
Wie sieht denn dein Code nun aus?

Und nehm mal eben das @vor dem function weg, damit die Fehlermeldungen wieder ausgegeben werden!
 
Also mit folgendem Code wird die jeweilige Hauptkategorie gelöscht und 2 Ebenen darunter. Mehr bekomme ich einfach nicht hin.
Die Navigation erlaubt unbegrenzte Subkategorien und beliebig verschachtelt. Das einzigste Problem ist das Löschen.

PHP:
  $r_sub_navi = function_dbQuery("select mid from menu WHERE parent_id ='".$_GET['cID']."'");

         while ($sub_navi = function_dbFetchArray($r_sub_navi)) {
         function_dbQuery("delete from menu WHERE parent_id ='".$sub_navi['mid']."'");

       }

		$r_del_sub_navi = function_dbQuery("delete from menu WHERE parent_id ='".$_GET['cID']."'");
		$r_del_navi = function_dbQuery("delete from menu WHERE mid ='".$_GET['cID']."'");

Die DB Struktur sieht folgendermaßen aus:

Code:
mid 	eintrag 	parent_id
351  	Root  	    0
352  	Child_1  	351 
353  	Child_2  	352
 
Zuletzt bearbeitet:
Genau das macht ja die Funktion von mir (jedenfalls bei mir im Test ^^).

Wenn du der Funktion die MID 351 übergibst, wird nach der parent_id 351 gesucht und dir die MID 352 zurück gegeben. Diese wird ins Array gepackt.

Dann wird die 352 genommen, die Funktion ruft sich selbst auf und sucht nach der parent_id 352 und gibt die dir MID 353 zurück und packt sie ins Array.

Nun steht dieses im Array:
mid[0] = 352;
mid[1] = 353;

Jetzt ruft sich die Funktion wieder selber auf mit 353. Jetzt wird keine parent_id gefunden, also ist die Funktion fertig und gibt nun das Array zurück.

In dem Array hast du nun also alle childes von 351.

Die Funktion ruft sich Rekursiv auf :)
 
Kannst DU mir mal Bitte den Code 1zu1 posten wie Du es bei Dir versucht hast?

Ach Mann! An was kann das denn liegen das dies bei mir nicht geht ;-(

Gruss
 
Zuletzt bearbeitet:
Warte ich versuche das auch mal mit einer Datenbankanbindung.
Mir ist gerade auf dem WC was eingefallen, wo es noch einen Fehler geben könnte :)

Geb mir mal eben 10-20 Minuten :D
 
Zurück