• User

    Mostrare risultati query dal 4 fino alla fine

    Ho un problema che non mi era mai saltato fuori prima di ora.
    Come si una in una query fatta ad un database la funzione LIMIT.

    Se io scrivo ... LIMIT 0,2 mi restituisce 2 righe partendo da quella con identificativo 0.
    Se scrivo LIMIT 2,2 mi restituisce 2 righe parteno da quella con identificativo 2.

    Ora come faccio a dirgli dammi tutte le righe aveti identificativo maggiore o uguale 4, senza mettere un limite al numero di righe che mi deve dare?

    Ho trovato questo:
    *Altro trucchetto per risparmiare risorse consiste nell'usare la clausola LIMIT all'interno delle query. Se ad esempio in una pagina dobbiamo visualizzare massimo 5 record, è assolutamente inutile fare una query in cui vengono chiesti tutti i record. Basta aggiungere LIMIT:

    SELECT campi FROM tabella LIMIT [inizio, ] fine

    Esempio: LIMIT 5 (i primi cinque record), LIMIT 2, 3 (i primi tre record a partire dal secondo)*

    A me servono non i primi TOT risultati ma quelli dal 5quinto in poi...

    GRAZI


  • User Attivo

    conta quante righe ci sono nella tabella (mysql_num_rows) dopo al risultato sottrai 4 e il limit sarà 4,risultato

    😉


  • User

    Perchè non ci avevo pensato io () () ()
    Sei tu forse più furbo di me? Probabilmente si 😄
    GRAZIE


  • User

    Aspett...
    per sapere quante righe ho, posso contare la dimensione di questo array?

    $query_pst = "SELECT * FROM tab_ ;
    $result = mysql_query($query_pst, $db);
    $row= mysql_fetch_array($result))
    
    E POI CONTO FACENDO
    $righetot=COUNT($row);
    $quindi = $righetot - 4
    
    

    e poi scrivo:

    $query = "SELECT * FROM tab DESC LIMIT 4,$quindi";
    

    Sono nel giusto o sto sbagliando qualcosa?
    Grazie


  • User

    Aspett...
    per sapere quante righe ho, posso contare la dimensione di questo array?

    $query_pst = "SELECT * FROM tab_ ;
    $result = mysql_query($query_pst, $db);
    $row= mysql_fetch_array($result))
    
    E POI CONTO FACENDO
    $righetot=COUNT($row);
    $quindi = $righetot - 4
    
    

    e poi scrivo:

    $query = "SELECT * FROM tab DESC LIMIT 4,$quindi";
    

    Sono nel giusto o sto sbagliando qualcosa?
    Grazie


  • User Attivo

    no no perchè ti conta per ogni riga un array di quanti sono i campi quindi ti da un numero pari a riga*campi se non erro. fai così

    $query_pst = "SELECT * FROM tab_ ;
    $result = mysql_query($query_pst, $db);
    $row= mysql_fetch_array($result))
    
    E POI CONTO FACENDO
    $righetot=mysql_num_rows($result);
    $quindi = $righetot - 4