Sorry...schon wieder Blätterfunktion...

tittli

Erfahrenes Mitglied
...aber komme einfach nicht weiter. Habe für mein Gästebuch das Tutorial verwendet. Nun werden zwar die Links unten schön ausgegeben. Es werden aber nicht nur 10 Beiträge pro Seite ausgegeben, sondern alle in der DB vorhandenen, und wenn ich unten auf die Links klicke, kommen die gleichen nochmals. Hier mal der Code:

PHP:
<?php

   include("dbconnect.php");
   //Datensätze herausholen
   $sql = "SELECT * FROM gaestebuch ORDER BY datum DESC";
   $select = mysql_query($sql);
   //Funktion aus dem Tutorial
   function createPages($input = 0, $perpage = 25) {
    global $page, $_SERVER;
    if ($input == 0)
        die("createPages(<b>\$input = $input</b>, \$perpage = $perpage");
    if ($input <= $perpage)
        return "« <b>1</b> »";
    if (!$page || $page < 1) {
        $page = 1;
    }
    $pages = ceil($input / $perpage);
    $html = "";
    if ($page > 1) {
        $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?action="."gb_form"."&page=".($page-1)."\">«</a> ";
    } else {
        $html .= "« ";
    }
    for($i = 1; $i <= $pages; $i++) {
        if ($i == $page) {
            $html .= "<b>".$i."</b> ";
        } else {
            $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?action="."gb_form"."&page=".$i."\">".$i."</a> ";
        }
    }
    if ($page <= $pages-1) {
        $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?action="."gb_form"."&page=".($page+1).">»</a> ";
    } else {
        $html .= "» ";
    }
    return $html;
}

function limitSQL($perpage = 10) {
    global $page;
    if (!$page || $page < 1) {
        $page = 1;
    }
    $min = ($page - 1) * $perpage;
    $max = $min + $perpage;
    $out = array($min,$max);
    return $out;
}

$eintraege = mysql_num_rows($select);
$perpage = 10;

    //Ausgabe
   while ($row = mysql_fetch_array($select))
   	{ ?>
         <html>
          <body>
           <table width="100%" border="0">
            <tr width="100%">
             <td width="80%">
              <?php
                //Formatierung des Datums
               $timestamp = $row["datum"];
               $monate = array(
          	1=>"Januar",
          	2=>"Februar",
          	3=>"März",
          	4=>"April",
          	5=>"Mai",
          	6=>"Juni",
          	7=>"Juli",
          	8=>"August",
          	9=>"September",
          	10=>"Oktober",
          	11=>"November",
          	12=>"Dezember");
 	      $tag = date("d", $timestamp);
 	      $monat = date("m", $timestamp);
               $jahr = date("Y", $timestamp);
               $uhrzeit = date("H:i", $timestamp);
 	      $mo_akt = $monate[$monat];
 	      $datum = "$tag"." "."$mo_akt"." "."$jahr";
               $name = $row["name"];
               echo "Der Eintrag wurde von $name am $datum um $uhrzeit eingetragen:";
               ?>
             </td>
             <td>
              <?php
                //Für mail und website ein bild herausgeben
               $mail = $row["mail"];
               $website = $row["website"];
               if ($mail != "")
               		{
               		echo " <a href=\"mailto:$mail\"><img src=\"em.gif\" border=\"0\" ></a>";
                         }
               if ($website != "")
               	 	{
               		echo " <a href=\"$website\"><img src=\"hp.gif\" border=\"0\"></a>";
                         }
               ?>
              </td>
            </tr>
            <tr width="100%">
             <td>
              <?php
               echo $row["text"];
               echo "<br>";
              ?>
             </td>
            </tr><hr>
           </table>
          </body>
         </html><br><br>
  <?php }

//Ausgabe der Blätterlinks
echo createPages($eintraege,$perpage);
$sql = limitSQL($perpage);
echo "<br/><br/><pre>";
//print_r($sql);
echo "</pre>";
  ?>

Bitte nicht erschrecken, es ist nicht wirklich viel...habe alles einwenig kommentiert, sodass das nicht so schlimm sein sollte. Auf jeden Fall danke allen, die sich die Mühe machen!
gruss
 
Habs versucht mit LIMIT 10...dann kamen einfach 10 Einträge raus, nicht mehr. Wie mache ich das denn?
gruss
 
Durch limitSQL() bekommst du ein Array mit was ungefähr so aussehen dürfte

PHP:
array(
     min=>10,
     //alle Datensätze
     max=$alleDatensätze
)

Dieses Array musst du nur noch in LIMIT einsetze ungefähr so
PHP:
LIMIT $sql[min] $sql[max]
 
hmmm...also was LIMIT macht weiss ich auch...aber ich schaffe es einfach nicht..:-(
danke trotzdem für die Hilfe!
gruss
 
LIMIT 0,10 gibt 10 Einträge ab dem ersten Datensatz
LIMIT 30,10 gibt dem 31sten bis 40 Datensatz der Abfrage zurück

Fazit: Wenn die $page = 4, $startwert = ($page * 10) - 10;
LIMIT '".$startwert."',10 - oder alles so ähnlich!
 
Zurück