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

    Semplice motore di ricerca

    sto realizzando un semplice modulo di ricerca nel mio sito.

    Praticamente gli utenti devono poter ricercare le news o per anno, o per squadra, o per entrambe le cose.

    Ho un modulo con due campi.

    Uno è 'yyyy', da dove si seleziona l'anno.

    L'altro è 'squadra', da dove si seleziona la squadra.

    Da questa pagina si arriva a quella con i risultati della ricerca.

    Da qui recupero col metodo POST le due variabili.

    Per estrarre le news, faccio un SELECT from NEWS where yyyy = $yyyy or squadra = $squadra.

    Il problema è che così facendo, si estraggono le news in modo corretto soltanto se l'utente nella ricerca ha specificato solo l'anno o solo la squadra.

    Io voglio che questo venga mantenuto, ma se l'utente seleziona entrambi i campi di ricerca voglio che la ricerca sia filtrata sia dall'anno che dalla squadra.

    Come faccio?

  2. #2
    la selezione dell'anno e della squadra, come vengono effettuate? tramite <select> o tramite <input>?

    nel secondo caso dovresti fare dei controlli sulle due variabili ($yyyy e $squadra) e poi scrivere la query di conseguenza.

    nel primo caso, (passaggio dati tramite <select>) è tutto molto più semplice in quanto nessuno dei due campi è vuoto e quindi nella query che hai postato basta sostuire OR con AND;

    aquatimer2000

  3. #3
    Originariamente inviato da aquatimer2000
    la selezione dell'anno e della squadra, come vengono effettuate? tramite <select> o tramite <input>?

    nel secondo caso dovresti fare dei controlli sulle due variabili ($yyyy e $squadra) e poi scrivere la query di conseguenza.

    nel primo caso, (passaggio dati tramite <select>) è tutto molto più semplice in quanto nessuno dei due campi è vuoto e quindi nella query che hai postato basta sostuire OR con AND;

    Li passo con select.

    Ma come faccio a sostituire OR con AND?

    Devo verificare se una delle due variabili è vuota?

    Come si fa? Una roba del tipo $yyy = 'null'?

  4. #4
    passando anno e squadra tramite <select> non dovresti avere un valore "null" nè se "anno" nè su "squadra".

    in questo caso (quindi nessun valore null) la ricerca va filtrata sia su anno che su squadra e di conseguenza usi AND

    sopponendo che nella <select> hai una prima scelta vuota puoi utilizzare questo controllo:

    codice:
    if($squadra=="" OR $anno=="")
    {
        /*utilizza query con OR;*/
    }
    else
    {
        /* utilizza query con AND;*
    }
    aquatimer2000

  5. #5
    Niente... non riesco...

    Nel mio esempio pratico, quello che mi hai scritto è diventato così, ma non funge:

    <?php
    $news = $_GET['news'];
    $yyyy = $_POST['yyyy'];
    $squadra = $_POST['squadra'];
    include("inc.php");?>
    <?php
    if($squadra=="" OR $anno=="")
    {
    $opzione = 'and';
    }
    else
    {
    $opzione = 'or';
    }
    ?>

    <?
    $sql = "select * from news WHERE yyyy = '$yyyy' $opzione squadra = '$squadra' order by id desc LIMIT 0,10";
    if ($result = mysql_query ("$sql")){
    while ($row=mysql_fetch_array ($result)) {
    ?>


    dove sbaglio?

  6. #6
    allora andiamo con ordine..

    la variabile $news che recuperi all'inizio, dove viene riutilizzata?

    scrivi la query in modo che, in caso di errore, ti stampi l'errore:

    codice:
    $result=mysql_query=($sql,$db) or die (mysql_error());
    già a prima vista manca la connessione al database (vedi il controllo IF)

    aquatimer2000

  7. #7
    Originariamente inviato da aquatimer2000
    allora andiamo con ordine..

    la variabile $news che recuperi all'inizio, dove viene riutilizzata?

    scrivi la query in modo che, in caso di errore, ti stampi l'errore:

    codice:
    $result=mysql_query=($sql,$db) or die (mysql_error());
    già a prima vista manca la connessione al database nella query..

    La connessione al DB la fa il file INCLUDE. La variabile news non mi serve in questo caso specifico.

    La query funziona perfettamente. Quello che non funziona è la parte con i controlli sui valori &yyyy e &squadra

  8. #8
    Originariamente inviato da Lacasadipaolo
    if ($result = mysql_query ("$sql"))
    mysql_query($sql,$db)...

    query,connessione_mysql_selezione_db
    aquatimer2000

  9. #9
    Ho risolto!

    ho fatto così:

    <?php
    if($squadra=="")
    {
    $opzione = "WHERE yyyy = '$yyyy'";
    }
    if($yyyy=="")
    {
    $opzione = "WHERE squadra = '$squadra'";
    }
    else
    {
    $opzione = "WHERE squadra = '$squadra' and yyyy = '$yyyy'";
    }
    ?>

    Grazie per l'aiuto


    Adesso vi chiedo una nuova cos...

    come si fa a verificare se una stringa contiene una determinata parola?

    grazie

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.