automatischer Seitenwechsel bei 25 Einträgen

shit, bin jetzt für 2 std. nicht mehr am pc aber danach, ich hoffe, es kommt zu einem ergebnis, danke euch schonmal im voraus!
 
Also ich bin mir zwar nicht sicher, warum Du für das select count(*) Statement als Ergebnis -1 bekommst, aber ich denke die Rechnung ($seite - 1) solltest Du vorher in eine extra Variable berechnen und diese dann nur aufrufen.

redlama
 
das Problem an der ganzen Sache ist ja, dass in $seite NICHTS drinsteht zun diesem Zeitpunkt... was wäre, wenn ich da einfach als Startwert eine 1 reingebe?
 
Nochmal von der Reihenfolge her:
Zuerst führst Du Dein count(*) Statement aus.
Da bekommest Du die Menge der gesuchten Datensätze.
Diese teilst Du dann durch 25 und rundest das Ergebnis auf (es gibt schließlich keine 0,6534 Seiten oder so).
Du zeigst die Links für die einzelnen Seiten an.
Dann gibst Du der Variable $seite den Wert 0.
In eine weitere Variable steckst Du das Ergebnis von $seite * 25.
Dann machst Du Dein select Statement mit limit Ergebnis von eben, 25 und legst die Ergebnisse auf die erste Seite.
$seite bekommt nur einen anderen Wert zugewiesen, wenn jemand z. B. auf Seite 2 will, dann gibst Du $seite den Wert1 und berechnest wieder $seite * 25 und machst mit dem Ergebnis Dein select Statement.

redlama
 
Nochmal von der Reihenfolge her:
Zuerst führst Du Dein count(*) Statement aus.
Da bekommest Du die Menge der gesuchten Datensätze.
Diese teilst Du dann durch 25 und rundest das Ergebnis auf (es gibt schließlich keine 0,6534 Seiten oder so).
JA

Du zeigst die Links für die einzelnen Seiten an.
Dann gibst Du der Variable $seite den Wert 0.
In eine weitere Variable steckst Du das Ergebnis von $seite * 25.
Dann machst Du Dein select Statement mit limit Ergebnis von eben, 25 und legst die Ergebnisse auf die erste Seite.
$seite bekommt nur einen anderen Wert zugewiesen, wenn jemand z. B. auf Seite 2 will, dann gibst Du $seite den Wert1 und berechnest wieder $seite * 25 und machst mit dem Ergebnis Dein select Statement.
Das anzeigen der Links ist noch nicht gemacht!
Der Wert in $seite ist mir persönlich unklar, weil am Anfang nichts drinsteht, dass -1, also müsste -1 drinstehen!
Die Multiplikation sollte richtig sein, ja
Dann NOCH EIN SELECT?!

Ich wäre momentan SEHR dankbar für einen Quelltext, an dem ich es mit meinem anschauen kann!

Gibt es irgendjemanden, der das schön öfters gemacht hat?!
 
uwee hat gesagt.:
Das anzeigen der Links ist noch nicht gemacht!
Der Wert in $seite ist mir persönlich unklar, weil am Anfang nichts drinsteht, dass -1, also müsste -1 drinstehen!
Die Multiplikation sollte richtig sein, ja
Dann NOCH EIN SELECT?!
Das Anzeigen der Links solltest Du gleich mit machen!
Am Anfang musst Du $seite auf 0 setzen.
Wie "noch ein select"?
Das select Statement muss dynamisch sein. Ich würde es so machen:
PHP:
if(isset($_GET["seite"]))
  $seite = $_GET["seite"];
else
  $seite = 0;
Dann kommen die Links (1, 2, ...) und unter den Links die 25 Datensätze der 1. Seite.
Drück jetzt jemand auf "2", dann wird die selbe Seite aufgerufen mit der Übergabe seite=1 (immer 1 weniger als die Zahl des Links), z. B. http://www.xyz.de/liste.php?seite=1
Dadurch wird $seite auf 1 gesetzt. Und das select Statement wird mit dem neuen berechneten Wert aufgerufen, damit die nächsten/anderen Datensätze angezeigt werden.
War das verständlich?

