Seite 1 von 1

Ausgabe der Daten in einer Unterschriftenliste.

Verfasst: 09.02.2005 14:06
von derd
Hallo,

ich habe eine Unterschriftenliste http://derd.rof-aue.de/unterschriften .
Das Problem ist das die alten einträge als erste angezeigt werden.

Gibt es ein möglichkeit die Datenbank so auszulesen das die neuen Einträge als erstes angezeigt werden?

Die Liste wird so ausgebeben

Code: Alles auswählen

<!-- ########## Anzeigen der Liste -->

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY background="http://derd.ath.cx/grafik/back.jpg" text="#004080" link="#004080" vlink="#004080" alink="#004080">
<table border="0" cellpadding="2" align="center" bgcolor="#FFCC33" height="0">
    <tr bgcolor="#FFFFFF"> 
      <td height="31"><a href="http://titanic-museum-germany.de/" target="_blank"><img src="http://derd.157046.vserver.de/phpBB2/templates/subSilver/images/logo_phpBB.gif" width="177" height="67" border="0"></a></td>
    </tr>
  </table><br><br><br>
<?

$db = mysql_connect("$mysql_host","$mysql_user","$mysql_pass") or die ( "<H3>Datenbankserver nicht erreichbar oder Verbindungsdaten nicht korrekt.</H3>");
mysql_select_db("$mysql_db",$db) or die ( "<H3>Datenbank-Auswahl fehlgeschlagen.</H3>");

$r = mysql_query("SELECT COUNT(id) FROM $mysql_tabelle",$db);
$total = @mysql_result($r,0);

$limit = 25;

if (!isset($page) || !intval($page))
 { $page = 1; }

if (!$total)
 { $total_pages = 0; }
elseif ($total <= $limit)
 { $total_pages = 1; }
elseif ($total % $limit == 0)
 { $total_pages = $total / $limit; }
else
 { $total_pages = ceil($total / $limit); }

if ($page > $total_pages)
 { $page = 1; }

if (!$total)
 { $first = 0; }
else
 { $first = $limit * $page - $limit + 1; }

if (!$total)
 { $last = 0; }
elseif ($page == $total_pages)
 { $last = $total; }
else
 { $last = $limit * $page; }

$offset = $limit * $page - $limit;
$paging_next = "&raquo;";
$paging_back = "&laquo;";
$range = "5";

$offset = $offset;

$html = "";

if ($total_pages > 1)
{
 $page_back = $page - 1;
 $page_next = $page + 1;

 if ($page_back > 0) {
   $html .= "<a href=\"?page=1\">Erste Seite</a>&nbsp;&nbsp;";
   $html .= "<a href=\"?page=$page_back\"><<<</a>&nbsp;&nbsp;";
  }

  for ($page_num = 1; $page_num <= $total_pages; $page_num++) {
   if ($page_num >= ($page-$range) && $page_num <= ($page+$range))
    {
     if ($page == $page_num)
      { $html .= "<b>$page_num</b>&nbsp;&nbsp;"; }
     else
      { $html .= "<a href=\"?page=$page_num\">$page_num</a>&nbsp;&nbsp;"; }
     }
   }
 
     if ($page_next <= $total_pages)
      { 
       $html .= "<a href=\"?page=$page_next\">>>></a>&nbsp;&nbsp;";
       $html .= "<a href=\"?page=$total_pages\">Letzte Seite</a>";
      }
  }

$res = mysql_query("SELECT *, DATE_FORMAT(datum,'%d.%m.%Y') as wann FROM $mysql_tabelle LIMIT $offset,$limit",$db);
$num = mysql_num_rows($res);

?>
<table cellspacing="0" cellpadding="0" width="50%" align="center">
  <tr> 
    <td>
      <p><b><u><font color="#FF0000">Wofür unterschreibe ich?</font></u></b><br>
      </p>
      <p><b>Mit Ihrer Unterschrift bringen Sie ihre persönliche Befürwortung der 
        <a href="zielsetzung.htm" target="_blank">Zielsetzung</a> dieser Initiative 
        zum Ausdruck.<br>
        Ihre E-Mail wird weder veröffentlicht noch an dritte weitergegeben.<br>
        Nach dem erfolgreichen Ende der Initiative werden Ihre Daten gelöscht. </b></p>
    </td>
  </tr>
