karla: Umblattern einer Seitenanzeige

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

  1. 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

    1. GET ist einfach auf ca. 1kb Daten beschränkt

      Huch..?

      1. 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

    2. 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

      1. 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 &gt; machen:

        echo '<a href="' . $_SERVER['PHP_SELF'] . "?" . $_GET['start'] . "=" . $weiter '">Weiter &gt;&gt;</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.

        --
        Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
        Zufällige Hinweise:
        ------------------------
        That's life - Es gibt im Leben[tm] keine Zurueck-Taste. (Fabian Transchel)
      2. 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

        1. Hallo Philipp,

          das war sehr hilfreich,
          vielen Dank für die Hilfe

          MfG

          Karla

  2. 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