MySQL Ergebnis 2x auswerten?


Mike Rofon

Erfahrenes Mitglied
#1
Thema gab es schonmal vor 11 Jahren... damals ohne endgültige Lösung... also nochmal neu:

PHP:
$sql = "SELECT * FROM datenbank WHERE tag = '".$tag."' AND monat = '".$monat."' ORDER BY jahr";
//echo $sql;
$res = mysqli_query($dbi , $sql);
jetzt würd ich gern in zwei getrennten DIVs das Ergebnis auswerten. In der Datenbank gibt es ein Feld "kategorie". Also in dem einen DIV alles zu Kategorie K1 und in weiteren DIVS die Kategorien K2 ff.
PHP:
while ( $row1 = mysqli_fetch_array($res,MYSQLI_ASSOC) )
        {
        if ($row1['kategorie'] == "K1")
            {
            $j = date("Y")-$row1['jahr'];
            echo "<b>" . $j . "</b> " . $row1['header']) . "</br>";
            }
funktioniert aber nur 1x.
Wenn ich jetzt dasselbe mit
PHP:
while ( $row2 = mysqli_fetch_array($res,MYSQLI_ASSOC) )
        {
        if ($row2['kategorie'] == "K2")
            {
            $j = date("Y")-$row2['jahr'];
            echo "<b>" . $j . "</b> " . $row2['header']) . "</br>";
            }
machen will bekomme ich schlichtweg... NIX.
Ich wollte nicht unbedingt für jeden Lauf die DB neu abfragen... dachte 1x reicht und dann $res mehrfach verwenden. Wird $res nach dem ersten FETCH geleert?
Dafür würde auch sprechen, daß wenn ich das WHILE zu Kategorie 1 auskommentiere, dann funktioniert das WHILE zu Kategorie 2.
 

basti1012

Erfahrenes Mitglied
#3
Mal nee Frage .
Würde das nicht so reichen ?
PHP:
$div1=null;
$div2=null;

while ( $row1 = mysqli_fetch_array($res,MYSQLI_ASSOC) ) {
        $j = date("Y")-$row1['jahr'];

        if ($row1['kategorie'] == "K1") {
               $div1.="<b>" . $j . "</b> " . $row1['header'] . "</br>";
        }
        if ($row1['kategorie'] == "K2") {
               $div2.="<b>" . $j . "</b> " . $row1['header'] . "</br>";
        }
}
echo "<div style='border:1px solid red' id='box1'>$div1</div>
      <div style='border:1px solid red' id='box2'>$div2</div>";
 
Zuletzt bearbeitet:

Mike Rofon

Erfahrenes Mitglied
#4
@Sempervivum das heißt, ich muß $res nach einem Durchlauf mit data_seek auf Satz 0 zurückstellen und kann es dann wieder nutzen. Ok, verstanden.
@basti1012 klar geht das. Ich hatte mir nur diesen Programmierstil grad ein wenig abgewöhnt, wobei ich gar nicht mehr genau weiß warum. Wahrscheinlich gings um größere Datenmengen.
Außerdem gings mir ein wenig ums grundsätzliche, ich hab immer so meine Probleme mit der Verarbeitung von Arrays.

Danke Euch zwei.