Gästebucheinträge absteigend ausgeben?

tg-ler

Grünschnabel
Hi leutz!

hab ein prob: ich hab mein Gästebuch geschrieben, in PHP, unter anderem mit Anleitung aus einem Tutorial. Jetzt möchte ich noch, dass der letzte eintrag in der DB als erstes angezeigt wird, der erste dann als letztes.
so sieht mein Script bis jetzt aus:

PHP:
<?php
$proseite = 10;
$db = mysql_connect();

$result = mysql_db_query("gb", "select * from eintrag ");

$num = @mysql_num_rows($result);

$seiten=ceil($num/$proseite);

$page = $_GET['page'];

$start = ($page-1)*$proseite;


mysql_select_db ("gb");
$result = mysql_query("select * from eintrag LIMIT $start,$proseite",$db);

$ende = $start +$proseite;

if($ende>$num){
  $ende = $num;
  }

echo "Zur Zeit sind $num Einträge im Gästebuch <br /> \n";
echo "Seite $page - Einträge von $start bis $ende <br /> \n<br><br>";

include("eintragen.php");
echo "<br><br>";

if ($_GET['page']>1) {
    $i=$_GET['page']-1;
    echo "<a href=\"aufruf1.php?page=".$i."\">&lt;previous</a>&nbsp;";
}
for($i=1; $i<=$seiten; $i++) {
    if ($i==$_GET['page']) {
        echo $i."&nbsp;";
    }
    else {
        echo "<a href=\"aufruf1.php?page=".$i."\">$i</a>&nbsp;";
    }
}
if ($_GET['page']<$seiten) {
    $i=$_GET['page']+1;
    echo "<a href=\"aufruf1.php?page=".$i."\">next&gt;</A>";
}
echo "<br><br>";

while ($row = mysql_fetch_array($result)) {
       $name = $row['name'];
       $email = $row['email'];
       $hp = $row['homepage'];
       $eintrag = $row['eintrag'];

       echo "<table>";
       echo "<tr><td>Name: </td><td>$name</td></tr>";
       echo "<tr><td>Email: </td><td><a href='mailto:$email'>$email</a></td></tr>";
       echo "<tr><td>Homepage: </td><td><a href='$hp'>$hp</a></td></tr>";
       echo "<tr><td>Eintrag:</td><td>$eintrag</td></tr>";
       echo "</table>";
       echo "<br><br>";
       }

if ($_GET['page']>1) {
    $i=$_GET['page']-1;
    echo "<a href=\"aufruf1.php?page=".$i."\">&lt;previous</a>&nbsp;";
}
for($i=1; $i<=$seiten; $i++) {
    if ($i==$_GET['page']) {
        echo $i."&nbsp;";
    }
    else {
        echo "<a href=\"aufruf1.php?page=".$i."\">$i</a>&nbsp;";
    }
}
if ($_GET['page']<$seiten) {
    $i=$_GET['page']+1;
    echo "<a href=\"aufruf1.php?page=".$i."\">next&gt;</A>";
}

mysql_close($db);
?>

[Johannes Röttger]Ich wünsche mir eine exzessivere Benutzung der PHP- und CODE-Tags[/Johannes Röttger]

Für Hilfe danke ich schon mal im voraus!
 
Zuletzt bearbeitet von einem Moderator:
"absteigend ausgeben" ist natürlich eine sehr präzise Aussage, daher hab die Einträge der ID nach absteigend sortiert:
PHP:
<?php
  $proseite = 10;
  $db = mysql_connect();
  mysql_select_db("gb");

  $result = mysql_query("SELECT COUNT(*) AS `anzahl` FROM `eintrag`");
  list($num) = mysql_fetch_array($result, MYSQL_ASSOC);
  $seiten = ceil($num/$proseite);
  $page = $_GET['page'];
  $start = ($page-1)*$proseite;
  $ende = $start + $proseite;
  if( $ende > $num ) {
    $ende = $num;
  }

  echo "Zur Zeit sind $num Einträge im Gästebuch <br /> \n";
  echo "Seite $page - Einträge von $start bis $ende <br /> \n<br><br>";

  include("eintragen.php");
  echo "<br><br>";

  if( $_GET['page'] > 1 ) {
    $i = $_GET['page']-1;
    echo "<a href=\"aufruf1.php?page=".$i."\">&lt;previous</a> ";
  }
  for($i=1; $i<=$seiten; $i++) {
    if( $i == $_GET['page'] ) {
      echo $i." ";
    } else {
      echo "<a href=\"aufruf1.php?page=".$i."\">$i</a> ";
    }
  }
  if( $_GET['page'] < $seiten ) {
     $i = $_GET['page']+1;
     echo "<a href=\"aufruf1.php?page=".$i."\">next&gt;</A>";
  }
  echo "<br><br>";

  $result = mysql_query("SELECT * FROM `eintrag` ORDER BY `id` DESC LIMIT ".$start.", ".$proseite);
  while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
    echo "<table>";
    echo "<tr><td>Name: </td><td>$row['name']</td></tr>";
    echo "<tr><td>Email: </td><td><a href='mailto:$row['email']'>$row['email']</a></td></tr>";
    echo "<tr><td>Homepage: </td><td><a href='$row['hp']'>$row['hp']</a></td></tr>";
    echo "<tr><td>Eintrag:</td><td>".htmlspecialchars($row['eintrag'])."</td></tr>";
    echo "</table>";
    echo "<br><br>";
  }

  if( $_GET['page'] > 1 ) {
    $i = $_GET['page']-1;
    echo "<a href=\"aufruf1.php?page=".$i."\">&lt;previous</a> ";
  }
  for($i=1; $i<=$seiten; $i++) {
    if( $i == $_GET['page'] ) {
      echo $i." ";
    } else {
      echo "<a href=\"aufruf1.php?page=".$i."\">$i</a> ";
    }
  }
  if( $_GET['page'] < $seiten ) {
    $i = $_GET['page']+1;
    echo "<a href=\"aufruf1.php?page=".$i."\">next&gt;</A>";
  }
  mysql_close($db);
?>
 
Ich habe mir jetzt den Code nicht angeschaut :-)

Im Prinzip kannst du dies auch so machen.
Du liest alle ID`s in ein Array ein. Diese kannst du dann per array_reverse() umdrehen, sodass die höchsten ID`s zuerst ausgegeben werden. Man sollte die Sache einfach nicht so komplex anpacken.

In diesem Sinne
 
Zurück