gästebuch seite 2 3 usw...

Original geschrieben von Nuinmundo
Und etz speicherste statt der Ausgabe die Daten einfach in Arrays!!

sorry...aber könntest du mir evntl sagen, wie es genau geht? ich bekomm das einfach nicht auf die reihe! :(
 
also, ich habe dies folgendermaßen gelöst....

PHP:
if (isset ($_GET["offs"]) )
{
  $offs = $_GET["offs"];
} else {
  $offs = 0; //Standard Wert 0. Du willst ja am Anfang beginnen
}

if (isset ($_GET["num"]) )
{
  $num = $_GET["num"];
} else {
  $num = 10; // Wieviele Datensätze auf einer Seite angezeigt werden.
}

$query = "SELECT * FROM blah LIMIT $offs, $num";
$q = mysql_query ($query);

$anz = mysql_num_rows ($q); // Damit wir wissen wieviele Datensätze es insgesamt gibt.

echo "Datensätze von ";
echo $offs + 1;

echo " bis ";
if ($offs + $num > $anz )
{
  echo $anz;
} else {
  echo $offs + $num;
}
echo " werden angezeigt<br>";

$actual_page = ($offs / $num) + 1; //Dies ist die aktuelle Seite.

// Navigationsleiste << 1 2 .... >>
echo "Seite: ";
if ($actual_page != 1)
{
  //Der neue Offset-Wert ist der aktuelle minus der Zahl der Datensätze auf einer Seite
  $foo = $offs - $num;
  // Der Link um eine Seite zurück zu gehen (<<)
  echo "<a href='index.php?offs=$foo&num=$num'>&lt;&lt;</a>&nbsp;";
}

for ($i = 0; $i < ceil ($anz / $num); $i++)
{
  $foo = $i + 1;
  $offsfoo = $i * $num;
  if ($actual_page != $i + 1)
  {
    echo "<a href='index.php?offs=$offsfoo&num=$num'>$foo</a>&nbsp;";
  } else {
    echo "<u>$foo</u>&nbsp;";
  }
}

if ($actual_page < ceil ($anz / $num) )
{
  $foo = $offs + $num;
  echo "<a href='index.php?offs=$foo&num=$num'>&gt;&gt;</a>&nbsp;";
}
// ENDE der Navigationsleiste

Naja... es sieht auf den ersten Blick etwas verwirrend aus. Ist aber sehr flexibel einsetzbar... In Arrays kannst du die Daten dann auch speichern. Du kannst vorher auch verschiedene "ORDER BY"-clauses einfügen....

~Won_Gak~
 
Original geschrieben von HAL
(die db-abfrage innerhalb der eigentlichen db-abfrage checkt die anzahl der posts, die natürlich in einer anderen tabelle als die nachrichten selber gepostet sind. es ist eigentlich kein gästebuch, sondern ein einzelner foren-thread (man soll klein anfangen *g*))

aus performance sicht nich so schlau: ich würds mit joins machen oder warten, bis mysql 4.1 beta is und dich über subselects freuen =)
 
Original geschrieben von won_gak
also, ich habe dies folgendermaßen gelöst....

Naja... es sieht auf den ersten Blick etwas verwirrend aus. Ist aber sehr flexibel einsetzbar... In Arrays kannst du die Daten dann auch speichern. Du kannst vorher auch verschiedene "ORDER BY"-clauses einfügen....

~Won_Gak~

schön---ich hab die abfrage jetzt einfefügt, aber es wird immer nur die erste seite angezeigt. es kommen einfach keine links zu den anderen.
 
???

hast du genug datensätze?

das script ist auch für PHP >=4.2 gedacht...
du musst dann in der php.ini nachsehen wie register_globals gesetzt ist...

überprüfe die Variable $_GET["num"] und $num nocheinmal....

bei mir klappt's

~WonGak~
 
Original geschrieben von won_gak
???

hast du genug datensätze?

das script ist auch für PHP >=4.2 gedacht...
du musst dann in der php.ini nachsehen wie register_globals gesetzt ist...

überprüfe die Variable $_GET["num"] und $num nocheinmal....

bei mir klappt's

~WonGak~

ich hab php4.3, register_globals=on und ich weiss nicht, was an $num falsch sein kann...
ich habe bis jetzt knapp 40 datensätze, und egal ob ich 2 oder 10 pro seite anzeigen lasse, kommt immer nur die erste seite.
 
dann guck mal ob die variable $i in der FOR-schleife nicht irgendwie anderweitig verwendet wird... setz mal einfach immer zwischendurch ein paar test ECHOs. Eben immer dort, wo es interessant wäre den Inhalt von variablen herauszufinden.

$anz würde ich mir anzeigen lassen... dann weisst du wieviele Datensätze beim Script ankommen.

$num, damit du weisst wieviele angezeigt werden sollen.

$i in der Schleife, dann weisst du wie oft die Schleife durchlaufen wird (sicherlich dann nur einmal)...

etc..
 
Original geschrieben von won_gak
dann guck mal ob die variable $i in der FOR-schleife nicht irgendwie anderweitig verwendet wird... setz mal einfach immer zwischendurch ein paar test ECHOs. Eben immer dort, wo es interessant wäre den Inhalt von variablen herauszufinden.

$anz würde ich mir anzeigen lassen... dann weisst du wieviele Datensätze beim Script ankommen.

$num, damit du weisst wieviele angezeigt werden sollen.

$i in der Schleife, dann weisst du wie oft die Schleife durchlaufen wird (sicherlich dann nur einmal)...

etc..
anz ist immer so viel wie auf der seite angezeigt werden, num ist halt was ich angegeben habe. die schleife wird natürlich nur enmal durchlaufen. und i hab ich nirgends auf meiner seite, wenn es nicht in deinem script falsch verwendet wird, dann liegts nich daran.
 
Zurück