Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    paginazione dei RISULTATI di una ricerca

    Scusate se, nella mia ignoranza di programmazione PHP, chiedo. E' possibile che, di tutte le classi o di tutti gli script per la paginazione di una ricerca in un database SQL, non ne ho trovata nemmeno una che si occupasse di contare i risultati? In tutte si usa sempre il:
    codice:
    "SELECT COUNT(*) FROM mysql_table"
    che ovviamente ci permette di impaginare tutti i record presenti nella mysql_table !!
    Ma a me piacerebbe invece poter contare e impaginare solo i risultati della ricerca fatta all'interno della mysql_table... Suggerimenti? Grazie.

  2. #2
    Non ho capito benissimo...

    Tuttavia se tu hai una tua query sql.

    Codice PHP:
    $sql "SELECT pippo FROM pluto WHERE campo=paperino";
    $proc_sql mysql_query($sql);
    $numero_righe mysql_num_rows($proc_sql); // conto le righe di risposta del database. 
    Basta il mysql_num_rows per il tuo caso?

  3. #3

    Re: paginazione dei RISULTATI di una ricerca

    Originariamente inviato da carloemilio

    codice:
    "SELECT COUNT(*) FROM mysql_table"
    che ovviamente ci permette di impaginare tutti i record presenti nella mysql_table !!
    Ma a me piacerebbe invece poter contare e impaginare solo i risultati della ricerca fatta all'interno della mysql_table... Suggerimenti? Grazie.
    Beh, è del tutto naturale che se fai count di tutta la tabella ti restituisce il numero di tutti i record della tabella

    se invece fai il count della ricerca che hai fatto ti retituisce il numero dei soli risultati che soddisfano la ricerca....

    codice:
    "SELECT COUNT(*) FROM mysql_table WHERE <campo>=<condizione>"
    Ad esempio conta solo i ricord della tabella dove il campo rispetta la condizione....

  4. #4
    Caro goikiu,
    a dire il vero non capisco perché sia così incomprensibile la mia domanda... comunque proverò a spiegarmi meglio.

    Io ho infilato nelle pagine del mio sito un form che permette all'utente di fare una ricerca FULL-TEXT all'interno di una serie di records ospitati dentro a una mysql_table che vive dentro al mysql_db (e fin qui mi pare tutto chiaro, no?)
    Ovviamente se l'utente ricerca il termine "xxx" gli viene restituito il record che contiene il termine, oppure l'elenco di tutti i records che contengono il termine "xxx".
    A questo punto, se l'elenco dei record trovati supera il numero che ragionevolmente si possano ospitare nelle singole pagine dei risultati, nasce l'esigenza di impaginare i suddetti risultati (fin qui tutto chiaro?)
    Tu mi scrivi:
    codice:
    $sql = "SELECT pippo FROM pluto WHERE campo=paperino";
    $proc_sql = mysql_query($sql);
    $numero_righe = mysql_num_rows($proc_sql); // conto le righe di risposta del database.
    ma, a parte che non vedo dove sia il "COUNT" in questa pezzo di codice, comunque la funzione $sql non mi pare una query di ricerca che vada oltre al conto dei risultati cercati nella singola "column" (o "campo", se preferisci) pippo.

    Che fare? Grazie
    Il mio form di ricerca analizza una tabella in cui ci sono circa 10 "columns" (o "campi", se preferisci)

  5. #5
    Beh, la query sql da me proposta era un banale esempio.

    Detto questo sapendo quante righe (mysql_num_rows) di risultati si hanno puoi trarre delle conclusioni, se poi il numero di mysql_num_rows è maggiore di un numero da te preimpostato splitti i risultati su varie pagine.

    Passando ad esempio come parametri get il termine ricercato e la pagina, poi da pagina due non partirà dal record 0 ma dal record 25 (Esempio nel caso te voglia mostrare 25 record a pagina).

    La query sql poi la gestisci te... però in teoria potrebbe bastarti sapere il numero di risultati.

  6. #6
    Caro philbert,

    ti ringrazio per la precisazione ma posso assicurarti che, sia per quello che ho letto in rete, sia per aver provato più di una volta personalmente, il codice che mi hai sottoposto:

    codice:
    "SELECT COUNT(*) FROM mysql_table WHERE <campo>=<condizione>"
    restituisce comunque TUTTO il contenuto della mysql_table, dato che il conteggio che opera l'operatore COUNT è fatto su (*) che, come sappiamo, significa dare a COUNT l'indicazione di contare TUTTI i valori !NULL contenuti in TUTTE le columns della mysql_table...

  7. #7
    Caro goikiu,
    ma come faccio a sapere:
    ... però in teoria potrebbe bastarti sapere il numero di risultati.
    ?

  8. #8
    Originariamente inviato da carloemilio
    ... dato che il conteggio che opera l'operatore COUNT è fatto su (*) che, come sappiamo, significa dare a COUNT l'indicazione di contare TUTTI i valori !NULL contenuti in TUTTE le columns della mysql_table...
    Dunque o ho capito male io o ti sei spiegato male tu,
    ma spero che sia chiaro il fatto che l'operatore count(*) conta i record non conta i campi!!


    Quindi se tu hai
    una tabella 'cantanti' con questi campi: id,nome,cognome
    e che contiene questi 5 record:

    1,bob,marley
    2,bruce,springsteen
    3,bob,dylan
    4,james,taylor
    5,billy,corgan


    codice:
    SELECT COUNT(*) FROM cantanti
    ti restituirà 5

    invece
    codice:
    SELECT COUNT(*) FROM cantanti WHERE nome='bob'
    ti restituirà 2


    A me sembrava di aver capito che in un caso del genere a te servisse ottenere il risultato 2 per sapere quanti riusultati paginare...

  9. #9
    Originariamente inviato da carloemilio
    Caro philbert,

    ti ringrazio per la precisazione ma posso assicurarti che, sia per quello che ho letto in rete, sia per aver provato più di una volta personalmente, il codice che mi hai sottoposto:

    codice:
    "SELECT COUNT(*) FROM mysql_table WHERE <campo>=<condizione>"
    restituisce comunque TUTTO il contenuto della mysql_table, dato che il conteggio che opera l'operatore COUNT è fatto su (*) che, come sappiamo, significa dare a COUNT l'indicazione di contare TUTTI i valori !NULL contenuti in TUTTE le columns della mysql_table...
    "Cosa cavolo stai dicendo, Willis?"...assolutamente falso.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Va bene philbert, daccordo con te!

    IL CODICE:

    codice:
    SELECT COUNT(*) FROM cantanti WHERE nome='bob'
    restituisce il valore 2, non c'è ombra di dubbio.
    Prova però a sostituire ad un valore esistente (cosa che noi possiamo sapere, come admin del nostro sql_db, ma che l'utente del sito ovviamente no...) e definito: nome='bob' una variabile di ricerca FULL-TEXT come, ad esempio,

    codice:
    $keyword=$_POST['keyword'];
    e vediamo cosa succede all'operatore COUNT(*)......

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 © 2025 vBulletin Solutions, Inc. All rights reserved.