[MySQL 4.1] MySQL Pagination

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [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 !!!

  • #2
    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
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      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 ...

      Kommentar


      • #4
        evt. $start = $_GET['start'] ??

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

        Kommentar


        • #5
          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 ?

          Kommentar


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

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

            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 :-)

            Kommentar


            • #7
              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 !

              Kommentar


              • #8
                Lies das http://de2.php.net/manual/de/languag...predefined.php

                Kommentar


                • #9
                  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 !!
                  Zuletzt geändert von Puma79; 14.11.2006, 03:04.

                  Kommentar


                  • #10
                    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

                    Kommentar

                    Lädt...
                    X