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

    Motore di ricerca e risultati nella stessa pagina

    Salve, sono in difficoltà con il PHP, ed allora ricompaio da queste parti, nella speranza di trovare un aiuto al mio problema.

    Sto cercando di realizzare un piccolo motore di ricerca, che mi dia la possibilità di visualizzare il form da compilare per la ricerca e il risultato della ricerca nella stessa pagina.

    PEr far questo ho creato una pagina search.php così fatta:

    Codice PHP:
    <?
    include("includes/layout.php");
    include(
    "includes/header.php");
    ?>

    <form method=post action=search.php>
      <table class="modulo" width="60%" border="1" align="center" cellpadding="2" cellspacing="0">
        <tr>
          <td>Mese: </td>
          <td><select id="mese" name="mese">
            <option value="0">Tutti</option>
                <option value="1">Gennaio</option>
                <option value="2">Febbraio</option>
                <option value="3">Marzo</option>
                <option value="4">Aprile</option>
                <option value="5">Maggio</option>
                <option value="6">Giugno</option>
                <option value="7">Luglio</option>
                <option value="8">Agosto</option>
                <option value="9">Settembre</option>
                <option value="10">Ottobre</option>
                <option value="11">Novembre</option>
                <option value="12">Dicembre</option>
              </select></td>
          <td>Anno: </td> 
          <td><select id="anno" name="anno">
                <option>2008</option>
                <option>2009</option>
              </select></td>
                 <td>Auto: </td>
          <td><select id="auto" name="auto">
                <option>Tutte</option>
                <option>Principale</option>
                <option>Secondaria</option>
              </select></td>            
          <td><input type=submit value=Cerca></td>
        </tr>
      </table>
    </form>


    <?

    //Includo la pagina con i risultati
    include("result.php");

    ?>
    dove c'è il form di selezione dei campi di ricerca e il tasto per l'invio della ricerca, posizionati su una riga, e viene inclusa la pagina dei risultati, che è la seguente:

    Codice PHP:
    <?
    include("includes/layout.php");
    include(
    "includes/config.inc.php");


    //connessione al db
    [...]


    //recupero le variabili dal form di ricerca
    $mese $_POST['mese'];
    $anno $_POST['anno'];
    $auto $_POST['auto'];

    //effettua la query al database per la ricerca, strutturandola in base alle posisibli scelte del form

    if ($auto == "Tutte")
      {
        if (
    $mese == 0)
            {
              
    $query "SELECT data_km, km, auto, motivo 
                        FROM work_kmetri 
                        WHERE year(data_km) LIKE 
    $anno"
            }else{
              
    $query "SELECT data_km, km, auto, motivo 
                        FROM work_kmetri 
                        WHERE month(data_km) LIKE 
    $mese AND year(data_km) LIKE $anno";  
            }
      }else{      
        if (
    $mese == 0)
            {
              
    $query "SELECT data_km, km, auto, motivo 
                        FROM work_kmetri 
                        WHERE year(data_km) LIKE 
    $anno AND auto LIKE '$auto'"
            }else{
              
    $query "SELECT data_km, km, auto, motivo 
                        FROM work_kmetri 
                        WHERE month(data_km) LIKE 
    $mese AND year(data_km) LIKE $anno AND auto LIKE '$auto'";  
            }
      }
     
    $result mysql_query($query$db);

    //visualizzazione numero risultati

    if (mysql_affected_rows() =="0")
    {

    echo 
    "[b]

    <h3><font color=\"#000066\"><center>la ricerca non ha prodotto alcun risultato</center></font></h3>[b]"
    ;

    }else{

    echo 
    "[b]

    <font color=\"#000066\"><center>la ricerca ha prodotto "
    mysql_affected_rows()." risultati</center></font>[/b]";

    }

    //tabella con i risultati della query

    echo "<table class=\"modulo\" width=\"90%\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
            <tr class=\"titolo\">
              <td>Data</td>
              <td>Auto</td>
              <td>Motivo</td>
              <td>Chilometri[/b]
            </tr>"
    ;

    while (
    $row mysql_fetch_array($result))
    {
    echo 
    "<tr>
            <td class=\"nome\">
    $row[data_km]"</td>
            <td class=\"altro\">
    $row[auto]"</td>
            <td class=\"altro\">"
    ,stripslashes($row[motivo]), "</td>
            <td class=\"altro\">
    $row[km]"</td>
          </tr>"
    ;
    }

    echo 
    "
    </table>"
    ;
    Scritto il tutto forse in un modo un po' rude, ma funziona quasi completamente.

    Infatti ho due problemi sul completamento del motore di ricerca, che consistono nel:

    - quando apro per la prima volta la pagina del motore di ricerca, come faccio ad evitare l'inserimento della pagina dei risultati, che ovviamente contiene zero risultati??
    - coem posso fare per ricordare al form di ricerca le scelte effettuate dopo ogni invio, invece che farlo ritoranre sui valori default?

    Grazie pe rla pazienza e l'aiuto!!!!

  2. #2
    fai un if sulle variabili post

    if(isset($_POST['mese']) and isset($_POST['giorno']) isset($_POST['anno']))
    {
    include"result.php";
    }

    in questo modo solo se le variabili mese, anno e giorno sono state inviate, inserisci i risultati.

    il secodno punto me lo dovresti chairire meglio, potresti metterle in sessione oppure è un problema di caching
    http://www.trustweb.it - Web Development - Design 2D/3D - SEO & SEM

    Twitter http://twitter.com/#!/TrustWeb
    LinkedIn http://it.linkedin.com/in/trustweb

  3. #3
    Grazie mille per il celere aiuto!!!!

    Sistemato il problema dell'inserimento dei risultati.

    Il secondo punto è un di più al motore di ricerca.
    In pratica ora come ora, imposto i vari campi per la ricerca che voglio fare, clikko su "Cerca" e quando mi carica i risultati della ricerca, mi resetta i campi.

    Per esempio:
    Certo il mese di maggio, dell'anno 2009 e l'auto secondaria.
    Avvio la ricerca, che funziona alla perfezione, ma i campi della ricerca tornano a:
    mese: Tutti - anno: 2008 - auto: Tutte

    Mi chiedevo se era possibile fare in modo che anche dopo la ricerca, i campi non venissero resettati
    Nell'esempio significa che, avviata la ricerca i campi restino:
    mese: Maggio - anno: 2009 - auto: Secondaria

    Intanto ringrazio ancora per avermi risolto il problema più grosso!!!

  4. #4
    non so se esiste un metodo più sciocco per farlo, ma sicuramente con le sessioni ci riesci
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  5. #5
    se i campi che hai sono quellie basta è semplicissimo

    quando arrivi qui
    <option value="1" <? if(isset($_POST['giorno']) AND $_POST['giorno']=="1") print"selected=\"selected\""; ?>>Gennaio</option>

    <option value="2" <? if(isset($_POST['giorno']) AND $_POST['giorno']=="2") print"selected=\"selected\""; ?>>Febbrazio</option>

    per ogni campo. ah, guarda che se non metti un value="x" alle option degli altri campi ci fai ben poco

    In ogni caso preoccupati di effettuare test di sicurezza, sopratutto con ereg() / eregi() per le regexp per ogni variabile che arriva dall'esterno.

    saluti

    http://www.trustweb.it - Web Development - Design 2D/3D - SEO & SEM

    Twitter http://twitter.com/#!/TrustWeb
    LinkedIn http://it.linkedin.com/in/trustweb

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 © 2026 vBulletin Solutions, Inc. All rights reserved.