Autor | Zpráva | ||
---|---|---|---|
Karlos Profil * |
#1 · Zasláno: 27. 6. 2012, 20:14:28 · Upravil/a: Karlos
Ahoj, dělám stromové menu, skoro celé funguje, akorát tam je někde malinký problém a já ho celé odpoledne nemůžu najít.
V db mám 2 tabulky: cars ID|IDparent|Name models IDmodel|ID|Name No a představa je taková: v tabulce cars jsou uloženy značky aut. Pokud má IDparent = 0, tak je vypsána navrchu a je zobrazena, po kliknutí se zobrazí jednotlivé modely z tabulky models. Příklad: cars ID = 1 | IDparent = 0 | Name = VolksWagen ID = 2| IDparent = 1 | Name = Škoda models IDmodel = 1 | IDparent = 1 | Name = Golf IDmodel = 2| IDparent = 2 | Name = Fabia Výpis: VolksWagen Škoda Fabia Golf Problém je v tom, že Fabia se mi už nevypíše, protože tam už není žádná další značka. takže pokud přidám do cars nějakou fiktivní značku která bude mít IDparent = 2, Fabia se vypíše. jenomže to samozřejmě nechci. Takhle vypadá kod: Menu(0); function Menu($id) //vypisuje značky aut { $query = mysql_query("SELECT ID, Name, IDparent FROM cars WHERE ID = $id"); while($parent = mysql_fetch_object($query)) { echo "<li>".$parent->Name; if(inDB("IDparent",$parent->ID)) //zjistí jestli ve sloupečku IDparent je hodnota ID { echo "<ul>"; Menu($parent->ID); TypeCarsMenu($parent->ID); echo "</ul>"; }else{ echo "</li>"; } } } function TypeCarsMenu($id) //vypisuje modely aut { $query = mysql_query("SELECT IDmodel, Name, ID FROM models WHERE ID=$id"); //id je ze sloupečku cars while($type = mysql_fetch_object($query)) { echo "<li>".$type->Name."</li>"; } } Mám tam funkci inDB, ta pouze na základě numrows zjištuje, jestli v tom sloupečku IDparent je hodnota ID, což znamená že daná značka je potomkem této. To funguje, takže to sem už nechci rozepisovat. Díky za pomoc Aha špatně se zobrazil výpis toho jak má menu vypadat, takže ještě jednou lépe: VolksWagen -Škoda --Fabia -Golf |
||
AM_ Profil |
#2 · Zasláno: 29. 6. 2012, 15:37:40
V TypeCarsMenu se musí znovu rekurzivně volat TypeCarsMenu.
|
||
Karlos Profil * |
#3 · Zasláno: 30. 6. 2012, 11:55:45 · Upravil/a: Karlos
Myslíš takhle:
function TypeCarsMenu($id) //vypisuje modely aut { $query = mysql_query("SELECT IDmodel, Name, ID FROM models WHERE ID=$id"); //id je ze sloupečku cars while($type = mysql_fetch_object($query)) { echo "<li>".$type->Name."</li>"; TypeCarsMenu($type->IDmodel); } } Už vím v čem je chyba: if(inDB("IDparent",$parent->ID)) //zjistí jestli ve sloupečku IDparent je hodnota ID { echo "<ul>"; Menu($parent->ID); TypeCarsMenu($parent->ID); echo "</ul>"; }else{ echo "</li>"; |
||
Časová prodleva: 12 let
|
0