</table><br><br>
<center><a href="?a=eintragen"><b><font size="4" color="#FF0000">Hier eintragen</font></b></a><p></center>

<table width=50%  align=center border=1 cellpadding="2" cellspacing="0" bordercolorlight="#FFCC33" bordercolordark="#FFCC33" bgcolor="#FFFFFF">

<?

while ($daten = mysql_fetch_array($res))
{
?>
<tr>
<td><?php echo $daten[vorname] ?> <?php echo $daten[nachname] ?></td>
<td><?php echo $daten[ort] ?></td>
<td><?php echo $daten[wann] ?></td>
</tr>

<?

}

?>

</table><p>

<?

echo "<center>Einträge: <b>$total</b> auf <b>$total_pages</b> Seite(n). Zeige Eintrag <b>$first</b> bis <b>$last</b>.<p></center>";
echo "$html";

?>

</BODY>
</HTML>

<!-- ########## Anzeigen der Liste -->
Ich habe schon vieles versucht. Aber leider mehr versaut als das´sich etwas geändert hat. Vieleicht kann mir ja einer von euch helfen :P

Bye derd

Verfasst: 09.02.2005 14:15
von Blutgerinsel
Wie wärs mit Table sortieren ?

Ich seh nirgendwo ein Order By......
Und da es dieses nicht gibt ist default die Sortierung aufsteigend sprich ascending (asc) aktiv.......

Gegenteil von asc ist desc (descending).....

Aber das ist alles schön im MySQL Manual z.B. erklärt sofern man sich die mühe macht................

Verfasst: 09.02.2005 14:55
von derd
Also Tabellen Sortieren habe ich probiert aber er behällt die Einstellungen nicht bei.

Ich habe mich Extra belesen:

http://dev.mysql.com/doc/mysql/de/sorting-rows.html

Ich habe den Befehl ausgeführt:

Code: Alles auswählen

SELECT `id` , `datum` , `nachname` , `vorname` , `ort` , `email` 
FROM `aktion` 
WHERE 1 
ORDER BY `id` DESC  LIMIT 0 , 30

Ich suche immer erst die Manuell durch eh ich Fragen stelle. Meist komme ich weiter. Nur bei dieser kleinen Unterschriftenliste. Meist liegt ja der Hund im Detail begraben :P

EDIT:

Irgendwie muss also noch die Funktion ORDER BY id DESC (in der Art)
eingebaut werden aber wo und wie. Das ist die Große Frage :o :roll: . Bisher bekomme ich nur parse error.
Vieleicht hat ja jemand nen Tip bzw Denkanstoß.

Verfasst: 09.02.2005 15:55
von Blutgerinsel
ehm du willst das Datum chronologisch ordnen. Aber du sortierst nach der id die fortlaufend ist aber überhaupt gar nicht nach dem Datum was im eigentlichen Sinne das Alter des Datensatzes angibt.......

Demzufolge ist die jetzige Reihenfolge reiner Zufall.....

Verfasst: 09.02.2005 18:35
von Pyramide
Blutgerinsel hat geschrieben:Ich seh nirgendwo ein Order By......
Und da es dieses nicht gibt ist default die Sortierung aufsteigend sprich ascending (asc) aktiv.......
ohne order by wird gar nicht sortiert. Bei MySQL kommen die Ergebnisse dann i.d.R. in der Reihenfolge, in der sie eingefügt wurden. Aber bei anderen DBMS kann es schon ganz anders aussehen.

Verfasst: 09.02.2005 19:31
von Blutgerinsel
Ja Chef, hab richtig gedacht aber falsch beschrieben.....:wink:

BTW: Zum Glück liest hier Jemand noch mit.....

<ot>
und nu lass ich mich mit Hustensaft vollaufen
</ot>

Verfasst: 17.02.2005 00:18
von derd
Hallo,

das Problem ist gelöst.

Ein bekannter hat es mir umgeschriben. Der auch die Unterschriftenliste geschrieben hat.

gesucht:

Code: Alles auswählen


$res = mysql_query("SELECT *, DATE_FORMAT(datum,'%d.%m.%Y') as wann FROM 
Ersetzt durch:

Code: Alles auswählen

$res = mysql_query("SELECT *, DATE_FORMAT(datum,'%d.%m.%Y') as wann FROM $mysql_tabelle ORDER BY datum DESC LIMIT $offset,$limit",$db);
Bye derd