Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    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,1

    Non 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
    http//www.giuliaweb.it

  2. #2
    Prova

    codice:
    SELECT * FROM news ORDER BY id DESC LIMIT $offset, 3
    dove

    codice:
    $offset = $numero_pagina * 3 - 1;

  3. #3
    Ciao grazie della risposta provo a vedere come trasformarlo in sql e vedo se funziona
    http//www.giuliaweb.it

  4. #4
    E' SQL (a parte la variabile PHP)...

  5. #5
    diciamo che è sql ma la scrittura è adatta ad un database fatto con Mysql io invece ho un database con sql server 2005 dove la funzione LIMIT non esiste, ecco perchè ho questo problema

    Hai qualche idea?

    Grazie
    http//www.giuliaweb.it

  6. #6
    Niente non funziona, hai qualche idea per risolvere il problema ?
    Il problema nasce dal fatto che un database in Mysql supporta la funzione LIMIT, io invece ho un dataqbase in sql server 2005 dove LIMIT non esiste (ed è per questo la query è così contorta eheh)

    Grazie
    http//www.giuliaweb.it

  7. #7
    Eccomi, con l'aiuto di un esperto ho risolto, mi ha suggerito due metodi:

    Primo metodo
    // primo parametro SQL server 2005 - PRIMO MODO
    $primo = ($current_page - 1) * $per_page;
    // esecuzione seconda query per SQL server 2005 - PRIMO MODO
    $query_limit= mssql_query("SELECT TOP $per_page * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id DESC) AS RowNumber, * FROM news) AS t1 WHERE RowNumber > $primo");

    Secondo metodo
    // primo parametro SQL server 2005 - SECONDO MODO
    //$primo = ($current_page - 1) * $per_page +1;
    //$ultimo=$primo+$per_page-1;
    // esecuzione seconda query per SQL server 2005 - SECONDO MODO
    //$query_limit= mssql_query("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id DESC) AS RowNumber, * FROM news) AS t1 WHERE RowNumber BETWEEN $primo AND $ultimo");

    grazie
    http//www.giuliaweb.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.