PHP- und MySQL-Paginierung

Lesezeit: 3 Minuten

PHP und MySQL Paginierung
Franz

Ich habe eine MySQL-Abfrage

SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \' 
ORDER BY 'timestamp'`

Ich möchte 10 Ergebnisse pro Seite paginieren. Wie kann ich es tun?

PHP und MySQL Paginierung
code_burgar

Hier ist ein schöner Ausgangspunkt:

<?php

// insert your mysql connection code here

$perPage = 10;
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$startAt = $perPage * ($page - 1);

$query = "SELECT COUNT(*) as total FROM redirect
WHERE user_id = '".$_SESSION['user_id']."'";
$r = mysql_fetch_assoc(mysql_query($query));

$totalPages = ceil($r['total'] / $perPage);

$links = "";
for ($i = 1; $i <= $totalPages; $i++) {
  $links .= ($i != $page ) 
            ? "<a href="https://stackoverflow.com/questions/2616697/index.php?page=$i">Page $i</a> "
            : "$page ";
}


$r = mysql_query($query);

$query = "SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \' 
ORDER BY 'timestamp' LIMIT $startAt, $perPage";

$r = mysql_query($query);

// display results here the way you want

echo $links; // show links to other pages

  • Aber wie kann ich die Links zu den anderen Seiten erstellen?

    – Francesc

    11. April 2010 um 10:47 Uhr

  • Wählen Sie COUNT für alle Ergebnisse, die mit Ihrer where-Klausel übereinstimmen, dividieren Sie die erhaltene Zahl durch Ihren perPage-Wert und Sie erhalten die Gesamtzahl der Seiten. Führen Sie dann einfach eine for-Schleife aus, um Links zu jeder Seite anzuzeigen.

    – code_burgar

    11. April 2010 um 10:51 Uhr

  • Aber für den Vorgänger? Kannst du bitte ein Beispiel setzen? Ich bin ein Neuling. Danke

    – Francesc

    11. April 2010 um 10:54 Uhr

  • Los geht’s, da müsstest du es wirklich hinbekommen

    – code_burgar

    11. April 2010 um 11:07 Uhr

1646252046 162 PHP und MySQL Paginierung
Markus Byers

Verwenden GRENZE.

SELECT *
FROM redirect
WHERE user_id = '35251' 
ORDER BY timestamp
LIMIT 40, 10

40 ist die Anzahl der zu überspringenden Datensätze, 10 die Anzahl der anzuzeigenden Datensätze.

Es gibt auch ein paar Probleme mit Ihrem PHP. Sie verwenden Backticks (keine einfachen Anführungszeichen), um Tabellen- und Spaltennamen einzuschließen. Und Sie sollten keine Zeichenfolgenverkettung verwenden, um Ihre Abfrage zu erstellen.

  • Es ist an sich nichts falsch daran, eine Zeichenfolgenverkettung zu verwenden, um eine SQL-Abfrage zu erstellen, wenn bekannt ist, dass die Daten sicher sind.

    – code_burgar

    11. April 2010 um 10:44 Uhr

  • @code_burgar: Es wird kein falsches Ergebnis liefern, aber es wird zu einem neuen Abfrageplan für jeden neuen Parametersatz führen. Sie sollten Bindungsparameter verwenden.

    – Mark Byers

    11. April 2010 um 13:22 Uhr

1646252046 617 PHP und MySQL Paginierung
Santosh Dangare

Hier ist mein Code

die die Schaltflächen „Weiter“ und „Zurück“ enthält

<?php  
    $limit = 3;  //set  Number of entries to show in a page.
    // Look for a GET variable page if not found default is 1.        
    if (isset($_GET["page"])) {    
    $page  = $_GET["page"];    
    }    
    else { $page=1;    
    } 
    //determine the sql LIMIT starting number for the results on the displaying page  
    $page_index = ($page-1) * $limit;      // 0

    $All_Users=mysqli_query($con,"select * from users limit $page_index, $limit");
    while($row=mysqli_fetch_array($All_Users))
    {
        //show  data in table or where you want..
    }
    $all_data=mysqli_query($con,"select count(*) from users");
    $user_count = mysqli_fetch_row($all_data);   // say total count 9  
    $total_records = $user_count[0];   //9
    $total_pages = ceil($total_records / $limit);    // 9/3=  3
    if($page >= 2){
        echo "<a href="https://stackoverflow.com/questions/2616697/blog.php?page=".($page-1)."" class="btn 
     customBtn2">Previous</a>";
      }
    
    if($page<$total_pages) {
        echo "<a href="blog.php?page=".($page+1)."" class="btn customBtn2">NEXT</a>";   
    }       
?>

  • Bitte posten Sie nicht nur Code als Antwort, sondern geben Sie auch eine Erklärung, was Ihr Code tut und wie er das Problem der Frage löst. Antworten mit einer Erklärung sind in der Regel hilfreicher und von besserer Qualität und ziehen mit größerer Wahrscheinlichkeit Upvotes an.

    – Pouria Hämati

    23. November 2020 um 5:48 Uhr

  • @PouriaHemati ok. Ich dachte, es wird für diese Frage reichen. Außerdem habe ich zum besseren Verständnis Commnets im Code hinzugefügt

    – Santosh Dangare

    23. November 2020 um 7:01 Uhr

Verwenden Sie die LIMIT-Klausel der Abfrage, um die Menge der Ergebnisse zu begrenzen, die Sie aus der Datenbank abrufen.

Sehen: http://dev.mysql.com/doc/refman/5.1/en/select.html

915730cookie-checkPHP- und MySQL-Paginierung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy