|
|
|
|
|
|
|||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
|
|
LinkBack | Themen-Optionen | Thema bewerten |
|
|
#1 (permalink) |
|
Gast
Beiträge: n/a
|
Hi Leute !
hab da mal wieder ein kleines Problem wo ich sehr gut euer Wissen gebrauchen kann... Erstmal eine kleine Beschreibung: Ich habe eine Tabelle in der eine Menüstrktur abgelegt ist. Jeder Punkt kann beliebig viele Unterpunkte haben, jeder unterpunkt kann wieder beliebige Unterpunkte haben usw. Die Tabelle sieht so aus: uid | pid | menuname uid = unique identifier pid = parent_id Ich habe mir eine Funktion geschrieben, der ich eine uid übergeben kann, und dir mir alle unterpunkte zu dieser Funktion ausgeibt. Das ist auch alles wunderbar, num zu meinem Problem: Im moment gebe ich in der Funktion selber die Unterpunkte aus - Das ist natürlich nicht so schön, viel lieber wäre es mir wenn die Funktion mir einen Array zurückliefern würde. Und genau da ist mein Problem: Dadurch das sich die Funktion immer wieder selber aufruft, gehen meine Werte immer wieder verloren. Die Lösung wäre es, der Funktion selber den Array mit den aktuellen Werten zu übergeben, und die neuen Werte diesen anzufügen. Und genau hieran scheitere ich :/ Hier die Funktion: Code:
<? function checkMenuePoints($pid, $rekursiv = 1)
{
# $pid = ParentID eines Menüounktes, zu dem die Unterpunkte ausgegeben werden sollen
# $rekursiv = 0 oder 1; legt fest ob die Unterpunkte rekursiv ausgegeben werden sollen, oder ob nur die direkten
# Unterpunkte angezeit werden
$SQL = "SELECT uid, pid, name FROM tbl_faqbaum WHERE pid = '$pid';";
$rssubmenue = mysql_query($SQL);
$margin = $marg;
if (mysql_num_rows($rssubmenue) > 0) // Unterpunkte vorhanden, Unterpunkt ausgeben und prüfen ob es weitere Unterpunkte gibt
{
$SQL2 = "SELECT UID FROM tbl_faqbaum WHERE pid='$pid'";
$rsuid = mysql_fetch_object(mysql_query($SQL2));
#$uid = $rsuid->uid;
while ($submenue = mysql_fetch_object($rssubmenue))
{ ?>
<? echo stripslashes($submenue->name) ?>
<?
if ($rekursiv == 1)
{
checkMenuePoints($submenue->uid,$rekursiv);
}
}
}
}
?>
ich hoffe ihr könnt mir helfen, grüße Ben |
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#4 (permalink) |
|
Gast
Beiträge: n/a
|
jo Leute,
danke schomal für eure Antworten, ich packs leider trotzdem nicht so ganz: hier mein aktueller versuch (is zwar noch ohne Array, aber ist ja erstmal egal) Code:
<? function checkMenuePoints($pid, $rekursiv = 1, $data = "")
{
$SQL = "SELECT uid, pid, name FROM tbl_faqbaum WHERE pid = '$pid';";
$rssubmenue = mysql_query($SQL);
if (mysql_num_rows($rssubmenue) > 0) // Unterpunkte vorhanden, Unterpunkt ausgeben und prüfen ob es weitere Unterpunkte gibt
{
$SQL2 = "SELECT uid FROM tbl_faqbaum WHERE pid='$pid'";
$rsuid = mysql_fetch_object(mysql_query($SQL2));
while ($submenue = mysql_fetch_object($rssubmenue))
{
// Übergebener Var. die neuen Werte hinzufügen
$data = $data.",".$submenue->uid;
if ($rekursiv == 1)
{
// der Funtion die bisher gesammelten Werte übergeben
checkMenuePoints($submenue->uid, $rekursiv, $data);
}
}
}
return($data); // rückgabe der gesammelten werte
}
?>
Vielen Dank, greets ben |
|
|
|
#6 (permalink) |
|
Gast
Beiträge: n/a
|
Hi,
sry Bruchpilot, ich schnall nich so ganz wie du das meinst. Ich verwende zwar nich den rückgabewert, aber ich übergebe der Funktion doch die Variable die eigentlich die bisher "gesammelten" Werte enthält. Zeige mir doch bitte wie genau die die Verwertung des Rückgabewertes meinst, ich komm echt nich drauf thxalot, greets ben |
|
|
|
#8 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 15.08.2004
Beiträge: 2.473
![]() |
Zitat:
Variante a) ist, die Return-Werte rekursiv anzunehmen und zusammenzubauen, oder b) aus function checkMenuePoints($pid, $rekursiv = 1, $data = "") sowas zu machen: function checkMenuePoints($pid, $rekursiv = 1, &$data) damit $data überall die gleiche Variable ist (als Referenz) Der erste Aufruf von checkMenuePoints sollte dann aber auch wirklich ne Variable für $data übergeben, sonst meckern v.a. neuere PHP-Versionen, wenns keine Variable gibt, auf die die Referenz zeigen soll.
__________________
mod = master of disaster |
|
|
|
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| JS: Einführung - Javascript im Schichtenmodell | nikosch | Tutorials | 4 | 11.04.2009 17:06 |
| Rekursive Funktion bricht ab... | duras666 | PHP Tipps 2008 | 9 | 28.04.2008 11:36 |
| gpc_quotes funktion: verbesserungsvorschläge? | Promaetheus | PHP Tipps 2007 | 10 | 12.08.2007 19:29 |
| Komplexe Funktion: +Übersichtlichkeit, -Performance | Jacks Rache | PHP Tipps 2006 | 3 | 07.06.2006 14:22 |
| aus einer funktion auf funktion anderer klasse zugreifen | seejay | PHP Tipps 2006 | 3 | 05.01.2006 10:37 |
| PHP-GTK Tutorial | Beitragsarchiv | 9 | 02.11.2005 21:07 | |
| (schnellere) Funktion zum Zusammenfassen von CSS | PHP-Fortgeschrittene | 21 | 08.08.2005 16:47 | |
| In einer Funktion auf eine Funktion der Klasse zugreifen | phpbeginner | PHP Tipps 2005-2 | 2 | 28.07.2005 00:30 |
| 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 | |
| Funktion in funktion nicht möglich? | PHP-Fortgeschrittene | 4 | 28.11.2004 00:14 | |
| sql anfrage in funktion | greenrover | PHP Tipps 2004-2 | 4 | 10.11.2004 14:58 |
| [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 | |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.