Veröffentlicht 20. April 200421 j Hallo zusammen, ich hab vor ein Menü mit PHP und mySQL zu programmieren. Es läuft auch alles schon einigermaßen. So siehts aus: Haupt 1 -> Unter 1 -> Unter 2 -> Unter 3 -> Unter 1 -> Unter 2 -> Unter 3 -> Unter 1 -> Unter 2 -> Unter 3 Haupt 2 -> Unter 1 -> Unter 2 Haupt 3 -> Unter 1 . . . So sollte es aussehen: Haupt 1 -> Unter 1 -> Unter 2 -> Unter 3 Haupt 2 -> Unter 1 -> Unter 2 Haupt 3 -> Unter 1 . . . Wenn jemand den Quellcode brauch, einfach melden. Setz ihn dann rein. Hoffe mir kann jemand helfen. Gruß TripleD
20. April 200421 j Hi, dann lösche doch: ... ... ... -> Unter 1 -> Unter 2 -> Unter 3 -> Unter 1 -> Unter 2 -> Unter 3 Gruß Jaraz
21. April 200421 j Und wie soll ich das löschen? Die einträge sind alle nur einfach drin. Es muss irgendwo im Code liegen. TripleD
21. April 200421 j Hi! wie wär's wenn Du den Code einfach mal postest? Dann könnten wir den Fehler auch finden. Aber ich kann natürlich auch mal raten: Möglicherweise ists ja ein Bug in PHP...
21. April 200421 j Der Quellcode wäre hilfreich... joa... Also sieht irgendwie so aus als ob der da aus einer Schleife nicht rausspringt, sondern die noch 2 mal durchläuft bevor die Abbruchbedingung zutrifft. Weshalb kann ich natürlich ohne den Quellcode auch nicht sagen...
21. April 200421 j Könnte auch sein, dass jemand dein HTTP abhört und die Daten manipuliert, um dich zu ärgern.
21. April 200421 j Höchstwahrscheinlich ist einfach deine Schleife bei der Menüdarstellung leicht fehlerhaft, aber den Code bräuchte man trotzdem mal bitte. Gruß Patrick
21. April 200421 j Hab noch ne Möglichkeit!!! Der Inhalt der Datenbank ist falsch und der Quellcode dafür richtig. Also, mal her mit dem Code und dem Datenbank-Design.
22. April 200421 j Hi, hier mein Quelltext der Abfrage: <?php include('zugang_loc.php'); $dbname="artikel"; function abfrage($id) { global $dbname, $PHP_SELF, $clicked, $ausgabe; $query=mysql_query("SELECT * FROM $dbname WHERE sid='$id'"); while($row=mysql_fetch_array($query)) { echo "<li><a href=$PHP_SELF?open=$row[link]&clicked=$row[id]>$row[bez]</a></li>"; $showthis = 0; $query2=mysql_query("SELECT id FROM $dbname WHERE sid='$row[id]'"); while($row2=mysql_fetch_array($query2)) { if (isset($clicked) && $clicked=="$row[id]") $showthis=1; $ausgabe .= "<ol>"; $ausgabe .= abfrage($row[$id]); $ausgabe .= "</ol>"; } if ($showthis == 1) echo $ausgabe; $ausgabe = ""; } } abfrage("0"); //erstaufruf ?> Gruß TripleD
22. April 200421 j Hier ist nur die Funktion, kannst du noch Posten von wo die funktion aufgerufen wird. Oder übersehe ich dies gerade ? Gruß Patrick
22. April 200421 j Vielleicht solltest du zwischen den Abfragen mal mysql_freeResult machen, ist allerdings nciht umbedingt nötig. Es ist ja schön jetzt mit dem Quelltext, aber eine Beschreibung deiner Datenbank wär trotzdem nicht schelcht.
22. April 200421 j Ich hab grad noch ein Problem entdeckt, und zwar wird die Seite, auf di verlinkt wird nicht angezeigt. Gruß TripleD PS: Bin am verzweifeln. Geb das ding bald auf.
22. April 200421 j Was brauchst den genau von der Datenbank? Wie sie aufgebaut ist, oder mit Daten? Kannst dir das ding auch online anschauen, wenn dir das was hilft. TripleD
22. April 200421 j Beschreib mal bitte deine Tabelle Artikel, also welche Felder es da gibt und wozu sie gut sind. Hab mir deine funktion abgeguckt: Du hst da 2 Variablen $row und $row2. $row benutzt du auch, aber $row2 iterierst du nur, die Werte der Abfrage nutzt du nicht.
22. April 200421 j Aha, und muss das ganze dann richtig heißen? Kannst du mir da vieleicht weiterhelfen? Hier mal meine Tabelle: id -> vortlaufend (ist ja normal das man soeine hat, oder?) sid -> für die zuweisung (Kategorie [0] -> SubKategorie1[0]...) bez -> bezeichnung des Links / Name link -> was geöffnet werden soll Hoffe das hielft dir, ansonsten kopier ich dir meine Tabelle mal hier rein. TripleD
22. April 200421 j Zwei Fragen: 1. hast du deine Haupt- und Unterkategorien in einer Spalte stehen ? 2. Benutzt du die ID zum zählen ? Du musst keine ID anlegen. Gruß Patrick
22. April 200421 j Ok, ich glaub, ich hab verstanden woran es gelegen hat bei deinem Code! Du machst in deinem Aufruf eine Rekursion bei jder Subkategorie der gewählten Kategorie. Wenn deine Kategorie 3 Subkategorien aht dann machst du 3 Rekusionen, statt einer pro Kategorie. Du hast also einfach die Rekursion an der falsche stelle gehabt. Sie muss direkt im Anschluss an die 2. while-Schleife, siehe unten. <?php include('zugang_loc.php'); $dbname="artikel"; function abfrage($id) { global $dbname, $PHP_SELF, $clicked, $ausgabe; $query=mysql_query("SELECT * FROM $dbname WHERE sid='$id'"); while($row=mysql_fetch_array($query)) { echo "<li><a href=$PHP_SELF?open=$row[link]&clicked=$row[id]>$row[bez] </a></li>"; $showthis = 0; $query2=mysql_query("SELECT id FROM $dbname WHERE sid='$row[id]'"); while($row2=mysql_fetch_array($query2)) { if (isset($clicked) && $clicked=="$row[id]") $showthis=1; } if ($showthis == 1) { echo "<ol>"; abfrage($row[$id]); echo= "</ol>"; echo $ausgabe; } } } abfrage("0"); //erstaufruf ?> [/PHP]
22. April 200421 j Hi, wie meinst du das mit Haupt- / Unterkategorie? Gehst du von der Datenbank aus? TripleD
22. April 200421 j Erst mal danke. Es klappt jetzt soweit mit dem Menü. 1. Was muss ich jetzt noch machen, damit sich das Untermenü nicht schließt, wenn ich auf einen eintrag klicke? 2. Wie bekomme ich das hin, damit sich in nem anderen Frame, die Seite öffenet, die unter dem Eintrag hinterlegt ist? Wenn das alles klappt lass ich euch in Ruhe. Gruß TripelD
22. April 200421 j Wie meinst du das: 1. Was muss ich jetzt noch machen, damit sich das Untermenü nicht schließt, wenn ich auf einen eintrag klicke? Möchtest du das deine Auswahl bestehen bleibt ? Gruß Patrick
22. April 200421 j Ja, das Untermenü soll so lange bestehen bleiben, bis ich auf einen anderen Obermenüpunkt klicke. TripleD
22. April 200421 j Stelst du die Untermenüs mit einem DropDown-Menü dar ? Wenn ja, gibt es einen Tread von mir indem das alles beantwortet ist. Den Tread findest du hier: http://forum.fachinformatiker.de/showthread.php?s=&threadid=61760 Als Link: Klicke hier Gruß Patrick
22. April 200421 j Nein, sind einfach nur links untereinander. Nichts mit DropDown und sowas. TripleD
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.