Disons que j'ai 50 lignes dans une table MySQL. Je veux sélectionner les dix premiers (LIMIT 10
), mais je veux ensuite pouvoir sélectionner les 10 prochains sur une autre page.
Alors, comment puis-je commencer ma sélection après la rangée 10?
Requête mise à jour:
mysql_query("
SELECT * FROM `picdb`
WHERE `username` = '$username'
ORDER BY `picid` DESC
LIMIT '$start','$count'
")
Je recommande de travailler en obtenant la première page en utilisant:
LIMIT 0, 10
puis pour la deuxième page
LIMIT 10, 10
puis
LIMIT 20, 10
pour la troisième page, et ainsi de suite.
LIMIT 10
LIMIT 10 OFFSET 10
Depuis les MySQL 5.1 docs sur la syntaxe SELECT
:
Pour la compatibilité avec PostgreSQL, MySQL prend également en charge LIMIT row_count Syntaxe de décalage OFFSET.
Cette question est ancienne, mais je veux juste ajouter un code qui n'est pas codé en dur, la réponse chaos apportée signifie que vous devrez coder en dur vos scripts (instruction Select). vous pouvez obtenir les mêmes résultats en obtenant le nom du fichier, puis en sélectionnant des données dans la base de données en fonction de la page en cours, sans coder en dur votre instruction select.
$page = basename($_SERVER['SCRIPT_FILENAME']);
$page_counter = rtrim($page, ".php");
//setting your limit
$start = 0;
$limit = 10;
//if current page is not index.php then $start = ($limit * page_counter);
// e.g if current page is 1.php then $start = ($limit * 1) = 10
//if current page is 2.php then $start = ($limit * 2) = 20
if ($page !== 'index.php') {
$start = ($limit * $page_counter);
}
//getting row count
$ROW_COUNT = $db->query('SELECT * from tableName')->rowCount();
//getting number of rows left in the table
$rows_left = ("SELECT * FROM tableName limit ?,?");
$rows_left = $db->prepare($rows_left);
$rows_left->execute(array($start,$ROW_COUNT));
$rows = $rows_left->fetchAll(PDO::FETCH_ASSOC);
$number_rows = 0;
foreach ($rows as $r) {
$number_rows = $number_rows + 1;
}
//if number of rows left in the table is less than 10 then $limit = the number of rows left
if ($number_rows < 10) {
$limit = $number_rows;
}
//getting all rows
$getRows = "SELECT * FROM tableName limit ?,?";
$getRows = $db->prepare($getRows);
$getRows->execute(array($start , $limit));
$getRows = $getRows->fetchAll(PDO::FETCH_ASSOC);
select * from 'table_name'
ORDER BY 'column_id 'DESC
LIMIT 0,10;
select * from 'table_name'
ORDER BY 'column_id' DESC
LIMIT 10,10;
select * from 'table_name'
ORDER BY 'column_id' DESC
LIMIT 20,10;
et continuez jusqu’au nombre que vous voulez.