Gästebuch mit mehreren Seiten...

stonk

Erfahrenes Mitglied
Tach zusammen!

Habe gerade ein Tutorial durchgemacht, komme aber leider irgendwo immer zu einem kleinen (schöhnheits-)Fehler...

Konnte den ersteller des Tutorials nicht erreichen -> hat kein Profil...

Naja, vielleicht kann mir ja jemand hier weiterhelfen ;)
Das Tutorial ist unter folgender Adresse erreichbar:
http://www.tutorials.de/tutorials6083.html

Ich kann alles so einbauen, dass es ganz gut funktioniert NUr habe ich ein kleines Problem, die Seitenzahlen beginnen nicht bei 1 sondern bei 0... ich finde das nicht besonders schön!
Weiss jemand, wie man machen kann, dass es bei 1 anfängt die Seiten zu zählen?

Habe schon mein ganzes wissen eingesezt, bin aber auf keine Lösung gekommen :(

Vielen Dank schon im Voraus für eure Hilfe!

mfg
stonk
 
ja, hab ich auch versucht habs aber nicht richtig hingekriegt...:(
vielleicht kannst du mir ja die richtige variante zeigen... ;)
 
Hallo ihr zwei,

da das mit dem "HeHe ... rechne doch bei der Ausgabe plus 1" anscheinend schwer ist hab ich das einfach mal gemacht und hier ist das Ergebnis, eigentlich ganz einfach oder?

PHP:
$sqlhost='';
$username='';
$passwort='';
$database='';
$proseite=10;

$db = mysql_connect ($sqlhost,$username,$passwort);
mysql_select_db ($database);
$sql = "SELECT * FROM deine_tabelle";
$result = mysql_query($sql,$db);
$number = mysql_num_rows($result);
$seiten=floor($number/$proseite);
$start=$page * $proseite;
$sql_1="SELECT * FROM deine_tabelle LIMIT $start,$proseite";
$result_1 = mysql_query($sql_1,$db);
$ende = $start + $proseite;
if ($ende>$number) { $ende = $number;}
echo "Zur Zeit sind $number Einträge im Gästebuch <BR> \n";

/** Hier formatierst die Seitenzahl für die erste Anzeige **/
$Seitenzahl=$page+1;

/** Dann hier die Ausgabe **/
echo "Seite ".$Seitenzahl." - Einträge von $start bis $ende <BR> \n";
while ($row = mysql_fetch_array($result_1)) {
	echo "Eintrag von: ".$row['name']." <BR> \n";
	echo $row['eintrag']."<BR> \n";
	}
echo "<br><br><center>";
if ($page>0) {
	$i=$page-1;
	echo "<A HREF=\"gb.php?page=$i\">&lt;previous</A>&nbsp;";
}
for($i=0; $i<=$seiten; $i++) {
	if ($i==$page) {

/** Und hier für die eine Anzeige unten **/
         	$Seitenzahl_unten=$i+1; 
                                 
/** Dann hier die Ausgabe **/
		echo $Seitenzahl_unten."&nbsp;";
	}
	else {

/** Und hier für die zweite Anzeige unten **/
		$Seitenzahl_unten=$i+1;

/** Dann hier die Ausgabe **/
                 echo "<A HREF=\"gb.php?page=$i\">".$Seitenzahl_unten."</A>&nbsp;";
	}
}
if ($page<$seiten) {
	$i=$page+1;
	echo "<A HREF=\"gb.php?page=$i\">next&gt;</A>";
}
echo "</center>";

und das nächstemal dann vieleicht doch selber? ;)
Hoffe das ist jetzt so wie du es wolltest, wenn nicht einfach nochmal schreiben

Grüsse Phil
 
Zuletzt bearbeitet:
Genau dass! Danke viel mal!

nun habe ich noch eine kleine Frage bezüglich floor() und ceil()...

floor() rundet ja auf und ab... ceil() rundet nur auf...
Da könnte es doch vorkommen, dass die letzte Seite mit Einträgen verloren gehen, wenn floor() abrundet sehe ich das falsch?

vielen dank
 
Moin Stonk,

na wenigstens einer dem das GB so gefällt wies in dem Script steht *lach* Mir wäre das zu, naja, schlicht :o)

So zu deiner Frage:

du hast da nen Denkfehler drin, es soll ja abgerundet werden.
Nehmen wir an du hättest 22 Einträge im GB. Dann ergibt sich aus floor(22/10), sprich floor(2,2) eine 2 als Seiten anzahl, nun denkst du dir gehen die letzten 2 Einträge verloren.

Das ist aber falsch, du gehst davon aus das dein GB ab Seite 1 anfängt, das tut es ja aber nicht. Es fängt ab Seite 0 an, sprich floor(2,2) macht 3 Seite (0,1,2) und du siehst alle 22 Einträge.

