Visualizzazione risultati 1 fino 7 di 7

Discussione: campi opzionali in motore di ricerca

  1. #1
    Guest

    Predefinito campi opzionali in motore di ricerca

    Ciao a tutti!
    Sto continuando a fare un motore di ricerca, almeno la struttura funziona.
    ho una form con un campo di ricerca input e con un menu a tendina, come fare capire a php che i campi sono opzionali?

    Ad esempio se io scrivo una parola nell'input, php dovrebbe intepretare il valore del menu a tendina (che è rimasto nullo) come comprensivo di tutti i valori che esso può assumere.
    Servirebbe un valore con lo stesso significato dell'asterisco da associare alla variabile! Esiste?

    Ho provato a creare questo if ma non so che valore metterci:
    if($_POST['id_cliente'] = 'null') { // se il valore è nullo
    $id_cliente = ??? ; //fai corrispondere la variabile a...???
    }

    La select è questa..
    SELECT * FROM tabella
    WHERE
    NomeCommessa LIKE '%$nome_commessa%'
    AND IdCliente= $id_cliente
    ORDER BY NomeCommessa"

  2. #2
    Guest

    Predefinito

    Non è che abbia capito molto dalla tua spiegazione, ma in generale puoi fare una cosa del genere:

    Codice PHP:
    $query="SELECT* FROM tabella
    WHERE campoObbligatorio='
    $campoObbligatorio'
    "
    ;
    if(isset(
    $_POST['altroCampo'] && isset($_POST['altroCampo']!=''){
    $query.=" AND altroCampo='".$_POST['altroCampo']."'\n";
    }

    $r=mysql_query($query);

    Ciao!
    Ultima modifica di debug : 29-10-2008 alle ore 16.43.15

  3. #3
    Guest

    Predefinito

    si...non mi sono spiegata molto bene...

    Il fatto è che tutti i campi compilabili sono opzionali!
    Nessuno è obbligatorio e quindi ognuno deve essere indipendente dagli altri nella ricerca...

    I risultati dovrebbero essere frutto della ricerca di un campo solo, come di più campi combinati!

  4. #4
    Guest

    Predefinito

    Poco di diverso:
    Codice PHP:
    $query="SELECT * FROM tabella
    WHERE 1
    "
    ;

    if(isset(
    $_POST['altroCampo'] && isset($_POST['altroCampo']!=''){
    $query.=" AND altroCampo='".$_POST['altroCampo']."'\n";
    }

    if(isset(
    $_POST['altroCampo2'] && isset($_POST['altroCampo2']!=''){
    $query.=" AND altroCampo2='".$_POST['altroCampo2']."'\n";
    }

    // e così via //

    $r=mysql_query($query);

    Ciaoooooo!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Poco di diverso:
    Codice PHP:
    $query="SELECT * FROM tabella
    WHERE 1
    "
    ;

    if(isset(
    $_POST['altroCampo'] && isset($_POST['altroCampo']!=''){
    $query.=" AND altroCampo='".$_POST['altroCampo']."'\n";
    }

    if(isset(
    $_POST['altroCampo2'] && isset($_POST['altroCampo2']!=''){
    $query.=" AND altroCampo2='".$_POST['altroCampo2']."'\n";
    }

    // e così via //

    $r=mysql_query($query);

    Ciaoooooo!
    Scusa debug premesso che non sei un bacchettone (xD) ma non c'è qualche parentesi di meno e qualche isset di troppo?

    Codice PHP:
    $query="SELECT * FROM tabella
    WHERE 1
    "
    ;

    if(isset(
    $_POST['altroCampo']) && $_POST['altroCampo']!=''){
    $query.=" AND altroCampo='".$_POST['altroCampo']."'\n";
    }

    if(isset(
    $_POST['altroCampo2']) && $_POST['altroCampo2']!=''){
    $query.=" AND altroCampo2='".$_POST['altroCampo2']."'\n";
    }

    // e così via //

    $r=mysql_query($query) or die(mysql_error());
    Dovrebbe essere così però puoi smentirmi.

    EDIT: piccola aggiunta: conviene sempre aggiungere oltre a mysql_query(); anche un or die(mysql_error()); che è molto utile per il debug.
    Ultima modifica di Xenom89 : 29-10-2008 alle ore 17.07.05

  6. #6
    Guest

    Predefinito

    occazz, hai ragione, nel copia-incolla mi sono dimenticato qualcosa :P


    Ciao!

  7. #7
    Guest

    Predefinito

    grazie tantissimo ad entrambi!
    funziona alla perfezione!!
    grazie grazie grazie!!!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •