• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Seitenanzeige im Gästebuch, vereinfachen?

jukleidie

Mitglied
PHP:
<?php
     // welche seite des gästebuchs soll angezeigt werden?
      $page = $_GET['pg'];
      // falls nicht definiert soll es die erste sein...
      if ($page=="") {
       $page=1;
      }
      //alles wird erstmal ausgewählt...
     $sql= "SELECT * FROM jul_gb";
$result= mysql_query($sql);
//anzahl der datensätze wird ermittelt
$anzahl = mysql_num_rows($result);

//von
$n1 = ($page*10)-10;
//bis
$n2 = $n1+10;
//abfrage formulieren
$sql="SELECT * FROM jul_gb ORDER BY `time` DESC LIMIT ".$n1.", ".$n2;

//echo $sql;  War nur zur Fehlersuche!

//seitenzahl berechnen
$seiten = $anzahl / 10;

//für die 1. Seite
$seiten = ceil($seiten);
       if ($page==1) {
        echo "<b>1</b> ";
        if ($seiten > 1) {
        echo "<a href=\"guestbook.php?pg=2\">2</a> ";
         }
         if ($seiten > 2) {
        echo "<a href=\"guestbook.php?pg=3\">3</a> ";
         }
         if ($seiten > 3) {
        echo "<a href=\"guestbook.php?pg=4\">4</a> ";
         }
         if ($seiten > 4) {
        echo "<a href=\"guestbook.php?pg=5\">5</a> ";
         }
         if ($seiten > 1) {
         $next = $page + 1;
        echo " <a href=\"guestbook.php?pg=".$next."\">»</a>";
         }
}

//für die 2. Seite
if ($page==2) {
        echo "<a href=\"guestbook.php?pg=1\">1</a>";
        echo " <b>2</b> ";
         if ($seiten > 2) {
        echo "<a href=\"guestbook.php?pg=3\">3</a>";
         }
         if ($seiten > 3) {
        echo " <a href=\"guestbook.php?pg=4\">4</a>";
         }
           if ($seiten > 4) {
        echo " <a href=\"guestbook.php?pg=5\">5</a>";
         }
          if ($seiten > 2) {
         $next = $page + 1;
        echo " <a href=\"guestbook.php?pg=".$next."\">»</a>";
        }
}

//für die 3. Seite...
if ($page==3) {
        echo "<a href=\"guestbook.php?pg=1\">1</a>";
        echo " <a href=\"guestbook.php?pg=2\">2</a>";
         echo " <b>3</b> ";
         if ($seiten > 3) {
        echo "<a href=\"guestbook.php?pg=4\">4</a>";
         }
         if ($seiten > 4) {
        echo " <a href=\"guestbook.php?pg=5\">5</a>";
         }
         if ($seiten > 3) {
         $next = $page + 1;
        echo " <a href=\"guestbook.php?pg=".$next."\">»</a>";
         }
}

//Für jede x-beliebige Seite dazwischen..
$seitenm1 = $seiten - 1;
if (($page > 3) && ($page < $seitenm1)) {
$next = $page + 1;
$back = $page - 1;
$pagem3= $page - 3;
echo " <a href=\"guestbook.php?pg=".$back."\">«</a>";
$pagem2= $page - 2;
echo " <a href=\"guestbook.php?pg=".$pagem2."\">".$pagem2."</a>";
$pagem1= $page - 1;
echo " <a href=\"guestbook.php?pg=".$pagem1."\">".$pagem1."</a> ";
echo "<b>".$page."</b>";
$pagep1= $page + 1;
echo " <a href=\"guestbook.php?pg=".$pagep1."\">".$pagep1."</a>";
$pagep2= $page + 2;
echo " <a href=\"guestbook.php?pg=".$pagep2."\">".$pagep2."</a>";
echo " <a href=\"guestbook.php?pg=".$next."\">»</a>";
}

