2009-07-12 3 views
0

(je ne pouvais pas faire un bon titre, désolé)simple question SQL

J'utilise cette Pagination:

$page = $_GET['page']; 

$max = 5; 

// if $page is empty, set page number to 1 
if (empty($page)) $page = 1; 

$limit = ($page - 1) * $max; 

$sql = mysql_query("SELECT * FROM posts ORDER BY date DESC LIMIT $limit, $max"); 

$totalres = mysql_result(mysql_query("SELECT COUNT(id) AS tot FROM posts WHERE tid =  1"),0);  

$totalpages = ceil($totalres/$max); 
?> 

Cela fonctionne, mais ce que je veux est que le poste le plus ancien La date reste toujours au top même si je change de page. Comment puis-je faire ceci? Je sais que tu peux mais je ne me souviens pas comment.

Espérons que vous faites, merci

+1

Juste un rappel rapide, pas nitpicking. Débarrassez-vous de cela Sélectionnez * –

+0

quelle est la raison? –

+0

Toutes les données que vous allez sélectionner devront passer du serveur de base de données à votre script PHP. – Arjan

Répondre

1

Vous avez probablement besoin de faire une requête syndicale puisque ce que vous voulez est vraiment la combinaison de deux morceaux de données ...

  1. Le plus ancien poste
  2. Tous des autres postes moins le plus ancien poste ajusté pour la position de la page ...

    select * from posts order by date DESC limit 0,1 
    union 
    select * from posts order by date desc limit $start,$end 

Ajustez maintenant vos valeurs de sorte que le début soit la page que vous voulez minimum 1 (si c'est 0, votre poste le plus ancien montrera deux fois)