Newsgroup: it.lavoro.professioni.webmaster
Titolo: visualizzare i risultati di una ricerca

devo effettuare, usando php, una ricerca su un db in base ai parametri
inseriti in un
form, e poi visualizzarne i risultati.  Il mio problema è che se i risultati
sono molti vorrei ne venissero forniti solo alcuni, e che gli atri fossero
visualizzabili con la pressione di classici tasti avanti e indietro, senza
necessariamente la possibilità di avere delle pagine numerato.
In precedenza avevo affrontato un problema simile, ma trattandosi di un
guestbook mi limitavo a usare gli id dei messaggi (da 1, il più vecchio
messeggio, a n, il più recente), e a visualizzare prima i 5 più recenti,
quindi con id tra n e n-5, poi alla pressione del tasto avanti quelli con id
tra n-5 e n-10, e così via. Stessa cosa con la pressione del tasto indietro.
In questo caso però non posso legarmi agli id, poichè potrei trovarmi nella
situazione di dover visualizzare il risultato con id 3 ma non quelli con id
4,5,6 e poi visualizzare quello con id 7.
Al momento ho un semplice ciclo while che finchè trova risultati li stampa a
video:
while ($riga=mysql_fetch_array($result))
Come posso fare? Non chiedo tanto di dirmi il codice php da usare, che è
pure ben accetto :), ma il procedimento logico da utilizzare.
spero di essere stato abbastanza chiaro nella illustrazione del problema.
Grazie

 wrote in message
news:E4sXb.40907$VS6....@tornado.fastwebnet.it...

ciao ecco un esempio commentato
PAGINA all.php
<?php
$db = mysql_connect($db_host, $db_user, $db_password)
mysql_select_db("")
$start = 0;
$step = 12;
// crei una query che estrapola solo un certo numero di risultati pari a
$step
$query = "select * from clienti where pippo=$HTTP_POST_VARS['parola'] DESC
LIMIT $start,$step";
$result = mysql_query($query , $db);
// li visualizzi
while($row = mysql_fetch_array($result));
{echo "<a href =\"view.php?id=$row[id]\">".$row[data]. "</a>";}
//parti a creare i link per le pagine successive
//ricavi il totale delle ricerche
$query="SELECT count(*)AS tot FROM news";
mysql_query($query,$db);
$row=mysql_fetch_array($result);
//ricavi il numero di pagine
$pages = intval(($row[tot]-1) / $step)+1;
//crei tuttti i link delle pagine
<?
for ($i=0; $i<$pages AND $i<20; $i++)
{ $start_page = $i * $step;
echo "<a href=all.php?start=$start_page>" . ($i+1) . "</a> ";
}
?>
in questo caso il procedimento logico lo puoi capire dai miei commenti
in sostanza hai due variabili una start e l'altra step che rappresenta
quanti risultati vuoi visualizzare in una pagina.
nella query select delle tua ricerca devi usare l'opzione LIMIT passando
come parametri da dove cominciare e quanti limitarne
ora hai visualizzato tutti i risultati della ricerca  e restano i link alle
pagine
$pages = intval(($row[tot]-1) / $step)+1; ricavi il numero delle pagine
ovviamente una divisione tra totale risultati e le il numero di risultati
per pagina
per finire crei con un ciclo tutti i link alle pagine restanti , questi link
linkano la pagina stessa passando la variabile $start, infatti la query
$query = "select * from clienti where pippo=$HTTP_POST_VARS['parola'] DESC
LIMIT $start,$step";
usa start per cominciare da un certo punto.
Bye