Das dein GB erst ab Seite 1 anfängt gaukeln wir dem User ja nur vor ;)

Das so umzuschreiben das es wirklich ab Seite 1 anfängt, würde einem Neuschreiben gleichkommen, da dich ja aber nur die Anzeige störte ist das doch legitim.

So, alle Fragen beantwortet?

Grüße Phil
 
Hi Phil

Danke genau dass wollte ich wissen nun hab ich keine Sorgen mehr *g*

Habe das Design des GBs natürlich noch einwenig aufgemotzt.... denn so wäre es wirklich zu shclicht ;)

danke und gruss
stonk
 
Hallo zusammen

habe gerade etwas bei meinem GB bemerkt... habe es auf mehrere seiten verteilt, wie es oben beschrieben ist.... habe aber nun ein kleiner fehler....

zurzeit habe ich genau 30 einträge -> 3 seiten... bei der next & previous navigation werden aber trotzdem 4 seiten angezeigt.... kann mir jemand sagen, was daran falsch ist

Mein Code:

PHP:
//** Variabeln Definieren **
$sqlhost='localhost';
$username='xxxxxx';
$passwort='xxxxxx';
$database='xxxx';
$proseite=10;
$tabellenname=gb;

//** Zu DB verbinden **
$db = mysql_connect ($sqlhost,$username,$passwort);
mysql_select_db ($database);
$sql = "SELECT * FROM $tabellenname";
$result = mysql_query($sql,$db);

//** Daten aufbereiten **
$number = mysql_num_rows($result);
$seiten=floor($number/$proseite);
$start=$_GET['page'] * $proseite;
$sql="SELECT * FROM $tabellenname ORDER BY timestamp DESC LIMIT $start,$proseite";
$result = mysql_query($sql,$db);
$ende = $start + $proseite;

//** Seitenzahl für die erste Anzeige formatieren **
$Seitenzahl=$page+1; 

if ($ende>$number) {
$ende = $number;
}

//** Daten in Array umwandeln **
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}

//** Einträge anzeigen **
for($i=0;$i<count($ergebnis);$i++)
{

echo "

	<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
		<tr>
			<td bgcolor=\"#AB9A21\"><p class=\"4\">".$ergebnis[$i][name]."<a href=\"mailto:".$ergebnis[$i][mail]."\">&nbsp;<img src=\"images/design/mail.gif\" border=\"0\" alt=\"Mail Schreiben\"></a></p></td>
			<td bgcolor=\"#AB9A21\"><p align=\"right\" class=\"4\">".date("H:i - d. M y",$ergebnis[$i][timestamp])."</p></td>
		</tr>
		<tr>
			<td colspan=\"2\" bgcolor=\"#2E2E2E\"><p>".$text."</p></td>
		</tr><br>
	</table>

";

}

//** Beginn Tabelle für Formatierung**
echo "
<br>
<table width=300 align=center>
	<tr>
		<td width=80 align=left>
";

//** Previous **
$page = $_GET['page'];

if ($page>0) {
	$i=$page-1;
	echo "<A HREF=\"index.php?id=gb&page=$i\">« previous</A>";
} else {
	echo "« previous";
}


echo "
		</td>
		<td width=*% align=center>
";

//** Seitenzahlen Anzeigen **
for($i=0; $i<=$seiten; $i++) { 
    if ($i==$page) { 


	//** Seitenzahlr für Anzeige unten formatieren **
             $Seitenzahl_unten=$i+1; 
                                  
	//** Dann hier die Ausgabe **
        echo "[".$Seitenzahl_unten."] "; 
    } 
    else { 


	//** Seitenzahlr für zweite Anzeige unten formatieren **
        $Seitenzahl_unten=$i+1; 

	//** Dann hier die Ausgabe **
                 echo "[<A HREF=\"index.php?id=gb&page=$i\">".$Seitenzahl_unten."</A>] "; 
    } 




}
//** Next **
if ($page<$seiten) {

echo "
		</td>
		<td width=80 align=right>
";


	$i=$page+1;
	echo "<A HREF=\"index.php?id=gb&page=$i\">next »</A>";
} else {

echo "
		</td>
		<td align=right>
";


	echo "next »";
}


echo "
		</td>
	</tr>
</table>
<br>
";
//** Ende Tabelle und Next & Previous **



//** SQL Verbindung schliessen **

mysql_close($db);

so... nun hoffe ich dass jemand mehr weiss als ich ;)

bestan dank

gruss
stonk
 
Hi Stonk,

hast du mal die Variable $seiten ausgelesen? Wenn nein mach mal Bitte, würde mich interessieren ob da auch 4 drin steht.
 
Zurück