GB Prob, nach x beiträgen neue Seite

i-mehl

Gesperrt
Hi

Folgendes Problem:

Ich will das in meinen Gästebuch nach zB 10 Beiträgen eine neue Seite macht und unten steht Seite 1, Seite 2 usw. oder so in der Art.


Muss man hier nur bei der Ausgabe etwas ändern, oder muss ich das ganze Gb umschreiben
 
PHP:
function get_gbuch()
{
       global $max_per_page;
       $res = mysql_query("select count(*) from gbuch");
       list($anz) = mysql_fetch_row($res);

       $page = max(1,min($maxpage= ceil($anz/$max_per_page), $_REQUEST['page']));
       $start = ($page-1)*$max_per_page+1;
       $ende = min($page*$max_per_page, $anz);

       $linestr = "$start bis $ende von $anz";

       // Seitenleiste
       $pagestr = "Seiten ($maxpage): ". (($page>1)
         ? '<a href="?page='. ($page-1). '">&lt;&lt;<a>': '');
  
       for ($i=1; $i<=$maxpage; $i++)
       $pagestr .= ($i==$page
         ? " <b>[</b> $i <b>]</b>"
         : ' <a href="?page='. $i. '">'. $i. '</a>');
       $pagestr .= ($ende == $anz
         ? ''
         : ' <a href="?page='. ($page+1). '">&gt;&gt;<a>');

       echo "<table border='0'><tr><td class='content'><font 
                           color='#FFFFFF'>Einträge 
                           $linestr<br>$pagestr</font></td></tr></table><br>";
       $result = mysql_query("SELECT * 
		     FROM gbuch ORDER BY gb_post_time DESC limit ".
                                               ($start-1).", ". ($ende-$start+1)
             while ($row=mysql_fetch_array($result,MYSQL_ASSOC))
              {
                            //HIER DIE AUSGABE PROGRAMMIEREN....
              }
  	   echo "<table border='0'><tr><td class='content'><font 
                                      color='#FFFFFF'>$pagestr</font></td></tr></table>";
}

So sollte Dein Wunsch in Erfüllung gehen. Du mußt eben nur noch an der richtigen Stellen die Ausgabe programmieren für einen Beitrag. Alle anderen Beiträge werden ja automatisch durchlaufen. Wenn Du noch Fragen hast einfach melden. Du kannst Die das Resultat auch vorher anschauen. Den Link findest Du unten in meiner Signatur ;) Das Gästebuch dort enthält exakt diese Funktion oben!

MfG
..::SD::..
 
Danke, ich habe aber ein Gb auf Text-Basierend und nicht MySQL

Das ist der Code der Ausgabe Datei
PHP:
<?php
$datei = fopen("gb.txt", "r");
$i = 0;
while ($text = fgets($datei, 1000))
{
$text = explode("~",$text);
if($text[1] == "")
{
$homepage = "";
}
else
{
$homepage = "<a target='_blank' href=".$text[1]."><font size='2' face='Tahoma' color='#FFFFFF'><img border='0' src='".$pics."/www.gif' alt='Hier kommst du zur Homepage von ".$text[0].".'width='18' height='18' align='right'></font></a>";
}

$entrys[$i] = "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#000099' width='400' height='26' background='".$pics."/kopfzeilebg.gif'>
  <tr>
    <td width='204' style='border-left-style: solid; border-left-width: 1; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-width: 1'>
    <font face='Tahoma' size='2' color='#FFFFFF'>&nbsp;Name:&nbsp;".$text[0]."</font></td>
    <td width='47' style='border-left-width: 1; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-width: 1'>
    <p align='center'>".$homepage."</td>
    <td width='110' style='border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-width: 1'>
    <font size='2' face='Tahoma' color='#FFFFFF'>".$text[3]. "/" .$text[4]."</font></td>
  </tr>
</table>
<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#000099' width='400'>
  <tr>
      <td width='20' style='border-left-style: solid; border-left-width: 1; border-right-width: 1; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1'>&nbsp;</td>
    <td width='370' style='border-left-width: 1; border-right-width: 1; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1'>
    <font size='2' face='Tahoma'><br>".$text[2]."<br><br></font></td>
    <td width='20' style='border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1'>&nbsp;</td>
   </tr>
</table><br><br>";
$i++;
}
fclose($datei);

while($i > 0){
$i--;
echo $entrys[$i];
}
?>
 
