mehrere mysql_fetch_array anfragen in einen document

ROTTENqRn

Grünschnabel
ich habe ein script in dem 3 zwischen 3 verschiedenen Weingruppen unterschieden wird. Ich möchte jede einzelne Gruppe für sich ausgeben lassen, bekomme allerdings nur bei der letzten anfrage an die datenbank die daten und die anderen weingruppen werden nicht eingeschrieben.

mein code in etwa wie folgt aus:

PHP:
<?php
$db = "meine_db";
$link = mysql_connect ("localhost","user","pw");
if ( ! $link )
        die ("keine verbindung zu MySQL");
mysql_select_db ( $db, $link )
        or die ("konnte Datenbank \"$db\" nicht öffnen:".mysql_error() );

$ergebnis = mysql_query("SELECT * FROM vinum where typ = 'gruppe1'");
print "<table border=0 width=100%>\n";
while ($datensatz1 = mysql_fetch_array ( $ergebnis) )
{
print "<tr>";
print "<td  width=80%><font size=3 face=\"times new roman\"><i>$datensatz1[wein]<br>$datensatz1[beschreibung]</i></font></td>";
print "<td width=* valign=top><font size=3 face=\"times new roman\">$datensatz1[preis] &euro; / Flasche</font></td>";
print "</tr>";
}
print "</table>";

print "<br><b><i><font size=5 face=times new roman>Gruppe2</i></b><br>";


$ergebnis1 = mysql_query("SELECT * FROM vinum where typ = 'gruppe2'");
print "<table border=0 width=100%>\n";
while ($datensatz2 = mysql_fetch_array ( $ergebnis1) )
{
print "<tr>";
print "<td  width=80%><font size=3 face=\"times new roman\"><i>$datensatz2[wein]<br>$datensatz2[beschreibung]</i></font></td>";
print "<td width=* valign=top><font size=3 face=\"times new roman\">$datensatz2[preis] &euro; / Flasche</font></td>";
print "</tr>";
}
print "</table>";

print "<br><b><i><font size=5  face=times new roman>Gruppe 3</i></b><br><br>";

$ergebnis2 = mysql_query("SELECT * FROM vinum where typ = 'gruppe3'");
print "<table border=0 width=100%>\n";
while ($datensatz3 = mysql_fetch_array ( $ergebnis2) )
{
print "<tr>";
print "<td  width=80%><font size=3 face=\"times new roman\"><i>$datensatz3[wein]<br>$datensatz3[beschreibung]</i></font></td>";
print "<td width=* valign=top><font size=3 face=\"times new roman\">$datensatz3[preis] &euro; / Flasche</font></td>";
print "</tr>";
}
?>
</table>

ich weiß das isn bischen viel code, aber ich hoffe das ist io. ich hatte schon nen funzendes script dafür aber das hab ich leider vor einiger zeit gelöscht und jez weiß ich nichmehr wie ich das besser gelöst habe.
 
Gibt es mehrere Einträge pro Gruppe?

Wenn ja, dann mach es so:
PHP:
<?php
//Connecten & DB auswählen...

for ($i=1; $i<=3; $i++) {
  $sql_result = mysql_query("SELECT * FROM `vinum` WHERE `typ`='gruppe".$i."' ORDER BY `typ` ASC");
  ?>
  <table border="0" width="100%">
  <?php
  while ($row = mysql_fetcharray($sql_result)) {
  ?>
  <tr>
    <td  width="80%">
      <font size="3" face="times new roman"><i>
      <?php echo $row["wein"] ?>
      <br>
      <?php echo $row["beschreibung"]?>
      </i></font>
    </td>
    <td width="20%" valign="top">
      <font size="3" face="times new roman">
      <?php echo $row["preis"] ?> &euro; / Flasche
      </font>
    </td>
  </tr>
  <?php
  }
  ?>
  </table>
  <br><b><i>
  <font size="5" face="times new roman">Gruppe<?php echo $i ?></font>
  </i></b><br>
  <?php
  }
}


Waren auch ein paar HTML-Fehler in deinem Script.
 
jo danke für die schnelle antwort, sieht nicht schlecht aus dein script, allerdings hab ich leider nich solche namen für den typ verwendet wie ich hier in etwa angegeben habe. habe die typen 'bianco' 'rosato' und 'rosso'. gibts da vllt irgendne möglichkeit das mit define oder so doch mit diesem script hinzubekommen?

edit: ich glaub ich bin dumm ^^ ... ich mache dann einfach ne if schleife mit abfrage welchen wert i hat und setze demnach den typ. gibs vllt sonst noch ne performantere möglichkeit?
 
Zuletzt bearbeitet:
Logisch, ist auch recht einfach und geht sogar ohne Define :)
PHP:
for ($i=1; $i<=3; $i++) {
Durch das ersetzen:
PHP:
$typearray = array("bianco", "rosato", "rosso");
foreach ($typearray as $i) {
Und entsprechen auch die Anzeigen und Abfragen ändern:
PHP:
Zeile 5: "SELECT * FROM `vinum` WHERE `typ`='".$i."' ORDER BY `typ` ASC"

Zeile 30: ... roman"><?php echo $i ?></font>


//Edit: Das Array $typarray kannst du beliebig, und ohne was am Rest vom Code ändern zu müssen, bearbeiten.
 
ich bekomme ganz am ende des scripts nen parse error
PHP:
</i></b><br>
  <?php
in der zeile mit <?php ist der parse-error. danach hast du am ende zwar kein ?> eingetragen, das habe ich dann aber ersetzt, geht dennoch nicht :/
 
Ups, sorry.
Die letzten Zeilen müssen nicht so
PHP:
  <?php
  }
}
sondern so aussehen:
PHP:
  <?php
  }
?>
 
ok ich habs so probiert, habe aber immernoch net parse error, daraufhin hab ich nochma genau reingeschaut und gesehen das die letzte schleife an sich unsinnig sein müsste...und sie rausgenommen. jetzt bekomme ich keinen parse error mehr aber auch keinen inhalt der mysql angezeigt, ich werde aber noch überprüfen ob die auch wirklich nochn inhalt hat...is nämlich länger her das die genutzt wurde
 
Zurück