Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [PHP] Ricerca e risultati nella stessa pagina

    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
    "...non può piovere per sempre..."

  2. #2
    Nessuno può darmi un aiuto?
    "...non può piovere per sempre..."

  3. #3
    allora, io ho fatto cosi:

    Codice PHP:
        if (isset($_POST['value']) && $_POST['value'] != SEARCH_WORD) {
            
    $word $_POST['value'];
        } elseif (isset(
    $_POST['value']) && $_POST['value'] == SEARCH_WORD) {
            
    $word "";
        } else {
            
    $word = (isset($_COOKIE['word'])) ? $_COOKIE['word'] : "";
    }

    setcookie ("word",$word,0); 
    e poi riprocesso la query con i dati della paginazione..
    Ciao!

  4. #4
    K grazie. Mi studierò questa soluzione.
    "...non può piovere per sempre..."

  5. #5
    ciao stò cercando di mettere mano al tuo codice ma non ci riesco mi spieghi cosa sono i parametri
    Codice PHP:
    if (($_POST[ricerca_x])||($_POST[ricerca_y])) 
    ti ringrazio
    Tz

  6. #6
    mmm erano dei dubbi di circa 3 anni fa quando ero + scheggia di adesso... ma ad ogni modo quelle variabili POST sono quelle che genera il submit fatto tramite l'immagine di nome ricerca presente nella form. Se sono valorizzate, significa che è stato fatto il submit cliccando sull'immagine e quindi è stata avviata la ricerca. L'ho spiegato nella domanda n° 2.

    Comunque questo codice va implementato un bel pò per ottenere l'impaginazione. Ad es. una possibile soluzione e che la query venga limitata nel numero e range di risultati da mostrare a seconda della pagina in cui ti trovi. I link delle pagine devono essere costruiti in modo da avere nella query string un dato che serva proprio per costruira la condizione LIMIT nella query. Per es. se sei a pagina 1 mostri i primi 20, se sei a pagina 2 da 20 a 40 e così via
    "...non può piovere per sempre..."

  7. #7
    ciao il mio problema è che l'impaginazione funziona o meglio una possibile che ho trovato... e modificato ma il cerca... non mi funziona.
    ad ogni modo se volessi dargli un'occhiata prova a vedere questo post serve a visualizzare le immagini sotto forma di icone.
    Grazie per qualunque aiuto sarai in grado di darmi!

    http://forum.html.it/forum/showthrea...readid=1318047

    Ciao
    Tz

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.