Hi!
Für eine Blätterfunktion musst du nur die untere while-Schleife (deine Ausgabe) erweitern:
PHP:
<?php
    if(!(isset($_GET['site']) AND $_GET['site'] > 0)) {
        $seite = 0;
    }
    else {
        $seite = $_GET['site'];
    }
    $pro_seite = 9; //Einträge, die pro Seite gezeigt werden
    $eintraege = $i;
    $seiten_gesamt = ceil($eintraege/$pro_seite);
    if($seite > $seiten_gesamt-1) { //höchste seite = seiten_gesamt-1, da wir bei '0' beginnen zu zählen
        $seite = $seiten_gesamt-1; //wenn eingegebene seite > als höchste seite, zeige höchste seite
    }
    $start = $seite*$pro_seite+1;
    $end = $start+$pro_seite-1;
    $z = 1;
    while($i > 0){ 
        $i--;
        if($z >= $start AND $z <= $end) {
            echo $entrys[$i]; 
        }
    $z++;
    } 
?>
Das ist die Blätterfunktion, die ich bei meinem GBook benutze... Allerdings nutze ich eine Datenbank, sodass ich dieses Script nicht getestet hab. Aber prinzipiell sollte es funktionieren!
 
Zuletzt bearbeitet:
PHP:
<?php 
$datei = fopen("gb.txt", "r"); 
$i = 0; 
while ($text = fgets($datei, 1000)) 
{ 
$text = explode("~",$text); 
if($text[1] == "") 
{ 
$homepage = ""; 
} 
else 
{ 
$homepage = "<a target='_blank' href=".$text[1]."><font size='2' face='Tahoma' color='#FFFFFF'><img border='0' src='".$pics."/www.gif' alt='Hier kommst du zur Homepage von ".$text[0].".'width='18' height='18' align='right'></font></a>"; 
} 

$entrys[$i] = "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#000099' width='400' height='26' background='".$pics."/kopfzeilebg.gif'> 
  <tr> 
    <td width='204' style='border-left-style: solid; border-left-width: 1; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-width: 1'> 
    <font face='Tahoma' size='2' color='#FFFFFF'>&nbsp;Name:&nbsp;".$text[0]."</font></td> 
    <td width='47' style='border-left-width: 1; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-width: 1'> 
    <p align='center'>".$homepage."</td> 
    <td width='110' style='border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-width: 1'> 
    <font size='2' face='Tahoma' color='#FFFFFF'>".$text[3]. "/" .$text[4]."</font></td> 
  </tr> 
</table> 
<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#000099' width='400'> 
  <tr> 
      <td width='20' style='border-left-style: solid; border-left-width: 1; border-right-width: 1; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1'>&nbsp;</td> 
    <td width='370' style='border-left-width: 1; border-right-width: 1; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1'> 
    <font size='2' face='Tahoma'><br>".$text[2]."<br><br></font></td> 
    <td width='20' style='border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1'>&nbsp;</td> 
   </tr> 
</table><br><br>"; 
$i++; 
} 
fclose($datei); 

//An dieser Stelle kam deine while-Schleife: Diese musst du nun durch folgendes ersetzen!
if(!(isset($_GET['site']) AND $_GET['site'] > 0)) { 
        $seite = 0; 
    } 
    else { 
        $seite = $_GET['site']; 
    } 
    $pro_seite = 9; //Einträge, die pro Seite gezeigt werden 
    $eintraege = $i; 
    $seiten_gesamt = ceil($eintraege/$pro_seite); 
    if($seite > $seiten_gesamt-1) { //höchste seite = seiten_gesamt-1, da wir bei '0' beginnen zu zählen 
        $seite = $seiten_gesamt-1; //wenn eingegebene seite > als höchste seite, zeige höchste seite 
    } 
    $start = $seite*$pro_seite+1; 
    $end = $start+$pro_seite-1; 
    $z = 1; 
    while($i > 0){ 
        $i--; 
        if($z >= $start AND $z <= $end) { 
            echo $entrys[$i]; 
        } 
        $z++; 
    }
?>
Dieses Script beinhaltet die Links zum blättern noch nicht. Aber zum Testen musst du einfach nur 12 Einträge speichern und dann die Variable site=1 übergeben. Dann sollten nur drei Eintrag angezeigt werden... Die Anderen 9 findest du bei der Eingabe site=0 oder beim Weglassen des Übergebens von site.

