PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   SQL / Datenbanken (https://www.php-resource.de/forum/sql-datenbanken/)
-   -   [MySQL 4.1] MySQL Pagination (https://www.php-resource.de/forum/sql-datenbanken/77988-mysql-4-1-mysql-pagination.html)

Puma79 14-11-2006 03:19

[MySQL 4.1] MySQL Pagination
 
Hi !

Ich habe ein kleines Problem mit dem Paging der Datensätze.

Folgenden Code habe ich im Net gefunden bei mir eingebaut und soweit funtioniert es auch fast das Script:

<?php
$host = "localhost"; // MySQL - Zielrechner.

$user = "root"; // Dein Userlogin.
$password = ""; // Dein Datenbankpasswort.

$database = "test"; // Datenbank

$table = "test_tabelle"; // Der Name der Datenbanktabelle

// Datendefinition für die Clientausgabe
$start = (isset($start)) ? abs((int)$start) : 0;
$limit = 10; // Datensätze pro Ausgabeseite

// Verbindung zu MySQL-Datenbank herstellen oder sterben.
@mysql_connect($host,$user,$password)
or die("Abbruch: Verbindung zu '$host'"
." konnte nicht hergestellt werden.");

// Benötigte Datenbank auswählen oder sterben.
@mysql_select_db($database)
or die("Abbruch: Datenbank '$database' konnte nicht"
." selektiert werden.<br><br>MySQL sagt: ".mysql_error());

// Feststellen der Anzahl der verfügbaren Datensätze.
$resultID = @mysql_query("SELECT COUNT(name) FROM ".$table);
$total = @mysql_result($resultID,0);

// Ggf. $start korrigieren (falls Parameter in
// der URL manipuliert wurde)
$start = ($start >= $total) ? $total - $limit : $start;

// Datenbankabfrage ausführen.
$query = "SELECT name,ort FROM ".$table
." LIMIT ".$start.",".$limit;
$resultID = @mysql_query($query);

// Ergebnisse lesen und an den Client ausgeben
while ($data = mysql_fetch_array($resultID))
{
echo $data["name"].": ".$data["ort"]."<br>";
}

// Zurück- und Vorblättern
if ($start > 0)
{
$newStart = ($start - $limit < 0) ? 0 : ($start-$limit);
echo "<a href=".$_SERVER['PHP_SELF']."?start=".$newStart
.">&lt;&lt; zurück</a>";
}

if ($start + $limit < $total)
{
$newStart = $start + $limit;
echo " <a href=".$_SERVER['PHP_SELF']."?start=".$newStart
.">vor &gt;&gt;</a>";
}
echo "Start:".$start;
echo "New:".$newStart;
?>


Allerdings wenn ich auf den Link klicke dann wird die $start nicht erhöht.(glaube ich zumindest)

Kennt jemand denn Fehler im script oder hat einen denkansatz ?

Danke !!!

jahlives 14-11-2006 03:29

Regeln gelesen ? Nein, dann bitte nachholen und php-Tags für den Code verwenden.
Zitat:

Allerdings wenn ich auf den Link klicke dann wird die $start nicht erhöht.(glaube ich zumindest)
Religion und Programmierung kommt nicht gut ;) Du kannst ja zu Testzwecken die Vars z.B. mit var_dump($var_name); ausgeben und sehen ob sie deinen Erwartungen entsprechen.
Hau auch mal noch alle @ vor den Funktionsaufrufen raus, die sind zur Fehlerfindung eher hinderlich.

Gruss

tobi

Puma79 14-11-2006 03:32

SORRY ! Regeln les ich gleich mal ! Danke für den Tipp mit den Var_dumps. Habe es mit echo versucht die Variabeln auszulesen ...Mal sehen ob ich es so besser finde ...

zonthor 14-11-2006 03:33

evt. $start = $_GET['start'] ??

aber ist das nicht erher ein PHP-Problem und nicht Datenbank :confused:

Puma79 14-11-2006 03:36

Also die Variable $start bleibt definitiv 0 nach drücken des Links. Also bleibt die SQL Abfrage mit dem Limit immer 0,10 deshalb seh ich immer nur die ersten 10 einträge.

Die Aktuelle Frage lautet also:

Wie bekomme ich die Variable $start geändert durch drücken des Links ?

Puma79 14-11-2006 03:39

Zitat:

Original geschrieben von zonthor
evt. $start = $_GET['start'] ??

aber ist das nicht erher ein PHP-Problem und nicht Datenbank :confused:


He fast ! Bekomme jetzt nur ne Fehlermeldung: weil anfang des Scripts die Variable undefiniert ist.

Dene ich habs gleich ... Post dann den richtigen Code mit Tags :-)

