8
votes

PHP & MySQL Pagination

J'ai une requête MySQL

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


0 commentaires

4 Réponses :


2
votes

Utilisez la clausule limite de la requête pour limiter la quantité de résultats que vous récupérez de la base de données.

voir: http://dev.mysql.com/doc /refman/5.1/fr/Select.html


0 commentaires

7
votes

Utilisez limite .

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


2 commentaires

Il n'ya rien de mal intrinsèquement avec l'utilisation de la concaténation de chaînes pour créer une requête SQL si les données sont connues pour être sûres.


@Code_Burgar: Cela ne donnera pas le mauvais résultat, mais il aboutira à un nouveau plan de requête pour chaque nouvel ensemble de paramètres. Vous devez utiliser des paramètres de liaison.



28
votes

Voici un bon point de départ:

<?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='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


4 commentaires

Mais comment je peux créer les liens vers les pages d'autres?


Sélectionnez Compter pour tous les résultats correspondant à votre clause Where, divisez le numéro que vous obtenez par votre valeur de permanente et vous obtenez le nombre total de pages, puis effectuez une boucle pour faire écho à chaque page.


Mais pour le précédent? Pouvez-vous mettre un exemple s'il vous plaît? Je suis un nouveauvie.Merci


vous y allez, vous devriez vraiment être capable de le prendre à partir de là



2
votes

voici mon code strong>
qui contient le bouton Suivant et précédent

<?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='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>";   
    }       
?>


2 commentaires

S'il vous plaît ne publiez pas uniquement le code comme réponse, mais fournissez également une explication de votre code et de la manière dont il résout le problème de la question. Les réponses avec une explication sont généralement plus utiles et de meilleure qualité, et sont plus susceptibles d'attirer des upvotes.


@Pouriahemati Ok. Je pensais que ce sera suffisant pour cette question. Aussi, j'ai ajouté des commanets dans le code pour une meilleure compréhension