//EDIT: Wenn ich dazukomme, erweitere ich das Script durch die entsprechenden Links!
 
Zuletzt bearbeitet:
danke
werde es versuchen

ps: ich hoffe du hast bald zeit


ES FUNKTIONIERT, DANKE habe auch schon Links gemacht bringe es aber zusammen "richtige" Links zu machen.

Du weißt sicher was ich damit meine.
 
Zuletzt bearbeitet:
Sorry, dass es so lange gedauert hat, ich hatte heute viel zu tun... :rolleyes:

Ok, hier ist der Code den ich im Moment für die Links verwende:
PHP:
<?php
    //    ... Dein alter Code ...
    //    $z++;
    // }
    for($i=0; $i<$seiten_gesamt; $i++) {
        $site_show = $i+1;
        if($seite == $i) {
            echo "[<b>".$site_show."</b>] ";
        }
        else {
            echo "[<a href=\"index.php?page=guestbook&site=".$i."\">".$site_show."</a>] ";
        }
    }
?>
Den Code einfach gaaaaanz unten im Code einfügen ;) (unter der letzten while-Schleife).

Du musst natürlich den Pfad (index.php?page=guestbook) anpassen! Das ...&site=".$i." bitte unverändert lassen ;-)

Ich hoffe ich konnte dir helfen!
 
Zuletzt bearbeitet:
von mir noch mal schnell eine frage: in dieser version der blätterfunktion stehen immer nur zwei links auf der site, z.B. <<zurück und vor>>....

wie bekomme ich es hin, dass ich gleich links für alle seiten habe?

z.B. Seite 1 2 3 4 usw...

ich benutzte übrigens mysql..

hoffe ihr könnt mir helfen
unlord
 
Falsch, in der Version oben stehen keine "vor/zurück Links" zur Verfügung, sondern nur "Seite x - Links".
Bei MySQL funktioniert das ganze eigentlich genau so. Ich habe den Code kurz MySQL-freundlich gemacht. Außerdem habe ich vor und nach der letzten for()-Schleife noch jeweils eine If-Abfrage für previous/next gemacht:
PHP:
<?php
    $result = mysql_query("SELECT COUNT(*) as Anzahl FROM Guestbook");
    $row = mysql_fetch_assoc($result);
    if(!(isset($_GET['site']) AND $_GET['site'] > 0)) { 
        $seite = 0; 
    } 
    else { 
        $seite = $_GET['site']; 
    } 
    $pro_seite = 9; //Einträge, die pro Seite gezeigt werden 
    $eintraege = $row['Anzahl'];
    $seiten_gesamt = ceil($eintraege/$pro_seite); 
    if($seite > $seiten_gesamt-1) { //höchste seite = seiten_gesamt-1, da wir bei '0' beginnen zu zählen 
        $seite = $seiten_gesamt-1; //wenn eingegebene seite > als höchste seite, zeige höchste seite 
    } 
    $start = $seite*$pro_seite+1; 
    $end = $start+$pro_seite-1; 
    $z = 1;
    $result = mysql_query("SELECT * FROM Guestbook");
    while($row = mysql_fetch_assoc($result)){ 
        if($z >= $start AND $z <= $end) { 
            echo "AUSGABE DER EINTRÄGE"; //Hier kommt die Ausgabe hin
        } 
        $z++; 
    } 

    //Folgender Code ist für die Blätterlinks (Seite [1] [2]...) verantwortlich!

    $last = $seite-1;
    $next = $seite+1;
    if($seite != 0) { //Wenn nicht erste Seite zeige "previuos-Link" erstellen
        echo "<a href=\"index.php?page=guestbook&site=".$last."\">previous</a> ";
    }
    for($i=0; $i<$seiten_gesamt; $i++) { 
        $site_show = $i+1;
        if($seite == $i) { 
            echo "[<b>".$site_show."</b>] "; 
        } 
        else { 
            echo "[<a href=\"index.php?page=guestbook&site=".$i."\">".$site_show."</a>] "; 
        } 
    } 
    if($seite != $seiten_gesamt) { //Wenn nicht letzte Seite, zeigt "next-Link"
        echo " <a href=\"index.php?page=guestbook&site=".$next."\">next</a>";
    }
?>
 
Zuletzt bearbeitet:
Zurück