PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Begrenzte Anzahl von Einträgen pro Seite?



misanthrop
05-03-2003, 14:44
Tach,
also ich hab mir jetzt ein Gästebuch in Php gebastelt. Jetzt möchte ich aber, dass immer nur ca. 10 Einträge pro Seite gezeigt werden, und das man dann unten auf nächste Seite klickt und dann die nächsten 10 Einträge angezeigt werden...

Wie mache ich das am besten?

Jana
05-03-2003, 16:47
Da gibt es eine Menge Möglichkeiten.
Hier nur einmal ein paar Ideen.

1. Man kann einen Javascript-Scroller mit up and down einsetzen.
Dadurch kann man alle Einträge auf wenig Raum darstellen.
2. Man läßt sich 10 Einträge auf einem <div>Layer darstellen und benutzt
Buttons um diese zu zeigen oder zu verstecken.
Weiß man hier die Anzahl der Einträge nicht, so muß man dynamisch-erzeugte
Layer verwenden.
Das hat zur Folge, daß in NS4 nichts mehr funktioniert.
3. Mit PHP habe ich im Moment nicht die geniale Idee, wie man mit einer beliebigen
Zahl von Einträgen umgeht. ;)
Aber du bekommst sicher noch mehr Vorschläge.

Gaert
05-03-2003, 19:31
Hallo misanthrop!

Die einfachste Möglichkeit ist eine Seitenvariable mitzugeben...
Mit der bestimmst du dann den Start und entwert für das LIMIT in deiner mysql abfrage.

Beispiel:


$page = 1; //erste Seite -> diese Variable gibst du über die URL mit
$anzahl = 10; //Soviele Einträge hast du pro Seite

//jetzt bestimmen wir die Grenzen für LIMIT
$from = ($page - 1) * $anzahl;

$sql = "SELECT * FROM guestbook LIMIT $from, $anzahl";
//... ein MySQL Fetch gibt dir nun die 10 Einträge für die entsprechende Seite aus...


Gruß,

Gaert

Jana
05-03-2003, 20:36
Die Idee hatte ich auch;
aber wie erzeugst du die Seiten ohne zu wissen wie viele es sind?
Es manuell zu machen ist praktisch nicht möglich.

msi
05-03-2003, 20:44
oder so:



$sql = "select * from table";
$res = mysql_query($sql);
$count = 0;
$per_page = 7; // Wieviele Einträge sollen pro Seite angezeigt werden?
$countb = 0;
if (isset($_GET['page'])) $page=$_GET['page'];
else $page=1;

while ($arr=mysql_fetch_array($res)) {
$count++;
if ($count >= ($page-1) *$per_page+1 && $count<= ($page-1)*$per_page + $per_page) {
$countb++;
// Daten anzeigen ($count'er eintrag insgesamt, $countb'ter Eintrag der angezeigt wurde)
}
}

// $count daten vorhanden $countb wurden angezeigt (evtl. auch 0 (Seitenzahl zu hoch))

Gaert
05-03-2003, 23:54
@msi: Sieht schön aus, is aber nicht sehr performant... stell dir vor du hast 5000 Einträge und willst die letzten 5 darstellen!

@Jana

Die Idee hatte ich auch;
aber wie erzeugst du die Seiten ohne zu wissen wie viele es sind?
Es manuell zu machen ist praktisch nicht möglich.

Klar weiss ich wieviele es sind:



//Wie viele Seite haben wir denn?
$sql = "SELECT COUNT(*) AS TOTAL FROM guestbook";
$result = mysql_query($sql);
$rec = mysql_fetch_array($result);
$maxpages = ceil($rec['TOTAL'] / $anzahl);


EDIT:
Ich hab oben diese Zeile verändert!
$sql = "SELECT * FROM guestbook LIMIT $from, $anzahl";

Jana
06-03-2003, 06:52
Na ja, wenn man auf der Leitung sitzt sollte man nicht runter gehen. ;)

msi
06-03-2003, 18:11
Original geschrieben von Gaert
@msi: Sieht schön aus, is aber nicht sehr performant... stell dir vor du hast 5000 Einträge und willst die letzten 5 darstellen!


da hast du Recht, aber für kleiner Tabellen, auf die wenige zugreifen geht das schon.

localhost
17-04-2003, 15:39
ich hab dazu noch ne fragen


$sql = "select * from table";
$res = mysql_query($sql);
$count = 0;
$per_page = 7; // Wieviele Einträge sollen pro Seite angezeigt werden?
$countb = 0;
if (isset($_GET['page'])) $page=$_GET['page'];
else $page=1;

while ($arr=mysql_fetch_array($res)) {
$count++;
if ($count >= ($page-1) *$per_page+1 && $count<= ($page-1)*$per_page + $per_page) {
$countb++;
// Daten anzeigen ($count'er eintrag insgesamt, $countb'ter Eintrag der angezeigt wurde)
}
}

// $count daten vorhanden $countb wurden angezeigt (evtl. auch 0 (Seitenzahl zu hoch))


pack ich das in eine extro datei und link das dan so gbook.php?extradatei?=x

oder !??!?!,.,