fehler beim seiten generieren

Daveman

Grünschnabel
ich habe mal versucht 1 code den ich aus der tutorial ecke habe, mit meinen zu verbinden, und zwar soll der aus der DB die einträge ausgeben, aber geordnet und da sollte ein limit rein. ich habe 14 einträge in der db und hab mal ein limit von 2 gesetzt, nur rechnet er die seiten falsch.

http://www.melli-dave.de/daveman/index.php?go=hmangas/a&page=0

hier könnt ihr das selber sehen.. der zeigt an 0 1 nächste seite an, obwohl das mehr sein sollten.. aber wenn man den link ändert

http://www.melli-dave.de/daveman/index.php?go=hmangas/a&page=3
http://www.melli-dave.de/daveman/index.php?go=hmangas/a&page=4

geht das, der macht nur unten keine verweise dorthin. der code dazu ist

PHP:
<?php

$host = "xxx";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$tabelle ="xxx";
$proseite=2;

$db = mysql_connect ($host, $user, $password);

$start=$page * $proseite;
$sql = "select * from $tabelle order by name Limit $start,$proseite";

$result = mysql_db_query ($dbname, $sql, $db);
$fertig = mysql_query($sql,$db);
$number = mysql_num_rows($fertig);
$seiten=floor($number/$proseite);

$ende = $start + $proseite;
if ($ende>$number) { $ende = $number; }


 while ($ausgabe = mysql_fetch_array ($result))
  {
  echo'

<table width="100%" border="0" cellpadding="0" cellspacing="0" height="10">
  <tr>
    <td width="271" height="30">
      <a href=http://www.melli-dave.de/daveman/index.php?go=output&id='.$ausgabe[id].'>'.$ausgabe[name].'</a>
    </td>
    <td width="271" height="30">&nbsp;</td>
    <td width="271" height="30">
      <div align="center"></div>
    </td>
    <td width="272" height="30">&nbsp;</td>
  </tr>
</table>';

}

echo "<br><br><br>";

if ($page>0) {
$i=$page-1;
echo "<A HREF=\"http://www.melli-dave.de/daveman/index.php?go=hmangas/a&page=$i\">Voherige Seite</A>&nbsp";
}
for($i=0; $i<=$seiten; $i++) {
if ($i==$page) {
echo $i."&nbsp;";
}
else {
echo "<A HREF=\"http://www.melli-dave.de/daveman/index.php?go=hmangas/a&page=$i\">$i</A>&nbsp;";
}
}
if ($page<$seiten) {
$i=$page+1;
echo "<A HREF=\"http://www.melli-dave.de/daveman/index.php?go=hmangas/a&page=$i\">Nächste Seite</A>";
}

mysql_close ($db)

?>

Ich hoffe ihr könnt mir dabei helfen, das er das richtig anzeigt. Thx im vorraus.

Cya
Daveman

achso, wenn nicht zu schwierig, kann man dann noch einstellen, das er nur alle daten rausliest die mit a anfangen?
 
Zuletzt bearbeitet:
hi!

also ich hab mir das jetz nich ganz genau durchgelesen und angeschaut, aber mir is was aufgefallen. und zwar liest du ja nur die einträge aus, die du haben willst. das weißt aber gar nicht, wieviele datensätze insgesamt in der datenbank sind. die musst du vorher noch auslesen.

du musst also erstmal die anzahl aller datensätze in der datenbank auslesen. das machst du mit "SELECT COUNT(*) AS amount FROM table" da kannst du dann auch noch ne WHERE-bedingung hinten anknüpfen, so dass auch nur alle einträge die mit 'a' anfangen hast. sieht dann in etwa so aus:
Code:
SELECT COUNT(*) AS amount FROM table WHERE spalte LIKE 'a%'

aus dem ausgelesenen wert erechnest du dann die anzahl der seiten. ich glaube in dem tut is das bissle falsch gemacht. jedenfalls war's das als ich mal reingeschaut hatte. nimm auf alle fälle die funktion ceil(). die rundet immer auf. daraus hast du dann die anzahl der seiten.

ich hoffe, des hilft einigermaßen weiter und is auch richtig :). kann ggf. auch mal meinen code posten.
matt:)

[edit] das WHERE-statement musst du natürlich auch in den anderen SQL-string einbauen, nich vergessen! [/edit]
 
also, das isch jetz mein code. hier wird jetz erstmal alles gemacht was für die seitennavigation gebraucht wird...
PHP:
    $users = new query($SQL, "SELECT COUNT(*) AS amount FROM useronline");
    if ($users) {
      $users->fetch();
      $userscnt = $users->field('amount');
      $users->free();
    } else $userscnt = 0;
    $pages = ceil($userscnt/$perpage);
    if (!$page) $page = "1";
    $beginning = ($page -1) * $perpage;
    $end = $beginning + $perpage;
    if ($end > $userscnt) { $end = $userscnt; }
    if ($page > 1) {
      $i = $page -1;
      $navi = "<a href=\"profil.php?cat=users&mdl=online". $queryadd ."&page=". $i ."\">zur&uuml;ck</a>&nbsp;&nbsp;";
    }
    for($i = 1; $i <= $pages; $i++) {
      if ($i == $page) {
        $navi .= $i ."&nbsp;";
      } else {
        $navi .= "<a href=\"profil.php?cat=users&mdl=online". $queryadd ."&page=". $i ."\">". $i ."</a>&nbsp;";
      }
    }
    if ($page < $pages) {
      $i = $page +1;
      $navi .= "&nbsp;<a href=\"profil.php?cat=users&mdl=online". $queryadd ."&page=". $i ."\">weiter</a>";
    }
so; nachdem du die seitennavi hast, liest du nun den eigentlichen content aus. ich hier halt die user die grad online sind.
PHP:
    $onlineuserids = new query($SQL, 'SELECT user_id FROM useronline LIMIT '. $beginning .','. $perpage);
    if ($userscnt <= $perpage) $showedusers = $userscnt;
    else $showedusers = $perpage;
    $str = $beginning+1;

sorry dass das jetz schlecht erklärt isch und so, aber ich hab's grad ziemlich eilig und hab des jetz nur kurz zusammen geschustert. ich hoffe, du kommst damit einigermaßen klar, ansonsten muss ich mir nochmal zeit nehmen und das mal gescheit erklären :)

matt:)
 
Zurück