• User Newbie

    Form ricerca con due menu a discesa

    Ciao, sono nuova ed in passato grazie a questo forum ho trovato parecchie delucidazioni e soluzioni sui miei problemi da neofita, ma dopo innumerevoli ricerche ho deciso di postare qui il mio problema.

    Ho un form di ricerca in una pagina (ricerca.php) composto da due menu a discesa di cui uno è il mese:
    [HTML]<select name="meseID" id="ricerca">
    <option value="01">gennaio</option>
    <option value="02">febbraio</option>
    <option value="03">marzo</option>
    <option value="04">aprile</option>
    <option value="05">maggio</option>
    <option value="06">giugno</option>
    <option value="07">luglio</option>
    <option value="08">agosto</option>
    <option value="09">settembre</option>
    <option value="10">ottobre</option>
    <option value="11">novembre</option>
    <option value="12">dicembre</option>
    </select>[/HTML]
    E l'altro è la provincia:
    [HTML]<select name="provinciaID" id="ricerca">
    <option value="ME" selected="selected">Messina</option>
    <option value="PA">Palermo</option>
    <option value="RG">Ragusa</option>
    <option value="SR">Siracusa</option>
    <option value="EN">Enna</option>
    <option value="CT">Catania</option>
    <option value="TP">Trapani</option>
    <option value="CL">Caltanissetta</option>
    <option value="AG">Agrigento</option>
    </select>[/HTML]

    Nel database memorizzo i dati della provincia nella colonna "provinciaID".
    Per il campo data invece memorizzo i dati come campo DATE dunque nel formato (YYYY-MM-DD).

    In buona sostanza, dovrei estrapolare solo il mese, dal formato standard MYSQL e creare una variabile $meseID da passare poi al form per l'estrapolazioni dei risultati nella pagina (risultati.php).

    Info: per creare le pagine inserimento dati, visualizzazione ecc. ho utilizzato Dreamweaver di cui ho già creato una pagina risultatiphp con un recordset dei dati che voglio stampare a schermo, la complicazione sta nel inviare i dati a risultati.php.

    Spero di essere stata chiara, in alternativa sono qui per delucidazioni..
    Grazie in anticipo.


  • Consiglio Direttivo

    Ciao santpir e bentrovata nel Forum GT. 🙂

    Se non ho capito male quel che ti interessa è recuperare dal campo della tabella (es.: 2009-11-07) solo il (es.: 11).
    Se è così, e quindi non ho capito male, puoi utilizzare la funzione explode per recuperarti questo dato.
    Assegni il valore del campo alla variabile $date e quindi:

    [php]//ammettiamo che $date sia 2009-11-07
    list($Y,$meseID,$d)=explode("-",$date);[/php]
    In questa maniera otterrai la tua variabile $meseID che conterrà il valore 11.
    :ciauz:


  • User Newbie

    Ciao, ho provato ad utilizzare la funzione explode come mi hai consigliato tu, funziona, visualizza il mese che ho prescelto dalla select.. ma nasce un problema, se uno dei valori della data contiene un numero uguale al mese prescelto, appare nella lista dei risultati.

    es: 2009-11-04 esce sia nei risultati di novembre che in quelli di aprile

    posto il codice con cui sto studiando:
    non vorrei, anzi, sono sicura di aver sbagliato qualcosa.

    [PHP]
    <?php
    $connection = mysql_connect('localhost', 'root', '') or die(mysql_error());
    mysql_select_db('ips');
    if(!isset($_POST['search'])){
    ?>
    <form method="POST">
    Search:
    <select name="provinciaID" id="ricerca">
    <option value="ME" selected="selected">Messina</option>
    <option value="PA">Palermo</option>
    <option value="RG">Ragusa</option>
    <option value="SR">Siracusa</option>
    <option value="EN">Enna</option>
    <option value="CT">Catania</option>
    <option value="TP">Trapani</option>
    <option value="CL">Caltanissetta</option>
    <option value="AG">Agrigento</option>
    </select>
    <br/>
    <select name="meseID" id="ricerca">
    <option value="">mm</option>
    <option value="01">gennaio</option>
    <option value="02">febbraio</option>
    <option value="03">marzo</option>
    <option value="04">aprile</option>
    <option value="05">maggio</option>
    <option value="06">giugno</option>
    <option value="07">luglio</option>
    <option value="08">agosto</option>
    <option value="09">settembre</option>
    <option value="10">ottobre</option>
    <option value="11">novembre</option>
    <option value="12">dicembre</option>
    </select>
    <input type="submit" name="search" id="search" value="Search" />
    </form>
    <?php
    }elseif(isset($_POST['search'])){
    $provinciaID = addslashes($_POST['provinciaID']);
    $meseID = addslashes($_POST['meseID']);
    $search = mysql_query("SELECT * FROM event WHERE prov_EVENTO LIKE '%$provinciaID%' AND date_INITIAL LIKE '%$meseID%'" );

    $total = mysql_num_rows($search); 
    if($total == 0){ 
        echo 'Nessun risultato '; 
    }else{ 
        while($r = mysql_fetch_array($search)){ 
    		$date = $r['date_INITIAL'];
    		list($Y,$meseID,$d)=explode("-",$date);
                        echo $r['prov_EVENTO'] . '<br />'; 
    		echo $r['nome_EVENTO'] . '<br />';
    		echo $meseID . '<br />';
    		echo $r['date_INITIAL'];
        } 
    }  
    

    }
    ?>[/PHP]


  • Consiglio Direttivo

    Prova a scrivere la query così:

    $search = mysql_query("SELECT * FROM `event` WHERE `prov_EVENTO` LIKE '%$provinciaID%' AND date_INITIAL LIKE '%-$meseID-%'");
    

    😉


  • User Newbie

    GRAZIEEEE... FUNZIONA!!!

    Sei stato di grande aiuto...
    Alla prossima...

    Anche se per dire il vero la prossima la posto adesso:
    volendo aprire ogni singola provincia in una pagina dedicata, come dovrei procedere..


  • Consiglio Direttivo

    Aprendo un nuovo thread per la nuova richiesta, così da non confondere gli utenti che magari cercano proprio questo quesito. 😉

    P.S. Fai attenzione alle maiuscole santpir, è indicato anche nel campo della risposta. 😉