Umblattern einer Seitenanzeige
karla
- php
1 Philipp Hasenfratz0 rob0 karla0 Dennis1 Philipp Hasenfratz0 karla
2 rob
Hallo,
ich will meine Daten nach einer Suchabfrage Seitenweise ausgeben. Auf
der ersten Seite werden die 10 Datensätze korrekt angezeigt, wenn ich aber die
zweite oder dritte Seite anklicke passiert nichts (sieht man immer noch die ersten
10 Datensätze).
ich habe folgende Code:
<?php
mysql_connect("localhost","","");
mysql_select_db ("log");
$select = mysql_query("select * from logs where line like '%tcp%'");
$res = mysql_num_rows($select);
$count=6;
$zeigen= floor($res/$count);
echo "$zeigen Seiten für $res Treffer<br>";
echo "6 Treffer pro Seite<p>";
if(!$start) { $start = 0.1; }
$result = mysql_query("select * from logs limit $start,$count");
#$result2=mysql_num_rows($result);
#echo "$result2\n";
echo "<table border="1">";
while ($zeile = mysql_fetch_array($result)) {
echo "<tr><td>$zeile[0]</td><td>$zeile[1]</td><td>$zeile[2]</td> <td>$zeile[3]</td
</tr>";
}
echo "</table><p>";
if($start > 0.1) {
$zurueck = $start - $count;
echo "<a href="$PHP_SELF?start=$zurueck"><< Zurück</a>";
}
for($i = 0; $i <= $zeigen; $i++) {
echo "<a href="$PHP_SELF?start=$n">$i </a>";
$n += $count;
}
$weiter = $start + $count;
if($res > $weiter) {
echo "<a href="$PHP_SELF?start=$weiter">Weiter >></a>";
}
?>
brauche ich hier POST oder GET Methoden um Variablen zu übergeben?
Wie ich weiss werden diese Methoden in Formular benutzt.
Wie kann ich weiter bzw. zurück blättern?
Gruß
Karla
Halihallo karla
mysql_connect("localhost","","");
Du solltest bei Zeiten ein Login und Passwort vergeben...
$zeigen= floor($res/$count);
$zeigen = ceil($res/$count);
Die letzte Seite existiert auch, auch wenn sie nicht ganz voll ist...
if(!$start) { $start = 0.1; }
Du übergibst $start dem LIMIT: LIMIT erwartet jedoch einen
ganzzahligen Wert, oder startest du immer bei dem ersten zehntel
(1/10) Datensatz?
if($start > 0.1) {
$zurueck = $start - $count;
echo "<a href="$PHP_SELF?start=$zurueck"><< Zurück</a>";
}
if ($start > 0) {
$zurueck = $start - $count;
if ($zurueck < 0) { $zurueck = 0; }
...
}
---
Das Problem ist aber soweit ich es überblicke:
http://www.php.net/register_globals!
Verwende $_GET['start'] oder $_POST['start'], je nach
Formularmethode.
brauche ich hier POST oder GET Methoden um Variablen zu übergeben?
Es geht beides. GET ist einfach auf ca. 1kb Daten beschränkt und in
der URL sichtbar.
Wie ich weiss werden diese Methoden in Formular benutzt.
... sie werden angegeben, ja.
Wie kann ich weiter bzw. zurück blättern?
Durch verwenden von den Arrays $_GET, $_POST und entsprechender
Formularmethode.
Viele Grüsse
Philipp
GET ist einfach auf ca. 1kb Daten beschränkt
Huch..?
Halihallo rob
GET ist einfach auf ca. 1kb Daten beschränkt
Huch..?
Ja, die Grösse der Datenmenge ist bei GET-Requests Client-bedingt
beschränkt. 1kb ist ein guter Kompromiss, der auf dem meisten Clients
funktionieren dürfte. Eine fest definierte untere oder auch obere
Schranke gibt es nicht, deshalb muss man vom worst-case ausgehen.
Viele Grüsse
Philipp
Hallo Leute,
Danke für die Antwort,
ich habe das Array Methode $_GET genommen und folgende Zeile eingefügt:
echo "<FORM METHOD="GET" ACTION="$PHP_SELF">";
und die Links folgendermassen modifiziert:
echo "<a href="$PHP_SELF?$_GET['start']=$weiter">Weiter >></a>";
Aber Umblättern funktioniert trotzdem nicht.
In php.ini ist die Variable register_globals deaktiv (off), ich will aber die Variable nicht
aktivieren.
Wo ist das Problem??
Gruß
Karla
Hi karla,
ich habe das Array Methode $_GET genommen und folgende Zeile eingefügt:
echo "<FORM METHOD="GET" ACTION="$PHP_SELF">";
Meinst du nicht, es wäre einfacher, wenn du dir das ganze escapen ersparen würdest?
Und dann bitte noch PHP_SELF direkt aus $_SERVER abfregen:
echo '<form method="get" action="' . $_SERVER['PHP_SELF'] . '">';
und die Links folgendermassen modifiziert:
echo "<a href="$PHP_SELF?$_GET['start']=$weiter">Weiter >></a>";
siehe oben
Aber Umblättern funktioniert trotzdem nicht.
du solltest aus den > h noch > machen:
echo '<a href="' . $_SERVER['PHP_SELF'] . "?" . $_GET['start'] . "=" . $weiter '">Weiter >></a>';
(Jetzt mal ganz ausführlich *g*)
In php.ini ist die Variable register_globals deaktiv (off), ich will aber die Variable nicht
aktivieren.
Solltest du auch nicht. Probier erst mal, ob es jetzt geht, vielleicht lag es nur am HTML im Link.
MfG, Dennis.
Halihallo karla
ich habe das Array Methode $_GET genommen und folgende Zeile eingefügt:
echo "<FORM METHOD="GET" ACTION="$PHP_SELF">";
Das ist richtig.
und die Links folgendermassen modifiziert:
echo "<a href="$PHP_SELF?$_GET['start']=$weiter">Weiter >></a>";
$_GET['start'] enthält der *Wert* des Parameters 'start'! - Der Name
muss im Link natürlich weiterhin 'start' bleiben. Also:
<a href="$PHP_SELF?start=$weiter"
Nur weiter oben in deinem Script, wenn du den Wert des
Parameters 'start' auslesen möchtest, schreibst du nicht $start,
sondern $_GET['start'].
In php.ini ist die Variable register_globals deaktiv (off), ich will aber die Variable nicht
aktivieren.
Genau das heisst es ja. register_globals=Off heisst eben, dass die
Parameter *nicht* als direkt ansprechbare Variablen importiert
werden, sondern lediglich über die Arrays $_GET oder $_POST
zugreifbar sind.
Viele Grüsse
Philipp
Hallo Philipp,
das war sehr hilfreich,
vielen Dank für die Hilfe
MfG
Karla
wenn ich aber die
zweite oder dritte Seite anklicke passiert nichts
Wie ist der Wert von register_globals in der php.ini?
Schätzungsweise kennt das Script die Variable $start (hinter LIMIT) nicht.
Nach Umbenennen in $_GET['start'] könnte es funktionieren.
brauche ich hier POST oder GET Methoden um Variablen zu übergeben?
Wie man sieht, werden die Variablen an den URL angehängt. Sie werden also per GET übergeben.
Scheinbar fehlen hier einige Grundlagen zu PHP und HTTP allgemein.
Nimm dir mal die Zeit und lese in SelfHTML. Dann könnte einiges klarer werden, z.B. was der Unterschied zwischen GET und POST ist.
Gruß, rob