Homepage selbermachen 7.852 Themen, 35.619 Beiträge

GB mit PHP, MySql: Limit für Einträge pro Seite?!?!

Ruderfreund / 10 Antworten / Baumansicht Nickles

HI!


Ich habe seit lägerem ein Gästebuch mit PHP und MySql auf meiner Page (->pricker.net).


Nur zeigt er jetzt 90 Einträge auf einer Seite an, was das Laden der Page natürlich verlangsamt!
Ich hab gehört man kann mit "LIMIT" bei MySql die Angezeigten Einträge begrenzen.
Wenn ich aber nun LIMIT 30 setze sieht man doch die anderen 60 Einträge nicht mehr!


Andere Gästebücher haben kleine Verweise am Anfang der Gäsebuches, mit Eintragsnummern (1-30, 31-60...), so dass alle 30 Einträge ein neuer Link kommt! Automatisch!


Ich hab schon aller versucht, aber ich kommen nicht weiter! Kann mir jemand helfen?


Danke im vorraus!


mfg


Sebastian

bei Antwort benachrichtigen
Heinz_Malcher Ruderfreund „GB mit PHP, MySql: Limit für Einträge pro Seite?!?!“
Optionen

Kein Problem, wenn du enifach nur 30 Einträge zeigen willst, ergänze die DB Zeile um

limit 0,30

wenn du z.b. auf jeder seite 5 einträge zeigen willst, löse dies mit einer schleife:



$zeile=mysql_num_rows($result_gesamt);

$a=0;