redlama
 
ich bin manchmal etwas schwer von begriff...
irgendwie is das alles für mich etwas verdreht, weil es operationen gibt, die vorher stattfinden müssen, sie es aber nicht können, weil hinterher erst die daten reinkommen

der quelltext, wie ich ihn momentan habe... wie gehabt: KEINE ergebnisse (müssten mittlerweile 510 sein)

PHP:
$suchen=($_POST['suchen']);
$erg_wort=($_POST['name']);
$sort=($_POST['ordnen']);
$max="25";
$seite="0";
$sql="";
$count="";
$result="";

if(isset($_GET['seite']))
	$seite = $_GET['seite'];
else
	$seite = 0;

if ($erg_wort!=""){
echo"<p>Treffer mit dem Schlagwort <b>",
($erg_wort), "</b></p>\n";
$sql="SELECT id,name,original_name,jahr,version,bild,cat,info,actors,fsk,quelle,kommentar,fsk2,version2 FROM dvd_uebersicht ".
 "WHERE $suchen LIKE'%" . ($erg_wort) . "%' " .
"ORDER BY $sort LIMIT ($seite-1)*$max,$max";
$count="SELECT COUNT(*) FROM dvd_uebersicht ".
 "WHERE $suchen LIKE'%" . ($erg_wort) . "%' " .
"ORDER BY $sort";
}
//echo $sql;
//echo $count "<br>";
$result=mysql_query($sql);
$seite=mysql_query($count);
 
das kann doch nicht sein, dass das so viel rumgehampel ist. Jedes Forum hat diese Funktion. Nur kann man sich das ja leider nicht angucken, weil es PHP ist.
 
Ist es jetzt gelöst?

Ansonsten noch mal ne Funktion die ich bei mri irgendwo auf der Pladde gefunden habe, die ein Query ausführt und Seitenweise ausgibt...

PHP:
function pquery($query,$page,$dpp)
 {
  $dpp  = (int) $dpp;
  $page = (int) $page;

  if( !$dpp )
        die('Einträge pro Seite nicht definiert!');
  $page = (!$page)?(1):($page);

  $sth = $this->query($query);
  $num = @mysql_num_rows($sth);

  if( $num > $dpp )
  {
   $pages = floor($num/$dpp);
   $pages = ($num%$dpp)?(++$pages):($pages);
  }
  else
   $pages = 1;

  if( $page > $pages )
        $page = $pages;

  /*** Evtl. anders lösbar ***/
  $pquery['page']   = $page;
  $pquery['pages']  = $pages;
  $pquery['pleft']  = ($page>1)?($page-1):(FALSE);
  $pquery['pright'] = ($page<$pages)?($page+1):(FALSE);
  $pquery['dpp']    = $dpp;
  $pquery['query'] = $query.' LIMIT '.(($page-1)*$dpp).','.$dpp);
  
  return $pquery;
 }

Zu den Parametern: $query ist das SQL-Statement, $dpp = Einträge pro Seite, $page = aktuelle Seite die angezeigt werden soll, zälend ab 1.
Zu der Sache ab /**** Anders lösbar ****/, Variablen haben die Funktion wie folgt:
$page = Aktuelle Seite, $pages = Anzahl aller Seiten, $this->pquery['pleft'] enthält die Seitenzahl wenn es eine Navi nach links gibts (Seiten <), das gleiche für $this->pquery['pright'] nur in die Blätterrichtung nach Rechts.
in $pquery['query'] steht dann das SQL-Statement drinen was noch ausgeführt werden muss.
Die Funktion liefert ein Array zurück, so wie es am Ende angelegt wurde.

Wenn du noch Fragen dazu hast, PN... ist hatl ggf. etwas anzupassen, da ich sie aus nem konrekten Anwendungsfall raushabe...
 
d.h. ich müsste praktisch NUR $sql ändern und das ganze dann unter meine ganz normale select-abfrage schreiben?!
 
Zurück