Datenausgabe?

tomko

Grünschnabel
Moin,

als absoluter PHP/MySQL-Newbie habe ich Probleme mit einer Datenbankabfrage. Vielleicht ist es nur eine Kleinigkeit, für mich aber - trotz diverser Fachliteratur - ein unüberwindbares Hindernis.

Ich bastel an einer Seite, die Speise-Angebote verschiedener Restaurants auflistet. Das nachfolgende Script arbeitet auch einwandfrei, solange nur ein Tagesgericht angeboten wird.

PHP:
<?php
include("dbv.php");
$preistag = array (
        0 => array(Sonntag1, PreisSo1),
        1 => array(Montag1, PreisMo1),
        2 => array(Dienstag1, PreisDi1),
        3 => array(Mittwoch1, PreisMi1),
        4 => array(Donnerstag1, PreisDo1),
        5 => array(Freitag1, PreisFr1),
        6 => array(Samstag1, PreisSa1));
$tag = date("w");
$gericht = $preistag[$tag][0];
$preis = $preistag[$tag][1];
$abfrage="SELECT " . $gericht. ", " . $preis . ", Anbieter, url FROM anbieter WHERE Ort='Hamburg'";
$ergebnis=mysql_query($abfrage);
   while($row = mysql_fetch_object($ergebnis))
      {
	  echo "<a href='$row->url'>";
	  echo $row->Anbieter;
	  echo "</a>\n";
	  echo "<br>";
	  echo $row->$gericht ." f&uuml;r ". $row->$preis ."<br><br>";
	  }
?>


Das Problem liegt darin, dass einige Restaurants mehrere Tagesgerichte (bis zu 4) anbieten. Angegeben sind die weiteren Gerichte in der Datenbank mit z.B. Sonntag2, PreisSo2 usw.

Diese sollen so aufgelistet werden:

Restaurant
Tagesricht xyz für x,xx €
Tagesricht xyz für x,xx €


Hinzu kommt, dass an einigen Tagen kein Stammessen angeboten wird (Ruhetag). Dann soll unter dem Restaurantnamen lediglich die Zeile erscheinen: "Heute bieten wir kein Tagesgericht an." Zudem soll dann natürlich auch das Wort "für" verschwinden.

Leider schaffe ich es nicht, diese Daten in einer vernünftigen Art und Weise ausgeben zu lassen.
Ich würde mich freuen, wenn mir jemand helfen würde.

Vielen Dank.

Gruß, Tomko
 
Ich würde es mal so versuchen, dass du alle 4 Gerichte und Preise und so abfragst und danach erst mit PHP prüfst wieviele Gerichte es hat...

Code:
<?php
while ..........
   {
   If (query["Gericht1"] != "")
           {
                 echo '<tr>blablabla</tr>';
           }
  If (query["Gericht2"] != "")
           {
                 echo '<tr>blablabla</tr>';
           }
  If (query["Gericht3"] != "")
           {
                 echo '<tr>blablabla</tr>';
           }
   }
?>

kannst du dir etwa vorstellen wie ich es meine? Ansonsten fragst du einfach noch einmal. :-)
 
ich würde es von der struktur anders lösen.
Ich würde in einer Tabelle die Restaurants speichern (jedes bekommt per Auto_Increment wert der DB ein eindeutige ID).
In einer weiteren Tabelle stehen die Tagesgerichte von jedem Restaurant.
Jedes Tagesgericht hat ebenfalls eine eigene ID und zu dem steht in diesem Eintrag die ID des Restaurants das dieses Gericht anbietet, sowie Preis und der Wochentag.

Dann kannst du mit einem Join der beiden Tabellen on restaurant.id = gerichte.restaurant_id where gerichte.tag = "tag_um_den_es_geht" alles auslesen.
 
Vielen Dank euch beiden für die megaschnellen Antworten
Ich werde versuchen, das so zu realisieren (hoffe, dass es klappt).
Falls nicht, werde ich wohl erneut um Hilfe schreien müssen.

Nochmals vielen Dank.

Gruß, Tomko
 
Zurück