Newsgroup: it.comp.www.php
Titolo: Impaginare N° record per pagina

salve a tutti ...
dovrei impaginare n record (uso mysql ) per pagina. .. esiste qualche
libreria.. da utilizzare?
ciauzzz

 ha scritto nel messaggio
news:9k9jb4$3a$1...@diesel.cu.mi.it...

nella query che fai al db:
SELECT * FROM tuotabella WHERE nomecampo='quellochevuoi' LIMIT $start,$limit
Dove $start sta per il n° da cui cominciare
e $limit sta per quanti records vuoi prendere da db
Nella visualizzazione del risultato, visualizzi i numeri delle pagine e crei
i links passando la variabile $start
p.es
. se $limit=10
la prima pagina avrà $start=0
la seconda $start=10
la terza $start=20
ecc., ecc.
Ciao
Devil

mica tanto vero, LIMIT non e' una keyword standard sql.
In genere, se la tabella ha un campo identitą incrementale te lo passi da
pagina
a pagina tramite sessione o metodo post, ma non e' il massimo della vita.
Qualcuno sa' farlo meglio di cosi'?


ho fatto così : ho fatto la query col limit e gli ho passato il val minimo
nel link di collegamento
es:
 nomepagina.php?a=0
poi per creare il link alle atre pagine ho fatto così :
//prendo i valori della query
while ($valori=mysql_fetch_array($tutto)){
// creo una variabile num a cui do come valore il totale dei numeri di
record
$num =mysql_num_rows ($tutto);
}
//echo "$num";
creo una variabile e che ha il valore di $a(min limit) e $b(max limit)
$e=$b;
$d=$a+$e;
//echo "$d";
poi con due cicli di if ottengo i link avanti e indietro in base al numero
di record presenti ed al numero di record visualizzati
if ($a!=0){
echo "<a href=./list3.php3?a=0>Indietro</a>";};
echo"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
if ($d<$num){
print("<a href=./list3.php3?a=$d>Avanti</a>");
}
Spero di essere stato chiaro.
Ciao e fammi sapere

 wrote in message
news:3b6877dc$1...@news.bluewin.ch...


non vorrei avere capito male, in caso correggimi, ma questo e' proprio il
modo peggiore di procedere.
da quello che ho capito tu cicli su tutti i record e visualizzi solo la
fetta di questi che sta entro i limiti che passi come
parametri tra le chiamate alla pagina.
Metti che hai una decina di migliaia di record da visualizzare paginati a
gruppi di 10 (a me almeno capita).
Ogni volta fai un ciclo completo di lettura? non limiti la query solo a
quelli che ti interessano?
Ripeto, forse e' tardi ed ho travisato il senso del tuo post.
In realtà c'e' un metodo ancora peggiore, ho visto un'applicazione web che
si pasava la connessione
come parametro di sessione, tenendo in tal modo il cursore aperto e
stabilendo una specie di pconnection.
Sul server ti trovavi allocati facilmeante 50-100 Mega di Ram o  50-100 Mega
su dico di sessione serializzata
per ogni singola richiesta web. Dopo 5 click di mouse il server crashava,
perche tra parentesi l'engine php
ed il kernel a memoria satura su sistemi unix paginano da schifo (
semplicemente php occupa anche le
pagine di memoria proprie dei processi system V).
Oracle al contrario ha una funzionalita' disponibile anche in php che
consente appunto di mantenere cursori aperti tra
le chiamate alle pagine, semplificando di molto la vita dello sviluppatore.

 ha scritto nel messaggio
news:eeka7.92516$Qf6.6...@news2.tin.it...

l'ho fatto così perche al cliente serviva visualizzare tutti irecord
presenti sul db eppoi è solo una prima sudata versione(visto che con php
sono all'inizio) poi tra qualche mese una volta impratichito con php e
soprattutto mysql ne farò una più performante ed ottimizzata.

gruppi di 10 (a me almeno capita).
In un caso del genere, soprattutto se ci si puo' aspettare pesanti navigate
avanti e indietro, io uso una tecnica schifosa ma funzionale: creo un ID, e
lo associo a una sessione.
Poi, la prima volta, esamino tutta la decina di migliaia di records, e creo
una struttura di files e directories che puo' essere
	3721/00/00/00.htz	--> records da 0 a 9
	...
	3721/00/00/99.htz	--> records da 990 a 999
	...
	3721/00/92/17.htz	--> records da 92170 a 92179
...il codice che crea l'ID, se gia' lo trova lo annulla e cancella tutta la
sottodirectory in modo da evitare il caso in cui il distruttore di sessione
non fa il suo dovere.
Il massimo spazio occupato (nel file ".htz" c'e' solo l'essenziale) e' dato
da $MAXID * $MAXRECS * $RECSIZE / $RECSPERPAGE, con RECSIZE=300 bytes ed un
MAXID di 1000, MAXRECS = 50000, RECSPERPAGE=10, sono 1,5 giga :-)
Un modo per ridurre lo spazio e' quello di stivare i records nel codice PHP
sotto forma di vettore:
	$v = array(
	2872=>"(juice)",
	2873=>...
	);
dove "juice" e' ottenuto con AddSlashes() e serialize() a partire da quello
che ritorna il database.
A questo punto, la pagina "di navigazione" deve solo fare l'include() e poi
tirare fuori i dati da $v.
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.

mica tanto vero, LIMIT non e' una keyword standard sql.
però lui ha espressamente indicato che usa MySQL e se non è
interessato ad un eventuale porting su altri DB questa soluzione è di
gran lunga più facile e rapida delle altre proposte.
-fabio