Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Hi,

dann lösche doch:

...

...

...

-> Unter 1

-> Unter 2

-> Unter 3

-> Unter 1

-> Unter 2

-> Unter 3

Gruß Jaraz

Und wie soll ich das löschen?

Die einträge sind alle nur einfach drin.

Es muss irgendwo im Code liegen.

TripleD

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...:D

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...

Könnte auch sein, dass jemand dein HTTP abhört und die Daten manipuliert, um dich zu ärgern.

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.

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

.

Diese Abfrage wird in die "menu.php" includiert.

TripleD

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.

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.

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

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.

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

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]

Hi,

wie meinst du das mit Haupt- / Unterkategorie?

Gehst du von der Datenbank aus?

TripleD

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

Ja, das Untermenü soll so lange bestehen bleiben,

bis ich auf einen anderen Obermenüpunkt klicke.

TripleD

Nein, sind einfach nur links untereinander.

Nichts mit DropDown und sowas.

TripleD

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.