Ankündigung

Einklappen
Keine Ankündigung bisher.

Anzahl der Datensätze je Seite begrenzen

Einklappen

Neue Werbung 2019

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

  • Anzahl der Datensätze je Seite begrenzen

    Erstmal ein herzliches Hallo!

    Ich habe folgendes Problem: Ich möchte gerne die ausgelesenen Datensätze einer Mysql-Datenbank je Seite begrenzen. Jetzt habe ich gesehen, dass man das mit dem Befehl LIMIT machen kann.

    Was muss ich aber jetzt machen, um am Ende der Seite einen Button zu bekommen, mit dem ich zu den nächsten 10 Datensätzen blättern kann (und natürlich von den nächsten Seiten wieder zurück)?

    Das übersteigt leider völlig meine Fähigkeiten, wäre für mich aber sehr wichtig, da ich Bilder anzeigen möchte und den Usern keine Ladezeiten von 30 Minunten zumuten möchte, bevor die ersten Bild zu sehen sind.

    Kann mir da jemand helfen?

    Ich wünsche jedenfalls schon einmal einen guten Rutsch ins neue Jahr und bedanke mich für eure Bemühungen.

    Gruß
    Loenne

    So sieht es jetzt aus:
    PHP-Code:
    <?php
    $farbe
    ="#dddddd";
    $res=mysql_query("SELECT auto_id,durchmesser,material,img_front,img_back FROM knopfmeldung ORDER BY auto_id LIMIT 0, 10");
    while (
    $dsatz=mysql_fetch_assoc($res))
    {
        
    ?>
        <tr>
            <td align="center" valign="middle" bgcolor="<?php echo $farbe ?>"><?php echo $dsatz["durchmesser"]?> mm</td>
            <td align="left" valign="middle" bgcolor="<?php echo $farbe ?>"><?php echo $dsatz["material"?></td>
            <td align="center" valign="middle" bgcolor="<?php echo $farbe ?>">[img]image_uploads/<?php echo $dsatz[[/img]" width="144"></td> 
            <td align="
    center" valign="middle" bgcolor="<?php echo $farbe ?>">[img]image_uploads/<?php echo $dsatz[[/img]" width="144"></td> 
        </tr>

  • #2
    LIMIT index, anzahl

    Für die ersten 10 Ergebnisse benötigst du, wie schon in deinem Beispiel genannt: 0, 10
    Für die nächsten 10 eben 10, 10
    Für 20-30 dann 20, 10.
    Du musst also nur den index += 10 Seite setzen.

    Kommentar


    • #3
      http://www.php-faq.de/q/q-mysql-seitenweise.html

      Kommentar


      • #4
        Ich wünsche euch ein frohes neues Jahr und möchte mich schon mal für die ersten Antworten ganz herzlich bedanken.

        Die Links haben mich etwas weiter gebracht, aber leider bin ich noch nicht ganz am Ziel.

        Ich habe die Sachen soweit eingebaut und es werden mir auch meine ersten 10 Datensätze angezeigt, aber leider klappt das
        mit dem weiterblättern nicht. Er zeigt mir als Varriable in der Befehlszeile oben immer 10 an und zeigt mir logischerweise dann
        auch immer wieder nur die ersten 10 (es sind mehr als 40 Datensätze vorhanden).

        Kann jemand sehen, was ich da falsch mache?

        Vielen Dank für eure Bemühungen!!

        Gruß
        Loenne
        PHP-Code:
        <?php
        $farbe
        ="#dddddd";
        // Datenbankabfrage ausführen.
        $query    "SELECT auto_id,durchmesser,material,img_front,img_back FROM ".$table." ORDER BY auto_id LIMIT ".$start.",".$limit;
        $resultID = @mysql_query($query);
        while (
        $data mysql_fetch_array($resultID))
        {
            
        ?>
            <tr>
                <td align="center" valign="middle" bgcolor="<?php echo $farbe ?>"><?php echo $data["durchmesser"]?> mm</td>
                <td align="left" valign="middle" bgcolor="<?php echo $farbe ?>"><?php echo $data["material"?></td>
                <td align="center" valign="middle" bgcolor="<?php echo $farbe ?>">[img]image_uploads/<?php echo $data[[/img]" width="144"></td> 
                <td align="
        center" valign="middle" bgcolor="<?php echo $farbe ?>">[img]image_uploads/<?php echo $data[[/img]" width="144"></td> 
            </tr>
            <?php
            if (
        $farbe=="#dddddd")
            
        {
                
        $farbe="#eeeeee";
            }
            else
            {
                
        $farbe="#dddddd";
            }
        }
        ?>
        </table>
                  
                  </td>
          </tr>
          <tr>
            <td></td>
            <td align="center" valign="middle">
        <?php // Zurück- und Vorblättern
        if ($start 0)
        {
          
        $newStart = ($start $limit 0) ? : ($start-$limit);
          echo 
        "[url=".$_SERVER['PHP_SELF']."]&lt;&lt; zurück[/url]";
        }

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

        Kommentar


        • #5
          gelöscht

          Kommentar


          • #6
            gelöscht

            Kommentar


            • #7
              Zitat von Loenne
              Ich wünsche euch ein frohes neues Jahr [...]
              Zitat von Loenne
              Ich wünsche euch ein frohes neues Jahr [...]
              Zitat von Loenne
              Ich wünsche euch ein frohes neues Jahr [...]
              Auch von mir: Ein dreifaches Hoch auf das neue Jahr 2006

              Kommentar


              • #8
                Vielen Dank!!

                Leider hatte sich vorhin irgendwie mein I-Net-Anschluss verabschiedet und ich konnte nicht mehr sehen, ob nun etwas abgesendet war oder nicht. Vielleicht können die Mods die überflüssigen Eintragungen ja löschen.

                Hast du denn vielleicht auch einen Lösungsansatz?

                Gruß
                Loenne

                Kommentar


                • #9
                  Mir fällt gerade ein, dass der erste Teil evtl. auch falsch sein könnte:

                  PHP-Code:
                  <?php 
                  $table    
                  "knopfmeldung";    // Der Name der Datenbanktabelle

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

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

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

                  Kommentar


                  • #10
                    $start = (isset($_GET['start'])) ? abs((int)$_GET['start']) : 0;

                    Gruß
                    phpfan

                    Kommentar


                    • #11
                      @phpfan

                      SUPER - es funktioniert!!!!

                      Da wäre ich alleine in den nächsten hundert Jahren nicht drauf gekommen.

                      Ist das Skript in diesem Link dann auch falsch? http://www.php-faq.de/q/q-mysql-seitenweise.html

                      Wie dem auch sei, du hast mich "gerettet" und dafür herzlichen Dank!!

                      Alles Gute für 2006!

                      Gruß
                      Loenne

                      Kommentar


                      • #12
                        Zitat von Loenne
                        Ist das Skript in diesem Link dann auch falsch? http://www.php-faq.de/q/q-mysql-seitenweise.html
                        Es ist insofern falsch, dass es vorraussetzt, dass register_globals aktiviert ist, was seit PHP 4.2 standardmäßig nicht mehr der Fall ist.

                        Schau dir am besten auch einmal dieses Kapitel an: http://tut.php-q.net/get.html

                        Kommentar


                        • #13
                          Kann mir noch jemand sagen, wie ich die Datensätze so sortiert bekomme, dass die Neusten zuerst angezeigt werden? In der Datenbank befindet sich ein Feld mit der Bezeichnung "zeitstempel" und dem Typ "datetime". Die Einträge darin sehen so aus: 2005-12-30 14:40:25.

                          Könnte man danach sortieren und wenn ja, was muss ich machen?

                          Herzlichen Dank für eure Bemühungen!

                          Gruß
                          Loenne

                          Kommentar


                          • #14
                            Klar geht das, bitte das Manual oder die Forensuche dafür bemühen.

                            Kommentar


                            • #15
                              Ich hatte schon gesucht, aber nichts passendes gefunden. Jetzt hat es aber geklappt, da ich noch ein paar andere Suchbegriffe probiert habe.

                              Die Zauberformel lautet: ORDER BY zeitstempel DESC

                              Wobei "zeitstempel" meine eigene Bezeichnung ist.

                              Trotzdem Danke!

                              Gruß
                              Loenne

                              Kommentar

                              Lädt...
                              X