Newsgroup: it.comp.www.php
Titolo: mysql_num_rows e LIMIT

Salve
ho l'esigenza di inviare a mysql una query del tipo:
"SELECT * FROM tabella LIMIT 0,25"
Utilizzando mysql_num_rows($result) ottengo il numero 25
ovvero il numero di record restituiti dalla query con LIMIT.
E' possibile sapere quanti record mi restituirebbe
mysql se non usassi la sintassi con keyword LIMIT ?
Per evitare problemi di prestazioni in merito ai tempi di risposta,
vorrei evitare di dover inviare preventivamente una query del tipo:
"SELECT COUNT(*) FROM tabella"
Suggerimenti ?
Grazie mille
-- 
Riccardo

 ha detto:

Togli il LIMIT dalla query e poi prendi le righe che ti interessano
tramite codice php.
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Project Admin di "PHP Reservation - Online booking system" - 
http://phpreservation.sourceforge.net
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

 mysql se non usassi la sintassi con keyword LIMIT ?
Preventivamente puoi fare uno di queste 2 query:
1 - SELECT * FROM tabella   -->   poi mysql_num_rows
2 - SELECT COUNT(*) FROM tabella
Oppure puoi usare solo la 1 e i 25 record li estrai poi con PHP, senza
rifare un'altra query.
Ciao
Marco

 tramite codice php.
La mia pagina HTML/PHP deve mostrare i risultati ottenuti 25 alla volta.
Come faccio tramite codice PHP ad estrarre le righe che mi interessano
senza rieseguire inutilmente la query ogni volta che viene ricaricata la
pagina HTML/PHP ? E' possibile ?
Dovrei forse usare mysql_pconnect oppure dopo avere eseguito
per la prima volta la query nella pagina HTML/PHP mi basterebbe
passare alla stessa pagina la variabile $result=mysql_query(...) ?
Grazie
-- 
Riccardo 

 ha scritto nel messaggio 
news:cqcafp$svl$1...@news.tiscali.fr...

La mia pagina HTML/PHP deve mostrare i risultati ottenuti 25 alla volta.
Supponiamo che volessi utilizzare proprio questa ultima possibilità da te
suggerita, e cioè utilizzare la query "SELECT * FROM tabella" per poi
estrare con il PHP le righe che effettivamente mi interessano.


 passare alla stessa pagina la variabile $result=mysql_query(...) ?
No in entrambi i casi.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 nella seconda 25, nella terza 50 etc. )
Questo lo sapevo...
Il mio problema è che per avere una maggiore velocità di caricamento
della pagina HTML/PHP vorrey evitare di dover eseguire
preventivamente la query "SELECT COUNT(*)... "
-- 
Riccardo 

 preventivamente la query "SELECT COUNT(*)... "
Il risultato della selecto count(*) puoi anche passarlo in sessione, ma
potrebbero anche passare decine di minuti tra la visualizzazione di una
pagina e la successiva. Tempo in cui l'amministratore o chi per lui
potrebbe inserire altri dati nel DB.
A quel punto ti trovi una discrepanza tra il valore massimo che
consideri tu e quello effettivo nel DB.
Puoi smorzare la situazione creando un indice sulla tabella e facendo
select count(indice). Qualcosa lo risparmi, anche se non so dirti
quanto.
Bye.

 pagina HTML/PHP ? E' possibile ?
Una volta che fai la query "completa" ti trovi tutto il recordset in una 
variabile:
$result = mysql_query("SELECT *");
A questo punto, avrai una variabile $start che ti dice da quale record 
iniziare a visualizzare.
Fatto questo puoi creare un ciclo per consumare tutti i record fino a $start 
oppure usare mysql_data_seek() e spostarti direttamente nel punto esatto.
Ciao
Marco 

 ha scritto nel messaggio 
news:cqcfjv$9d$1...@news.tiscali.fr...

Ok, ma posso passare $result alla pagina HTML/PHP per evitare di dover
eseguire nuovamente $result = mysql_query("SELECT * FROM TABELLA")
ogni volta che ricarico la pagina per visualizzare ulteriori 25 record ?
Grazie,
Riccardo
--

 ogni volta che ricarico la pagina per visualizzare ulteriori 25 record ?
No, ogni volta che lo script entra in esecuzione fa la query.
A parte il fatto che voglio vedere come fai a passare un intero recordset
tra le pagine...
Forse serializzandolo e usando le sessioni, ma non vorrei essere nella
memoria del server.
Poi avresti grossi problemi perchč ti porteresti dietro un recordset
"vecchio", perchč qualcuno puň modificarne i dati nel db nel frattempo.
Fai conto di eseguire lo script la prima volta, e di trasferire il recordset
tra le pagine per tutto il tempo di vita della sessione (20 minuti mi
sembra).
Supponi che dopo 30 secondi dalla tua query, l'amministratore svuota la
tabella.
Tu ti trovi tra le mani per 20 minuti un recordset i cui elementi non
esistono piů.
E se fosse un sito di e-commerce, venderesti aria fritta! :-)
Ciao
Marco