falscher menü aufruf bringt leere Seite

Hi Divo1984 was du da postest sieht gut aus aber zwischen <article>und</article> habe ich insgesamt 5 verschiedene Menü abfragen
Wenn ich alle 5 so Abfrage, geht das so nicht.
 
Jetzt poste doch endlich deinen kompletten PHP-Code, oder sollen wir hier noch länger raten?

Wo kommt z.B. $page her? Das sieht man nicht.
 
$page ist die Seite die aufgerufen wird
Wobei die 5 Menüs aus 5 verschiedenen Datenbanken abgerufen werden.
Mit header(location...) wird die Startseite aus der haupt Datenbank aufgerufen.
Wenn ich den gesamten Code posten wollte, sind das wohl 10 Din A4 Seiten und es würden immernoch Fragen kommen.
Also möchtest du die menü.php oder die index.php gepostet haben?
 
$page ist die Seite die aufgerufen wird
Wobei die 5 Menüs aus 5 verschiedenen Datenbanken abgerufen werden.
Mit header(location...) wird die Startseite aus der haupt Datenbank aufgerufen.
Wenn ich den gesamten Code posten wollte, sind das wohl 10 Din A4 Seiten und es würden immernoch Fragen kommen.
Also möchtest du die menü.php oder die index.php gepostet haben.
Wahrscheinlich die index.php weil um die geht es ja.
 
PHP:
$page=isset($_GET['page']) ? $_GET['page'] : '';

Die index.php

HTML:
<article>
PHP:
$stmt1=$pdo->prepare("SELECT id,url,ziel,wohin FROM menu1 ORDER BY id");
$stmt1->bindColumn(1,$id);
$stmt1->bindColumn(2,$url);
$stmt1->bindColumn(3,$ziel);
$stmt1->bindColumn(4,$wohin);
$stmt1->execute();
while ($stmt1->fetch())
    {
        switch ($page)
        {
        case $ziel:
            NormalerRahmenStart($url);
                if(file_exists($wohin)==true){require $wohin;};
            NormalerRahmenEnde();
        break;
        }
    }

