Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. problema paginazione e select con sql
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • G
      giulietta User • 13 giu 2009, 17:31 ultima modifica di

      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 :ciauz:

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
        Caricamento altri post
        Rispondi
        • Topic risposta
        Effettua l'accesso per rispondere
        • Da Vecchi a Nuovi
        • Da Nuovi a Vecchi
        • Più Voti
         

      • M
        magicale User Attivo • 14 giu 2009, 11:10 ultima modifica di

        Ciao,
        innanzitutto modifica la query così
        [PHP]
        $query_limit = mssql_query( "SELECT * FROM news ORDER BY id DESC LIMIT $primo,$per_page" )
        [/PHP]

        Alessandro

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • G
          giulietta User • 14 giu 2009, 11:17 ultima modifica di

          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 problema 🙂

          Hai qualche idea di come risolvere l'inghippo?

          grazie ^__^

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • M
            magicale User Attivo • 14 giu 2009, 11:34 ultima modifica di

            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

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • G
              giulietta User • 14 giu 2009, 11:40 ultima modifica di

              Ok, grazie provo e ti faccio sapere ^__^

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • G
                giulietta User • 14 giu 2009, 11:50 ultima modifica di

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

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

                Scusa se sono piuttosto dura su questa cosa, ma non so dove è l'errore -___-

                Grazie

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • M
                  magicale User Attivo • 14 giu 2009, 11:59 ultima modifica di

                  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 🙂

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • G
                    giulietta User • 14 giu 2009, 12:09 ultima modifica di

                    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 ^__________^

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    Caricamento altri post
                    Rispondi
                    • Topic risposta
                    Effettua l'accesso per rispondere
                    • Da Vecchi a Nuovi
                    • Da Nuovi a Vecchi
                    • Più Voti