Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[MySQL 4.1] MySQL Pagination [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[MySQL 4.1] MySQL Pagination


 
Puma79
14-11-2006, 02:19 
 
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, 02:29 
 
Regeln gelesen ? Nein, dann bitte nachholen und php-Tags für den Code verwenden.

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, 02: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, 02:33 
 
evt. $start = $_GET['start'] ??

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

 
Puma79
14-11-2006, 02: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, 02:39 
 
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, 02:44 
 
Also Problem gelöst !

Der funktionierend Code lautet:


<?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) ? 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, 02:50 
 
Lies das http://de2.php.net/manual/de/language.variables.predefined.php ;)

 
Puma79
14-11-2006, 02: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
02-12-2011, 23: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 20:59 Uhr.