- Home
- Categorie
- Coding e Sistemistica
- PHP
- problema paginazione e select con sql
-
problema paginazione e select con sql
Ciao a tutti!
Ho un problema ovvero nell'ultima pagina della paginazione mi ripete i records 2 e 3 invece di visualizzarmi solo l'1
La query in sql è questa:
$query_limit = mssql_query("SELECT * from (SELECT TOP $per_page * FROM (SELECT TOP ($primo + $per_page) * FROM news ORDER BY id desc) AS t1 order by id asc) AS t2 ORDER BY id desc");
Ottengo questa cosa:
pagina 1 - 16,15,14
pagina 2 - 13,12,11
...
pagina 5 - 5,4,3
pagina 6 - 3,2,1Non riesco a capire cosa devo modifica nella query o nelle variabili
Le variabili:
$per_page = numero records per pagina (ho messo 3)$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
$current_page = isset($_GET['page']) && $_GET['page'] > 1 ? (int) $_GET['page'] : 1;
$primo = ($current_page - 1) * $per_page;Grazie mille
-
Ciao,
innanzitutto modifica la query così
[PHP]
$query_limit = mssql_query( "SELECT * FROM news ORDER BY id DESC LIMIT $primo,$per_page" )
[/PHP]Alessandro
-
Ciao Magicale,
forse non mi sono spiegata bene, io devo realizzare la query per un database in sql server 2005 e in questo caso la funzione LIMIT non esiste, da qui il problemaHai qualche idea di come risolvere l'inghippo?
grazie ^__^
-
Sorry, non me n'ero accorto...
Prova queste:
SELECT TOP $per_page * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id DESC) AS RowNumber, * FROM news) AS t1 WHERE RowNumber >= $primo
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id DESC) AS RowNumber, * FROM news) AS t1 WHERE RowNumber BETWEEN $primo AND $ultimo
con $ultimo=$primo+$per_page-1
-
Ok, grazie provo e ti faccio sapere ^__^
-
Rieccomi,
Allora nel primo caso mi da errore nella visualizazione in questo modo:
pagina 1: 16,15,14
pagina 2: 14,13,12
...
pagina 6: 2,1Tutto corretto tranne quella ripetizione nella seconda pagina del record 14 O__o
Nel secondo caso invece:
pagina 1: 16,15,(visualizza solo due record)
pagina 2: 14,13,12
...
pagina 6: 2,1Scusa se sono piuttosto dura su questa cosa, ma non so dove è l'errore -___-
Grazie
-
Per il primo caso devi correggere la query mettendo RowNumber > $primo e non >=
Per il secondo caso, correggi
[PHP]
$primo = ($current_page - 1) * $per_page +1
[/PHP]Dovrebbero funzionare adesso
-
Grazie mille !!!!!
Mi hai risolto un grosso problema, stavo annegando in questo codice che non vedevo nemmeno più dove fare modifiche, 1 paio di occhi in più sono stati risolutivi grazie mille ancora ^__________^