$stmt2=$pdo->prepare("
SELECT url1,ziel1,wohin1
FROM menu5
");
$stmt2->bindColumn(2,$url1);
$stmt2->bindColumn(3,$ziel1);
$stmt2->bindColumn(4,$wohin1);
$stmt2->execute();
while ($stmt2->fetch())
    {
        switch ($page)
        {
            case $ziel1:
                NormalerRahmenStart($url1);
                    if(file_exists($wohin1)==true){require $wohin1;};
                NormalerRahmenEnde();
        break;
        }
    }
   
$stmt3=$pdo->prepare("....

$stmt4=$pdo->prepare("....

$stmt5=$pdo->prepare("....

if(empty($page)){
header("Location:index.php?page=1");
}

HTML:
</article>

jetzt hinzu:

PHP:
$stmta=$pdo->prepare("SELECT ziel FROM menu1 WHERE id = :id");
$stmta->bindParam(':id', $page, PDO::PARAM_INT);
$stmta->execute();
$stmtb=$pdo->prepare("SELECT ziel1 FROM menu2 WHERE id = :id");
$stmtb->bindParam(':id', $page, PDO::PARAM_INT);
$stmtb->execute();
$stmtc=$pdo->prepare("SELECT ziel3 FROM menu3 WHERE id = :id");
$stmtc->bindParam(':id', $page, PDO::PARAM_INT);
$stmtc->execute();
$stmtd=$pdo->prepare("SELECT ziel4 FROM menu4 WHERE id = :id");
$stmtd->bindParam(':id', $page, PDO::PARAM_INT);
$stmtd->execute();
$stmte=$pdo->prepare("SELECT ziel5 FROM menu5 WHERE id = :id");
$stmte->bindParam(':id', $page, PDO::PARAM_INT);
$stmte->execute();
if (($stmta->rowCount() == 0)&&($stmtb->rowCount() == 0)&&($stmtc->rowCount() == 0)&&($stmtd->rowCount() == 0)&&($stmte->rowCount() == 0))
{
if(file_exists('error.php') == true){require('error.php');}
}

funktioniert!
 
Du hast also 5 Menüs, und du hast jeweils 5 Blöcke mit
PHP:
$stmt1=$pdo->prepare("SELECT id,url,ziel,wohin FROM menu1 ORDER BY id");
:
$stmt1=$pdo->prepare("SELECT id,url,ziel,wohin FROM menu2 ORDER BY id");
:
$stmt1=$pdo->prepare("SELECT id,url,ziel,wohin FROM menu3 ORDER BY id");
:
$stmt1=$pdo->prepare("SELECT id,url,ziel,wohin FROM menu4 ORDER BY id");
:
$stmt1=$pdo->prepare("SELECT id,url,ziel,wohin FROM menu5 ORDER BY id");
:
und
PHP:
$stmta=$pdo->prepare("SELECT ziel FROM menu1 WHERE id = :id");
:
$stmta=$pdo->prepare("SELECT ziel FROM menu2 WHERE id = :id");
:
$stmta=$pdo->prepare("SELECT ziel FROM menu3 WHERE id = :id");
:
$stmta=$pdo->prepare("SELECT ziel FROM menu4 WHERE id = :id");
:
$stmta=$pdo->prepare("SELECT ziel FROM menu5 WHERE id = :id");
Das heißt also, wenn du jetzt noch ein sechstes Menü brauchst, würdest du jeweils noch einen Block einbauen. Und da fällt dir nicht auf, dass der Aufbau bzw. das DB-Design für die Tonne ist? Ich glaube, du solltest erst einmal überlegen, wie man das optimieren kann.
 
Wahrscheinlich kann mann alles optimieren, aber ich bin kein Profi sondern immernoch am lernen.
Ich bin schon ziemlich alt und trainiere u.a. meinen Kopf damit
Erstmal steht bei mir die funktionalität wenn das geschafft ist und mir gibt jemand einen Denkanstoss wie man das optimieren kann dann würde ich das probieren und wenn es funktioniert auch nutzen.

Ich weis nicht wie man das optimieren kann und habe nichtmal ansatzweise eine Idee

aber du kannst ja mal einen Denkanstoss posten, wäre für jegliche Hilfe dankbar
 
Man könnte eine Tabelle mit dieser Struktur nehmen:

Code:
id, url, ziel, wohin, menunummer, reihenfolge, sichtbar

Die Tabelle sieht dann z.B. so aus:
Code:
1, url1, ziel1, wohin1, 1, 1, 1
2, url2, ziel2, wohin2, 1, 2, 1
3, url3, ziel3, wohin3, 1, 3, 1
4, url4, ziel4, wohin4, 2, 1, 1
5, url5, ziel5, wohin5, 2, 2, 1
6, url6, ziel6, wohin6, 2, 3, 1
7, url7, ziel7, wohin7, 3, 1, 1
8, url8, ziel8, wohin8, 3, 2, 1
9, url9, ziel9, wohin9, 3, 3, 0
Mit einem
Code:
Select id, ziel, wohin from tabelle where sichtbar=1 order by menunummer, reihenfolge
holst du die Daten aus der Datenbank und mit Hilfe von einem Gruppenwechsel (google hilft) gibst du die Daten aus. So hast du genau eine Schleife für alle Menüs, kann Einträge oder ganze Menüs hinzufügen, die Reihenfolge ändern und auch einzelne Menüpunkte aus- bzw. einblenden.

Ich habe das jetzt vereinfacht dargestellt, sollte dich aber in die richtige Richtung schubsen. ;)
 
Von sowas habe ich noch nie gehört oder gelesen
aber ich werde mich die nächsten Tage mal ransetzen und testen wenn es funktioniert, werde ich eh posten.
Vielen Dank für den Anstoß
 
Nur so am Rande, wenn du etwas auf True überprüfen willst musst Du nicht == True schreiben. Es reicht wenn der Wert in der Klammer steht. Und wenn Du auf false überprüfen willst kannst Du die Abfrage per ! negativeren.
und wenn ich Deine Abfragen sehe wo nur ne Int hochgefährlich wird in jedem neuen Statement, würde ich das durch n Loop schicken.
 
Zurück