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