• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Automatische Blätterfunktion

h4nnes

New member
Hallo,
wir haben gerade ein Projekt, bei dem wir eine Seite für ein Display (was als Aushang im Foyer hängt) zu bauen. Gefüttert wird die Seite von einer MySQL DB, was auch schon super funktioniert. Unser Problem ist jetzt, dass wir irgendwie ne Blätterfunktion brauchen, die automatisch nach einer bestimmten Zeilenanzahl eine neue Seite generiert und dann durch die einzelnen Seiten läuft, dass vll jede 20 Sekunden eine neue Seite angezeigt wird. Zuerst wollen wir alles per AutoScroll machen, aber das kommt leider net so gut rüber, auf dem Display.
Könnte mir jemand in Bezug auf die Blätterfunktion weiterhelfen?

Danke schonmal.

Gruß Johannes
 
LIMIT und der zugehörige OFFSET in MySQL werden dir helfen Einträge seitenweise aus zugeben. Automatisches öffnen kannste mit Javascript oder dem HTML Tag meta mit http-equiv="refresh" machen
 
also ich lese die daten jetzt so aus:

Code:
<?php

$seite = $_GET["seite"];  //Abfrage auf welcher Seite man ist

//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
   {
   $seite = 1;
   }

//Verbindung zu Datenbank aufbauen

include("../config.php");	


//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite = 3;

//Ausrechen welche Spalte man zuerst ausgeben muss:

$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;


//Tabelle Abfragen
//Tabelle heißt hier einfach: Tabelle
$abfrage = "SELECT * FROM eintrag LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
    {
   echo $row->text."<br>"; // Hier die Ausgabe der Einträge
   }


//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5


//Wieviele Einträge gibt es überhaupt

//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id

$result = mysql_query("SELECT id FROM eintrag");
$menge = mysql_num_rows($result);

//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;

//Ausgabe der Seitenlinks:
echo "<div align=\"center\">";
echo "<b>Seite:</b> ";


//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
   {
   $b = $a + 1;

   //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
   if($seite == $b)
      {
      echo "  <b>$b</b> ";
      }

   //Aus dieser Seite ist der User nicht, also einen Link ausgeben
   else
      {
      echo "  <a href=\"?seite=$b\">$b</a> ";
      }


   }
echo "</div>";
?>

wie wäre es dann mit dem automatischen seitenwechsel möglich? und gibt es eine möglichkeit die Seitenzahl nicht von den Einträgen abhängig zumachen, sondern von einer Zeilenzahl, also sobald zB 70 Zeilen erreicht sind, soll eine neue Seite geladen werden.

Danke schonmal.

Gruß Johannes
 
Anzahl Seiten würde ich vor den Einträgen abfragen, da du dann notfalls die Seite korrigieren kannst, wenn es diese nicht mehr geben sollte. Außerdem solltest du nicht in php zählen sondern in MySQL (count), das ist effizienter da nicht erst alle Datensätze durch die Gegend geschoben werden müssen. Wenn du den Primary Key zählt, könnte ich mir sogar vorstellen das nicht mal MySQL zählen muss, sondern das irgendwo ablesen kann.

... nicht von den Einträgen abhängig zumachen, sondern von einer Zeilenzahl, also sobald zB 70 Zeilen erreicht sind, soll eine neue Seite geladen werden.

Sind Zeilen und Einträge nicht das Selbe? Oder verstehst du unter Zeilen, Zeilen die in der Ausgabe gemacht werden. Gehen tut das sicherlich, die Frage ist wie aufwendig dass wird (programmiertechnisch als auch Laufzeittechnisch). Die kann ich dir allerdings erst beantworten wenn ich weiß wie aus einem Eintrag mehrere Zeilen entstehen.

Weiterleiten geht wie ich bereits gesagt habe, entweder mit Javascript oder mit HTML. Für ersteres müsstest du mit setTimeout und window.location.href arbeiten (mal bei SELFHTML 8.1.2 (HTML-Dateien selbst erstellen) vorbeischauen).
Letzteres geht mit <meta http-equiv="refresh" content="$SEKUNDEN; $URL"> aber auch das findest du bei SELFHTML 8.1.2 (HTML-Dateien selbst erstellen)
 
Zurück
Oben