php While Hilfe


#1
Hallo User´s,

ich bin dabei eine Website zu erstellen ... nun mein problem.

Ich versuche eine News ausgabe auf der Frontpage zu erstellen ... ich hab es mittlerweile geschaft das die news ausgelesen wird und ein Link dazu erstellt wird ... mein problem ist nun es wird mir nur eine News angezeigt ... Egal welche While variante ich versuche entweder kriege ich fehler oder oder weiße seite ... könnt ihr mir vllt helfen ...

Hier mein Codeschnippsel

PHP:
<?php
               $ergebnis = mysqli_query($DBCON, "SELECT * FROM `articles`");
               $zut = mysqli_fetch_array($ergebnis);
               $id = $zut['article_id'];
               $titel = $zut['article_titel'];
               $time = $zut['article_timestamp'];
               while ($row = mysqli_fetch_array($ergebnis))
               {
                   echo "- <a href=/news.php?id=$id\">$titel</a> <small>veröffentlicht am ";
                   echo date('d. M Y', $time);
                   echo "</small>";
                   echo "<br />";
               }
               ?>
 

Yaslaw

n/a
Moderator
#2
Kleiner Logikfehler deinerseits.
Du liest die Variablen vor dem while aus.
So sollte es eher funktionieren (beim href habe ich noch ein " hinzugefügt)
PHP:
<?php
    $ergebnis = mysqli_query($DBCON, "SELECT * FROM `articles`");
    while ($row = mysqli_fetch_array($ergebnis)){
        $id = $row['article_id'];
        $titel = $row['article_titel'];
        $time = $row['article_timestamp'];
        echo "- <a href=\"/news.php?id=$id\">$titel</a> <small>veröffentlicht am ";
        echo date('d. M Y', $time);
        echo "</small>";
        echo "<br />";
    }
?>
Hier noch 2 elegantere Versionen. Die mit sprintf() ist mMn die Beste
PHP:
<?php
    $ergebnis = mysqli_query($DBCON, "SELECT * FROM `articles`");
    while ($row = mysqli_fetch_array($ergebnis)){
        $time = date('d. M Y', $row['article_timestamp']);
        echo "- <a href='/news.php?id={$row['article_id']}'>{$row['article_titel']}</a> <small>veröffentlicht am {$time}</small><br />";
    }
?>
PHP:
<?php
    $ergebnis = mysqli_query($DBCON, "SELECT * FROM `articles`");
    $pattern = "- <a href='/news.php?id=%s'>%s</a> <small>veröffentlicht am %s</small><br />";
    while ($row = mysqli_fetch_array($ergebnis)){
        echo sprintf($pattern, $row['article_id'], $row['article_titel'], date('d. M Y', $row['article_timestamp']));
    }
?>
 
#3
Kleiner Logikfehler deinerseits.
Du liest die Variablen vor dem while aus.
So sollte es eher funktionieren (beim href habe ich noch ein " hinzugefügt)
PHP:
<?php
    $ergebnis = mysqli_query($DBCON, "SELECT * FROM `articles`");
    while ($row = mysqli_fetch_array($ergebnis)){
        $id = $row['article_id'];
        $titel = $row['article_titel'];
        $time = $row['article_timestamp'];
        echo "- <a href=\"/news.php?id=$id\">$titel</a> <small>veröffentlicht am ";
        echo date('d. M Y', $time);
        echo "</small>";
        echo "<br />";
    }
?>
Hier noch 2 elegantere Versionen. Die mit sprintf() ist mMn die Beste
PHP:
<?php
    $ergebnis = mysqli_query($DBCON, "SELECT * FROM `articles`");
    while ($row = mysqli_fetch_array($ergebnis)){
        $time = date('d. M Y', $row['article_timestamp']);
        echo "- <a href='/news.php?id={$row['article_id']}'>{$row['article_titel']}</a> <small>veröffentlicht am {$time}</small><br />";
    }
?>
PHP:
<?php
    $ergebnis = mysqli_query($DBCON, "SELECT * FROM `articles`");
    $pattern = "- <a href='/news.php?id=%s'>%s</a> <small>veröffentlicht am %s</small><br />";
    while ($row = mysqli_fetch_array($ergebnis)){
        echo sprintf($pattern, $row['article_id'], $row['article_titel'], date('d. M Y', $row['article_timestamp']));
    }
?>
Vielen vielen dank für deine Hilfe ... Manchmal denkt man einfach zu viel und dann passieren fehler :D ... dann gehe ich mal an die nächsten probleme -.-