Essensplan

Hiob

Mitglied
Halle Leute,
Ich steh mal wieder auf dem Schlauch. Naja was heisst auf dem Schlauch. Ich weiss, dass das Programm so wie ich es im Moment habe absolut nicht funktionieren kann. Aber ich hab gerade eine Blockade. Somit wollte ich euch fragen, ob Ihr spontan die Lösung wisst.
Ich will eine Funktion schreiben, die aus meiner Datenbank, Tabelle "menu", aus den Unterordnern "monday,tuesday....,friday" die eingegebenen Menu ausliest und alle Menu auf einer neuen Seite anzeigt. Sozusagen ein kompletter Essensplan der Woche ausgibt.
PHP:
$weekday=[monday], [tuesday], [wednesday], [thursday], [friday];
$mo="SELECT menu1,menu2,menu3,menu4,menu5 FROM $weekday";
$result=mysqli_query($db,$mo);
while($abt=mysqli_fetch_array($result)){

echo '<table border="1">';
    echo'<tr>';
        echo'<colspan="3"><b>Monday Menu</b>';
    echo'</tr>';
    echo'<tr>';
        echo'<td width="30px"><input type="checkbox" name="choose style="vertical-align:middle;""></td>';
        echo'<td width="40px">M1</td>';
        echo"<td><b>$abt[menu1]</b></td>";
    echo'</tr>';
    echo'<tr>';
        echo'<td><input type="checkbox" name="choose"></td>';
        echo'<td>M2</td>';
        echo"<td><b>$abt[menu2]</b></td>";
    echo'</tr>';
    echo'<tr>';
        echo'<td><input type="checkbox" name="choose"></td>';
        echo'<td>M3</td>';
        echo"<td><b>$abt[menu3]</b></td>";
    echo'</tr>';
    echo'<tr>';
        echo'<td><input type="checkbox" name="choose"></td>';
        echo'<td>M4</td>';
        echo"<td><b>$abt[menu4]</b></td>";
    echo'</tr>';
    echo'<tr>';
        echo'<td><input type="checkbox" name="choose"></td>';
        echo'<td>M5</td>';
        echo"<td><b>$abt[menu5]</b></td>";
    echo'</tr>';
echo'</table>';
echo'<br />';
Wenn ich in '$mo' das '$weekday' ersetze durch "monday"; gibt die Tabelle das Menü für monday aus. Ich habe nun aber keine Lust alles noch 4 weitere Male zu kopieren. Ist ja auch unnötig. Die Funktion die mir hier helfen kann fällt mir einfach nicht ein. Vielleicht sollte ich Feierabend machen :)
Also nochmal: Das "$weekday" ist falsch. Das ist mir klar. Jedoch habe ich es drin gelassen, damit es vielleicht hilft meinen Gedankengang zu verstehen.
Danke.
 
Hallo,

mal von der Tabellenstruktur abgesehen (ist redundant und kann man sicherlich viel einfacher lösen, ganz zu schweigen von den Normalformen):

SQL:
SELECT menu1,menu2,menu3,menu4,menu5 FROM monday UNION
SELECT menu1,menu2,menu3,menu4,menu5 FROM tuesday UNION
SELECT menu1,menu2,menu3,menu4,menu5 FROM wednesday UNION
SELECT menu1,menu2,menu3,menu4,menu5 FROM thursday UNION
SELECT menu1,menu2,menu3,menu4,menu5 FROM friday;

Oder als PHP-Funktion:
PHP:
function getSQL() {
  $weekdays = array("monday", "tuesday", "wednesday", "thursday", "friday");
  $sql = '';
  
  for($i=0; $i < count($weekdays); $i++) {
    if($sql != '') {
      $sql .= ' UNION ';
    }
    $sql .= 'SELECT menu1,menu2,menu3,menu4,menu5 FROM ' . $weekdays[$i];
  }
  return $sql;
}

Gruß
BK
 
Zuletzt bearbeitet:
Danke für die schnelle und hilfreiche Antwort.
Mir ist gerade noch was aufgefallen. Eigentlich läuft alles perfekt. Bis auf die Kleinigkeit das über den Ausgegebenen Tabellen immer "Monday Menu" steht. Wie kann ich denn das auf die jeweiligen Wochentage anpassen? Hab schon ne Schleife versucht allerdings hat das zu mehr Chaos geführt als Klarheit zu bringen. Hab es auch schon mit ner Variablen versucht aber das ging auch nicht. Ich glaub ich mach Feierabend. Bis morgen. Dank euch.
 
Zuletzt bearbeitet:
Hi,

folgendes sollte seinen Zweck erfüllen:
PHP:
$map["monday"] = "Montag";
$map["tuesday"] = "Dienstag";
$map["wednesday"] = "Mittwoch";
// usw...

$tag = "tuesday";   // Hier steht der Wochentag von der SQL Abfrage

echo $map[$tag];  // Gibt "Dienstag" aus.

Ausserdem würde ich die Ausgabe von Variablen ausserhalb der "" machen, das kann sonst unangenehme Nebenwirkungen haben und ist meist auch schwer zu finden.

PHP:
// Falsch:
echo"<td><b>$abt[menu2]</b></td>";

// Richtig:
echo"<td><b>" . $abt["menu2"] . "</b></td>";

Gruß
BK
 
Hallo Leute.
Danke für die Hilfe.
Eins ist mir allerdings noch nicht klar. Das mit der Wochentagsausgabe. Ich möchte über jeder Tabelle dann den " 'Wochentag' Menu" stehen haben so wie hier
PHP:
echo '<table border="1">';
    echo'<tr>';
        echo'<colspan="3"><b>Monday Menu</b>';
    echo'</tr>';
Hier steht nun leider immer Monday Menu. Über jeder Tabelle soll nun der richtige Wochentag stehen.
Ich versteh bzw. kapier nicht wie mir das $map und $tag helfen soll. Ich muss ja $tag immer manuell vergeben oder? Und daher weiss ich nicht wie ich das in den Code bekommen soll.
Danke auch für die Hilfe mit den Anführungszeichen.Hab ich gleich umgesetzt und mir gemerkt. :)
 
Zuletzt bearbeitet:
Zurück