Link mit index.php?jump=usw...

Loddar1

Erfahrenes Mitglied
Hallo und Guten Tag
Ihr kennt ja wahrscheinlich alle
solchen Link:
Code:
index.php?jump=ast
dazu gehört ja noch weiterer Code z.B.:
PHP:
<?php
switch ($jump) {
case "ast": if(file_exists("seite.php")){require ("seite.php");} break;
....
.....
?>
jetzt möchte ich ast und auch seite.php aus der Datenbank auslesen, geht das überhaupt?

Danke schonmal fürs Gucken.
 
Hi

natürlich geht das.
Eine Tabelle mit zwei Spalten, in Spalte A kommt "ast", in Spalte B "seite.php".
Pro Möglichkeit vom switch eben eine Tabellenzeile.

Ind er PHP-Datei eine SQL-Abfrage, die sich genau die Zeile holt,
wo der Inhalt von Spalte A und die Variable jump übereinstimmen...
Wenn kein Ergebnis: Fehler, sonst eben require Spalte B vom Ergebnis.
 
Die Tabellen habe ich schon,
es geht eigentlich um die DB abfrage
bleibt denn
PHP:
 <?php
switch ($jump) {
case "ast": if(file_exists("seite.php")){require ("seite.php");} break;
....
.....
?>
bestehen?
und sollte etwa so aussehen?
PHP:
 <?php
switch ($jump) {
case "row['spalte']": if(file_exists("row['spalte1']")){require ("row['spalte1']");} break;
....
.....
?>
oder eine normale DB abfrage?
 
Da es nur einen "case" gibt (eben phpseitenvariable==dbdaten)
reicht ein normales if statt dem ganzen switch.
In der SQL-Abfrage muss eben das "Where spalteB == meinejumpvariable" rein

PS: Bei dem letzten Codestück (auch wenn du es nicht brauchst):
Da geht mit den Anführungszeichen alles durcheinander.
Eigentlich braucht man dort keine Doppelten " "
Was du statt "row['spalte']" wolltest ist $row['spalte']
 
Mit der DB abfrage klappt es nicht
vielleicht kann mir einer sagen ob mein Code richtig ist.
PHP:
<?php
$ergo = mysql_query("SELECT * FROM menu ORDER BY id");
while($sm = mysql_fetch_array($ergo)){
if ($sm['id']==1)  {$sm['url'];  require $sm['link'];}
if ($sm['id']==2)  {$sm['url'];  require $sm['link'];}
if ($sm['id']==3)  {$sm['url'];  require $sm['link'];}
}
?>
 
(Wo ist der Verbindungsaufbau?)
Warum mysql_ ?
Warum Order by?
Warum mehrere if?
Was sind diese id´s plötzlich?
Ist eine Url und ein Link nicht eher das Selbe? (verglichen mit dem jump-Kürzel)
Was soll die Anweisung $sm['url']; bewirken?
Warum das require plötzlich ohne Klammern?
Was ist, wenn kein passender Eintrag gefunden wurde?
Wo ist überhaupt das jump in diesem Code?
...
:rolleyes:

Als Erstes mal von mysql_ weg. Umstellen auf PDO oder Mysqli...
Dann die GET-Variable auf Existenz prüfen. isset.
Die SQL-Abfrage mit einem Where-Teil machen, wie schon mehrmals gesagt.
Falls kein Prepared Statement: Escapen nicht vergessen

Nach der Abfrage einmal fetchen. Nur einmal.
Wenn nichts rauskommt ist ein ungültiger Wert in der aufrufenden Url angegeben worden.
Sonst einfach direkt requiren.
 
Hallo sheel,
ich habe deine Antworten nicht wirklich verstanden,
aber trotzdem Danke.
Ich habe es jetzt so gelöst:
PHP:
$ergo = mysql_query("SELECT * FROM menu ORDER BY id");
while($sm = mysql_fetch_array($ergo)){
{
switch ($jump) {
case "".$sm['link_url']."": if(file_exists("".$sm['links']."")){require ("".$sm['links']."");} break;
}
}
Es funktioniert einwandfrei
Gruß Loddar1
 
Auch, wenns jetzt geht, würde ich dringend ein gutes Einsteigerbuch etc. zu PHP lesen.
Deine gezeigten Codes funktionieren funktionieren jetzt ja vielleicht,
aber auf jeden Fall sind sie alles andere als ideal.
 
Zurück