//für die vorletzte Seite
if (($page == ($seiten - 1)) && ($page != 1)) {
$next = $page + 1;
$back = $page - 1;
//echo "neoin!!!";
        echo "<a href=\"guestbook.php?pg=".$back."\">«</a> ";
         echo "<a href=\"guestbook.php?pg=".($page - 3)."\">".($page - 3)."</a> ";
        echo "<a href=\"guestbook.php?pg=".($page - 2)."\">".($page - 2)."</a> ";
         echo "<a href=\"guestbook.php?pg=".($page - 1)."\">".($page - 1)."</a> ";
         echo "<b>".$page."</b>";
         echo " <a href=\"guestbook.php?pg=".($page + 1)."\">".($page + 1)."</a> ";
        echo " <a href=\"guestbook.php?pg=".$next."\">»</a>";
}

//für die vorletzte Seite
if (($page == $seiten) && ($page!=2) && ($page != 1)) {
$next = $page + 1;
$back = $page - 1;
   echo "<a href=\"guestbook.php?pg=".$back."\">«</a> ";
   echo "<a href=\"guestbook.php?pg=".($page - 4)."\">".($page - 4)."</a> ";
   echo "<a href=\"guestbook.php?pg=".($page - 3)."\">".($page - 3)."</a> ";
        echo "<a href=\"guestbook.php?pg=".($page - 2)."\">".($page - 2)."</a> ";
         echo "<a href=\"guestbook.php?pg=".($page - 1)."\">".($page - 1)."</a> ";
         echo "<b>".$page."</b>";
 }
     ?>
     </td></tr>
     <?php
     //Anfrage von oben stellen
      $result=mysql_query($sql);
      //Daten aus dem Ergebnis ziehen und reihenweise auslesen... Daten werden in Objekten gespeichert.
      while ($row=mysql_fetch_object($result)) {
      //Hier Reihenweise in einer Tabelle ausgeben
       ?>
        <tr style="color: #297bc1; font-size: 11px;"><td><i>Von <?= $row->name ?> am <?=date("d.m.Y \u\m H:i:s", $row->time)?></i></td></tr>
        <tr><td><p style="font-size: 12px;"><?= $row->text ?></p></td></tr>
       <?php
      }
      ?>

Hi Leute... ich glaube ich stehe aufm Schlauch... Ich könnte wetten das geht doch irgendwie noch kürzer oder? Es geht mir um die ganzen Fälle wie man die Seiten passend anzeigen kann: « 2 3 4 5 6»
Wenn ihr fragen habt, dann fragt =)

Danke, Julius =)
 
Werbung:
Ich könnte wetten das geht doch irgendwie noch kürzer oder?
Klar, mit einer Schleife über alle anzuzeigenden Seiten, wo Du bei jeder prüfst, ob $page == Schleifenvariable und diese zeichnetst Du dann als aktuelle Seite aus. Aber bitte im Sinne von HTML nicht mit dem deprecated <b>, sondern mit <span class="activepage"> oder so ähnlich.
 
Werbung:
@efchen:
Gut, danke, ist ja ne ganz gute Idee, aber wenn das Gästebuch länger ist hat das doch dann längere Ladezeiten als Folge oder?

@Asipak4You: Danke für den Link, aber ich finde das ist eher noch länger, oder? :D
 
@efchen:
Gut, danke, ist ja ne ganz gute Idee, aber wenn das Gästebuch länger ist hat das doch dann längere Ladezeiten als Folge oder?
Hmmm...?
Du fragtest, wie Du den vorstehenden Code vereinfachen könntest. Ich sagte: Statt zahlreicher ifs einfach eine Schleife. Du machst ja in jedem if das gleiche. Daraus baut man dann eine Schleife.
Längere Ladezeiten gibts natürlich mit jeder Seite, die dazu kommt, aber das gilt sowohl für Deine Variante mit ifs als auch für die Schleifenvariante. Du würdest ja dann für jede neue Seite ein neues if dazu packen.
So gesehen ist dann die Schleifenvariante aber schneller, weil sich da der Code nicht verlängert, weil der jetzt schon einfach viel schmaler wäre.
Aber Du musst ja auch nicht alle Seitennummern anzeigen. Wenn Dein GB 300 Seiten hat, dann zeigst Du halt nur "<< 1 ... 27 28 29 30 31 ... 300 >>" an.
Die Schleife macht ja nicht viel, außer ein paar Zahlen ausgeben. Das, was da pro Seite länger dauert, ist nur ein Bruchteil einer Sekunde. Und 300 Seitenzahlen willst Du ja sicher eh nicht ausgeben.
 
Zurück
Oben