Puma79 14-11-2006 03:44

Also Problem gelöst !

Der funktionierend Code lautet:

PHP-Code:

<?php
$host     
"localhost";  // MySQL - Zielrechner.
                          
$user     "root";         // Dein Userlogin.
$password "";      // Dein Datenbankpasswort.

$database "test";  //  Datenbank
                                 
$table    "test_tabelle";    // Der Name der Datenbanktabelle

// Datendefinition für die Clientausgabe
$start $_GET['start'];
$start = (isset($start)) ? abs((int)$start) : 0;
$limit 10;                     // Datensätze pro Ausgabeseite

// Verbindung zu MySQL-Datenbank herstellen oder sterben.
mysql_connect($host,$user,$password)
   or die(
"Abbruch: Verbindung zu '$host'"
         
." konnte nicht hergestellt werden.");

// Benötigte Datenbank auswählen oder sterben.
mysql_select_db($database)
   or die(
"Abbruch: Datenbank '$database' konnte nicht"
         
." selektiert werden.<br><br>MySQL sagt: ".mysql_error());

// Feststellen der Anzahl der verfügbaren Datensätze.
$resultID = @mysql_query("SELECT COUNT(name) FROM ".$table);
$total    = @mysql_result($resultID,0);

// Ggf. $start korrigieren (falls Parameter in
// der URL manipuliert wurde)
$start    = ($start >= $total) ? $total $limit $start;

// Datenbankabfrage ausführen.
$query    "SELECT name,ort FROM ".$table
           
." LIMIT ".$start.",".$limit;
$resultID = @mysql_query($query);

// Ergebnisse lesen und an den Client ausgeben
while ($data mysql_fetch_array($resultID))
{
  echo 
$data["name"].": ".$data["ort"]."<br>";
}

// Zurück- und Vorblättern
if ($start 0)
{
  
$newStart = ($start $limit 0) ? : ($start-$limit);
  echo 
"<a href=".$_SERVER['PHP_SELF']."?start=".$newStart
      
.">&lt;&lt; zurück</a>";
}

if (
$start $limit $total)
{
  
$newStart $start $limit;
  echo 
" <a href=".$_SERVER['PHP_SELF']."?start=".$newStart
      
.">vor &gt;&gt;</a>";
}
?>

Vielen Danke für die Hilfe und das um die Uhrzeit !

zonthor 14-11-2006 03:50

Lies das http://de2.php.net/manual/de/languag...predefined.php ;)

Puma79 14-11-2006 03:54

Ja eigentlich kenn ich das, bin nur nicht drauf gekommen. Bin noch nicht so praxiserfahren mit php und mysql. Aber ich arbeite dran ! :-)

Aber danke für den Link !!

martini122 03-12-2011 00:42

Hi Leute,

erstmal sorry dass ich diesen alten Threat wieder "aufwärme", aber ich habe es anhand des Beispiels hier hinbekommen die Pagination auf meiner Seite zu integrieren.

Es geht auch auf der Hauptseite alles super, allerdings möchte ich in Wordpress auf eine Seite ebenfalls die Pagination einfügen.
Hier ergibt sich folgendes Problem:

?page_id=620 => dies ist meine Seite nach der Domain

hier funktioniert dann leider die Pagination nicht.

Kann mir jmd. von hier vielleicht einen Tipp geben wie dies zu realisieren ist?

Vielen Dank und Grüße

martini


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:39 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG