20. April 200422 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 200422 j Hi, dann lösche doch: ... ... ... -> Unter 1 -> Unter 2 -> Unter 3 -> Unter 1 -> Unter 2 -> Unter 3 Gruß Jaraz
21. April 200422 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 200422 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 200422 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 200422 j Könnte auch sein, dass jemand dein HTTP abhört und die Daten manipuliert, um dich zu ärgern.
21. April 200422 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 200422 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 200422 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 200422 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 200422 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 200422 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 200422 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 200422 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 200422 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 200422 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 200422 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 200422 j Hi, wie meinst du das mit Haupt- / Unterkategorie? Gehst du von der Datenbank aus? TripleD
22. April 200422 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 200422 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 200422 j Ja, das Untermenü soll so lange bestehen bleiben, bis ich auf einen anderen Obermenüpunkt klicke. TripleD
22. April 200422 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 200422 j Nein, sind einfach nur links untereinander. Nichts mit DropDown und sowas. TripleD
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.