for ($x=0;$x
{

$a++;

echo"<a href='$PHP_SELF?anfang=$x'>$a$#60/a> ";

}



erklärung:

ermittle zunächst alle zeilen der Datenbank.

zähle mir der for schleife (kann man auch mit einer while schleife lösen) dann x+5 und auf jeder seite werden 5 angezeigt.




dein datenbank limit müsste dann so aussehen, damit die variable greift:

limit $anfang,5

und damit es keinen fehler gibt: am besten eine if schleife davor die so aussieht:

if(!isset($anfang)) {


$anfang = 0;

}

dann werden ,wenn nix gewählt ist, die ersten 5 einträge angezeigt



[Diese Nachricht wurde nachträglich bearbeitet.]

bei Antwort benachrichtigen
Heinz_Malcher Ruderfreund „GB mit PHP, MySql: Limit für Einträge pro Seite?!?!“
Optionen

Ich will jetzt nicht nochmal das Posting nachbearbeiten, sonst verhauts mir noch mehr code, die folgende zeile

muss heissen

<a href='$PHP_SELF?anfang=$x'>$a</a>

bei Antwort benachrichtigen
Ruderfreund Nachtrag zu: „GB mit PHP, MySql: Limit für Einträge pro Seite?!?!“
Optionen

include "connect_to.php";

$Query = "SELECT name,text,page,mail,datum,zeit,id,ip FROM s_guestbook ORDER BY ID desc";
if (!($ergebnis = mysql_query ($Query, $verbindung))) {
echo("Die Abfrage ist fehlgeschlagen!

");
echo("Ihre Abfrage $Query war nicht erfolgreich!

");
exit();
}
// hier teste ich das limit////////////////////////////////////////////////////
if(!isset($anfang)) {


$anfang = 0;

}



$zeile = "mysql_num_rows($result_gesamt)";

$a=0;

for ($x=0;$x
{

$a++;

echo"$a";

}
//////////////////////////////////////////////////////////////////////////////

while ($zeile = mysql_fetch_object ($ergebnis)) {

//hier kommt die TAbelle!

bei Antwort benachrichtigen
Ruderfreund Nachtrag zu: „ include connect_to.php Query SELECT name,text,page,mail,datum,zeit,id,ip FROM...“
Optionen

Ich hab jetzt mal meinen aktuellen Code ausgehängt!
Sorry falls ich ganz dumme Fehler zusammengewürfelt hab, aber ich fange seit langem wieder mit PHP an und mache noch einige Anfängerfehler. Bin eigentlich schon Fortgeschrittener!

DANKE AN HEINZ_MALCHER!
mfg Sebastian

bei Antwort benachrichtigen
Heinz_Malcher Ruderfreund „GB mit PHP, MySql: Limit für Einträge pro Seite?!?!“
Optionen

Hallo, ich habe den Quelltext nochmal etwas überarbeitet, wenn etwas nicht stimmt, kannst du dich ja nochmal melden:



include "connect_to.php";


// hier teste ich das limit////////////////////////////////////////////////////
// Das Limit muss vorher getestet werden, bevor $Query aufgerufen wird

if(!isset($anfang)) {

$anfang = 0;

}

$Query = "SELECT name,text,page,mail,datum,zeit,id,ip FROM s_guestbook ORDER BY ID desc limit $anfang,2";
if (!($ergebnis = mysql_query ($Query, $verbindung))) {
echo("Die Abfrage ist fehlgeschlagen!

");
echo("Ihre Abfrage $Query war nicht erfolgreich!

");
exit();
}

//Ermitteln, aller Zeilen in der Tabelle
$result_gesamt = "SELECT * FROM s_guestbook";
$zeile = "mysql_num_rows($result_gesamt)";

$a=0;

for ($x=0;$x<$zeile;$x=$x+2)

{

$a++;

echo"$a";

}
//////////////////////////////////////////////////////////////////////////////

while ($zeile = mysql_fetch_object ($ergebnis)) {

//hier kommt die TAbelle!
bei Antwort benachrichtigen
xafford Ruderfreund „GB mit PHP, MySql: Limit für Einträge pro Seite?!?!“
Optionen

sorry wenn ich mich einmische, aber es wäre sinnvoller jeweils immer nur die benötigten datensätze zu holen:
<?php

include "connect_to.php";

$display=30;

if(empty($i)){$i=0;}

$sql = "SELECT name,text,page,mail,datum,zeit,id,ip FROM s_guestbook ORDER BY ID desc LIMIT $i,$display";

$ergebnis = mysql_query ($sql)or die("Die Abfrage ist fehlgeschlagen!");

while ($zeile = mysql_fetch_object ($ergebnis))

{

//hier kommt die Tabelle!

}

echo "<br /><a href="$PHP_SELF?i=$i">weitere Eintr&auml;ge</a>";

?>



Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
xafford Nachtrag zu: „sorry wenn ich mich einmische, aber es wäre sinnvoller jeweils immer nur die...“
Optionen

ich hab dummerweise was vergessen. $i muß ja auch erhöht werden, also vor der geschichte mit dem link ganz unten noch folgendes rein:
$i+=$display;

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Ruderfreund Nachtrag zu: „GB mit PHP, MySql: Limit für Einträge pro Seite?!?!“
Optionen

Jo, vielen Dank! Ich werd das dann mal ausprobieren!
Eine Frage hab ich noch:
Wenn ich dann die Links setze zu den einzelnen Einträgen:
1-10, 11-20,21-30...
Dann muss ja immer nach 10 Einträgen ein neuer Link automatisch erstellt werden! wie funktioniert das?

Und die Links müssen dann immer die einzelnen Einträpe per id raussuchen? (Bsp: Eintrag 21-30 ist dann $id=21 $id=30?)

mfg
Sebastian

bei Antwort benachrichtigen
Heinz_Malcher Ruderfreund „Jo, vielen Dank! Ich werd das dann mal ausprobieren! Eine Frage hab ich noch:...“
Optionen

weiss jetzt nicht wie das bei Xafford funktioniert, bei meinem Beispiel funktioniert das automatisch

bei Antwort benachrichtigen
xafford Ruderfreund „Jo, vielen Dank! Ich werd das dann mal ausprobieren! Eine Frage hab ich noch:...“
Optionen

wenn du für alle seiten eigene direktlinks haben willst, dann muß man das script etwas umstellen mit einer extra schleife.
limit funktioniert folgendermaßen:
du hast die sql-anweisung SELECT * FROM tabelle ORDER BY id DESC LIMIT 31,30
dies macht folgendes:
die datenbank führt virtuell erst die anfrage SELECT * FROM tabelle ORDER BY id aus, dann nimmt sie aus dem resultset die treffer 31 bis 60 und liefert nur diese zurück. dies hat 2 vorteile:
1. du überträgst nur das, was du brauchst
2. die datenbank erledigt die aufgabe nur diese 30 datensätze zu liefern schneller als ein php-script.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen