Premetto che sono ai primi passi di php
Sto cercando di realizzare un motore di ricerca che mi dia i risultati nella stessa pagina del motore, ma impaginati. Ho cercato nelle pillole, ma seguendo le indicazioni dell'impaginazione non ottengo ciò che vorrei.
Quello che sono riuscito a fare è quanto segue (semplificando il tutto):
<html>
<head>
</head>
<body>
<form method="POST" ACTION="ricerca.php" name="ricerca">
Codice PHP:
<?php
//tralascio le istruzioni di accesso al db ecc


//stampa della tabella della pagina di ricerca
print    ("<TABLE>") .
    (
"<tr>") .
    (
"<td>[B]Nome[/B]</td>") .
    (
"<td><INPUT type=\"text\" name=\"nome\" VALUE=\"{$_POST[nome]}\"></td>") .
    (
"</tr>");
print    (
"<tr>") .
    (
"<td colspan=\"2\"><input type=\"image\" name=\"ricerca\" src=\"immagini/Ricerca.jpg\" ></td>") .
    (
"</tr>") .
    (
"</TABLE>");
if ((
$_POST[ricerca_x])||($_POST[ricerca_y]))
{
   include(
'risultato.php');
}
?>
</form>
</body>
</html>

Domande:
1: Ma è normale che sia l'immagine a farmi il submit se cliccata o sbaglio qualcosa? Anche se questo è quello che voglio che faccia.

2: Se è corretto così il funzionamento del submit, il click passa con metodo POST le variabili $_POST[ricerca_x] e $_POST[ricerca_y]. A questo punto per includere o meno il risultato di ricerca che viene tabellato nella pagina risultato.php, creo l'if per l'include. Così se ho avviato la ricerca, mi mostra nella stessa pagina i risultati altrimenti mostra il solo motore. E' giusto fin qua?

3: In questo modo riesco ad ottenere i risultati nella stessa pagina della ricerca ed in più, avendo impostato come valore dell'input VALUE=\"{$_POST[nome]}\" dopo il submit, mi viene mantenuta anche la condizione di ricerca che ho impostato (immaginate di avere vari campi diricerca.. se sbaglio un criterio non devo essere costretto a re-inserirli tutti). E' corretto farlo così?


La pagina con cui eseguo materialmente la query è la seguente risultato.php:
Codice PHP:
//query di ricerca num record in tabella
$QueryVuota "SELECT Nome FROM Utenti";
$Richiesta = @mysql_query($QueryVuota,$Connessione);

//Determino il numero dei risultati ottenuti
$NumRighe = @ mysql_num_rows($Richiesta);
//Se ci sono risultati stampo la tabella dei risultati, altrimenti non stampo nulla
if ($NumRighe 0
{
        
//query di ricerca effettiva
        
$QueryR "SELECT Nome, ID FROM Utenti"
    
$Ricerca= @ mysql_query($QueryR$Connessione
    
//stampa la tabella dei risultati della ricerca      
        
print "<TABLE >" .
          
"<tr>" .
             
"<TH>Utenti Registrati</TH>" .
             
"</tr>";
    
// ciclo per estrazione dei risultati della ricerca
    
while($RisRicerca = @ mysql_fetch_array($Ricerca)){
    
//Stampo ogni riga di tabella con i risultati della ricerca
    
print "<tr>" 
          
"<td><a href=\"documento.php?Search={$RisRicerca[ID]}\">$RisRicerca[Nome]<a></td>" .
          
"</tr>";
    } 
    print 
"</TABLE>";
     } 
//fine if
else {
    print 
"<TABLE >" .
          
"<tr>" .
             
"<TH>Utenti Registrati</TH>" .
             
"</tr>";
    print 
"<tr>" .
          
"<td>[b]Nessun Risultato[/b]</td>" .
          
"</tr>" .
          
"</table>";
     }
//fine else
?> 

Domande:
4: Con queste 2 pagine riesco ad ottenere i risultati della ricerca, nella stessa pagina del motore di ricerca. Ma se i risultati sono 1000 e volessi vederne 20 per pagina?

5: Leggendo le pillole ho visto come suddividere i risultati in blocchi da 50, ma il problema è che va bene per i primi 50 mentre non mi funzionano i link per sfogliare. Cliccando mi riapre la pagina di ricerca vuota , come se l'avessi aperta per la prima volta. Vorrei realizzare un indice tipo "< 1 2 3 4 5 >" dove cliccando su > mi darebbe per esempio "< 2 3 4 5 6 >". Oppure anche un semplice "< << pag/pag.tot >> >". Il problema penso, è : come passare le variabili ($_POST) alla pagina di ricerca con il link dell'impaginazione?

Ho preferito usare il metodo POST perchè in realtà uno dei campi di ricerca è relativo ad un testo e passare con GET nella URL un testo molto lungo non mi piace...

Bel problemone eh?

Grazie in anticipo per l'aiuto