php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.04.2008, 14:12  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 4
duras666 befindet sich auf einem aufstrebenden Ast
Standard Rekursive Funktion bricht ab...

Hallo zusammen!

Ich verzweifel gerade... Folgendes Problem:

Für ein Menu, welches aus einer Datenbank generiert werden soll, benutz ich eine rekursive Funktion, da ich halt vorher nicht weiss, wie viele ebenen das Menu jeweils hat! hier der Code der funktion:


Code:
function generate_menu($sub_of = "0", $parent_dir = "", $ebene = "1")
  {
  global $conn;
  global $tpl;
  $sql = "SELECT id, sub_exists, name, link_title, description FROM 08_menu WHERE sub_of = '$sub_of' ORDER BY rangfolge";
  $rs = mysql_query($sql,$conn);
  while ($row = mysql_fetch_array($rs,MYSQL_ASSOC))
    {
    $parent = $parent_dir;
    $parent .= $row[name]."/";
    $tpl->replace("link_title",$row[link_title]);
    $tpl->replace("link_name",$parent);
    $output .= $tpl->getoutput("navi_link_bit".$ebene);
    if($row[sub_exists] == 1)
      {
      $output .= generate_menu($row[id],$parent,$ebene++);
      }
    }
  return $output;
  }


solange ich nicht rekursiv arbeite, funktioniert die funktion wunderbar, es gibt mir die Links der ersten ebene schick aus!
Sobald ich aber die generate_menu() mit den entsprechenden werten (welche also alle submenus der entprechenden id sucht) werden die Submenus auch wunderbar ausgegeben, leider aber immer nur das erste... danach bricht er die übergeordnete funktion ab!
ein zurückspringen auf die ebene davor erfolgt also nicht mehr...

also statt

-link 1
--sub_1
---sub_sub1
--sub_2
-link2
-link2

#macht er nur noch:

-link 1
--sub_1
---sub_sub1

und hört dann auf

hab ich irgendwas übersehen oder funktionert das ganze - so wie ich es mir vorstelle - gar nicht?
arbeite zum ersten mal mit ner rekursiven funktion, deswegen weiss ich halt nicht, obs n grundsätzlicher fehler ist oder ich einfach nur was falsch gemacht habe!

mfg
und vielen dank im Vorraus!
Duras
duras666 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.04.2008, 14:16  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
$output .= generate_menu($row[id],$parent,$ebene++);
sicher $ebene ++ und nicht eher $ebene+1 ?
David ist offline  
Alt 24.04.2008, 15:41  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 4
duras666 befindet sich auf einem aufstrebenden Ast
Standard

hab gerade keinen zugriff drauf, kann es nicht testen, da es auf meinem localhost liegt, aber in welcher form könnte das denn die funktion abbrechen? die $ebene wird (bis auf für die ausgabe des richtigen templates) ja nicht gebraucht...
also, ich werds heute abend mal testen, danke auf jeden fall schonmal für den hinweis!
melde mich dann wenn ich mehr weiss

mfg
Duras
duras666 ist offline  
Alt 24.04.2008, 20:58  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 4
duras666 befindet sich auf einem aufstrebenden Ast
Standard

so gehts

1000 dank...

aber ich frag mich warum? theoretisch wird an die funktion doch der gleiche wert übergeben, und ob $ebene in der parent-funktion jetzt 1 oder 2 ist sollte doch eigentlich egal sein, oder?
duras666 ist offline  
Alt 24.04.2008, 22:09  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

PHP-Code:
<?php
function a($x)
{
    echo 
'x=' $x;
}
$n=0;
a($n++);
?>
Zitat:
x=0
Deshalb heißt der Operator post-increment.
David ist offline  
Alt 25.04.2008, 11:05  
Neuer Benutzer
 
Registriert seit: 24.04.2008
Beiträge: 4
duras666 befindet sich auf einem aufstrebenden Ast
Standard

ja, das ist mir schon klar...

was mir aber nicht klar ist, warum die parent-funktion nicht mehr weiterläuft!

die $ebene wird ja quasi nicht mehr gebraucht... aber is auch eigentlich egal, läuft ja jetzt und ich weiss in zukunft, wie ichs machen muss
duras666 ist offline  
Alt 25.04.2008, 11:46  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von duras666
aber ich frag mich warum? theoretisch wird an die funktion doch der gleiche wert übergeben
Das ist nicht der Fall.
David ist offline  
Alt 25.04.2008, 15:20  
Neuer Benutzer
 
Registriert seit: 17.04.2008
Beiträge: 18
nobswolf befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von duras666 Beitrag anzeigen
ja, das ist mir schon klar...
was mir aber nicht klar ist, warum die parent-funktion nicht mehr weiterläuft!
Du solltest Dir wirklich mal genau anschauen, was '++' und '--' tun.
PHP-Code:
bla($a++); 
tut das gleiche wie
PHP-Code:
bla($a);
$a $a 1
und wieder mal: wahrlich kein Profi-Problem
nobswolf ist offline  
Alt 28.04.2008, 11:24  
Erfahrener Benutzer
 
Registriert seit: 08.08.2007
Beiträge: 549
PHP-Kenntnisse:
Fortgeschritten
drieling befindet sich auf einem aufstrebenden Ast
drieling eine Nachricht über ICQ schicken
Standard

Verschoben
drieling ist offline  
Alt 28.04.2008, 11:36  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nobswolf Beitrag anzeigen
Du solltest Dir wirklich mal genau anschauen, was '++' und '--' tun.
Interessant ist ja auch der Unterschied von
PHP-Code:
$ebene ++;
// und
++ $ebene
Mit letzterem hätte die Funktion auch funktioniert.
__________________
Gruss
L
lazydog ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Rekursive Funktion funktioniert lokal, aber nicht remote? Anotherone PHP-Fortgeschrittene 1 21.06.2008 08:11
Rekursive Funktion tinchen PHP Tipps 2007 7 18.02.2007 19:54
Array in rekursiver Funktion auslesen Gumfuzi PHP Tipps 2007 17 15.11.2005 12:01
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Array-Übergabe in Funktion PHP Tipps 2005 1 08.05.2005 21:05
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
Hilfe - Rekursive Funktion PHP Tipps 2005 5 10.01.2005 22:19
Rekursive Funktion ... finde fehler nicht ... PHP-Fortgeschrittene 1 27.09.2004 03:44
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51
Rekursive Funktion tut nicht richtig??? PHP-Fortgeschrittene 8 09.07.2004 15:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
rekursive funktionen, rekursion bricht ab, sql function rekursion, function rekursiv, rekursiv menü aus sql auslesen, rekursive function, javascript rekursive schleife parents, php rekursive funktion abbrechen, rekursion function, wann bricht eine rekursion ab, php rekursive funktion abbruch, javascript funktion bricht ab, php rekursive funktion bricht nach return nicht ab, php bricht rekursive funktion ab, rekursive funktionen sql, rekursion array zurückspringen php, rekursive funktion mal, javascript rekursive funktionen problem, php function bricht ab, aus rekursion zurückspringen

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum