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

    Rendere un campo facoltativo

    Ciao a tutti,

    come faccio per fare un cosa del genere:

    vorrei che in un motore di ricerca sia obbligatorio solo il primo campo, cioè:

    il form di ricerca è composto da tre campi:

    1° campo "cerca" (imput Text) obbligatorio per la ricerca
    2° campo "secondocampo" (Menù a scorrimento) facoltativo (se non selezionato, o vuoto non viene inserito nella ricerca)
    3° campo "terzocampo" (imput Text) facoltativo (se non selezionato, o vuoto non viene inserito nella ricerca)

    lo script è questo:

    codice:
    <%
    	Response.Buffer = true;
    	var Cn = new ActiveXObject("ADODB.Connection");
    		Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("mdb-database/cerca.mdb"));
    	var testo = new String(Server.HTMLEncode(Request.Form("cerca")));
    	var r_testo = testo.replace(/'/g,"''");
    	var cerca = r_testo.split(" "); // Tutte le parole chiave devono essere separate da uno spazio vuoto
    	        secondocampo = Request("secondocampo")
    	        terzocampo = Request("terzocampo") 
                    var sql = "SELECT * FROM risultati WHERE ";
    		for (var i=0; i<cerca.length; i++)
    		{
    			if (i > 0) sql += " AND";
    			sql += " parole_chiave LIKE '%" + cerca[i] + "%'";
    		}
                    if (secondocampo != "")
                    sql += " AND secondocampo='" + secondocampo + "'"
                    if (terzocampo != "")
                    sql += " AND terzocampo='" + terzocampo + "'"
    		sql += " ORDER BY titolo";
    	var Mostra = Cn.Execute(sql);
    %>
    Grazie a tutti ciao
    La Gratitudine è la prima cosa nella vita...

    Grazie a tutti

  2. #2
    mi spiego meglio:

    ammettiamo che il mio db sia composto così:

    ci sono una tabella e tre campi, i tre campi sono, 1, 2 e 3 , ok?
    allora:

    nei campi ci stanno i seguenti records:

    Campo 1° = (1°rec) Casa | (2°rec) Scuola | (3°rec) Lavoro
    Campo 2° = (1°rec) luca | (2°rec) marco | (3°rec) andrea
    Campo 3° = (1°rec) rossi | (2°rec) verdi | (3°rec) Bianchi

    Ammettiamo che io faccia una ricerca così:

    1 ricerca) campo 1° "Casa" (mi dovrebbero uscire tutti i valori dove nel 1° campo ci sia la parola casa, senza calcolare i campi lasciati vuoti)

    2 Ricerca) campo 1° "casa" | Campo 2° "Luca" (mi dovrebbero uscire tutti i valori dove nel 1° campo ci sia la parola casa e nel 2° campo la parola luca, senza calcolare i campi lasciati vuoti)

    3 Ricerca) campo 1° "casa" | Campo 2° "luca" | Campo 3 "rossi" (mi dovrebbero uscire tutti i valori dove nel 1° campo ci sia la parola casa e nel 2° campo la parola luca e nel 3° campo la parola rossi)


    Come posso fare?

    Grazie a tutti per la collaborazione ciao
    La Gratitudine è la prima cosa nella vita...

    Grazie a tutti

  3. #3
    per ogni parametro controlli che contenga qualcosa. se si', lo aggiungi in AND alla WHERE della tua SELECT.

  4. #4
    si, ok, la logica l'ho capita, ma non mi è chiara la pratica, potresti darmi una mano nel codice che ho postato?

    Grazie per la collaborazione ciao
    La Gratitudine è la prima cosa nella vita...

    Grazie a tutti

  5. #5
    Il codice è questo:
    codice:
    <%
    	Response.Buffer = true;
    	var Cn = new ActiveXObject("ADODB.Connection");
    		Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("mdb-database/cerca.mdb"));
    	var testo = new String(Server.HTMLEncode(Request.Form("cerca")));
    	var r_testo = testo.replace(/'/g,"''");
    	var cerca = r_testo.split(" "); // Tutte le parole chiave devono essere separate da uno spazio vuoto
    	        secondocampo = Request("secondocampo")
    	        terzocampo = Request("terzocampo") 
                    var sql = "SELECT * FROM risultati WHERE ";
    		for (var i=0; i<cerca.length; i++)
    		{
    			if (i > 0) sql += " AND";
    			sql += " parole_chiave LIKE '%" + cerca[i] + "%'";
    		}
                    if (secondocampo != "")
                    sql += " AND secondocampo='" + secondocampo + "'"
                    if (terzocampo != "")
                    sql += " AND terzocampo='" + terzocampo + "'"
    		sql += " ORDER BY titolo";
    	var Mostra = Cn.Execute(sql);
    %>
    I campi da rendere facoltativi per la ricerca sono "secondocampo" & "terzocampo"...

    Grazie per la collaborazione ciao
    La Gratitudine è la prima cosa nella vita...

    Grazie a tutti

  6. #6
    up
    La Gratitudine è la prima cosa nella vita...

    Grazie a tutti

  7. #7
    cosi' come hai scritto sono gia facoltativi.... o no?

  8. #8
    si, facoltativi inteso come che non mi da errore, ma a me interessa, che se non compilati, non ne deve tener conto per la ricerca, cioè:

    lui mi considera il campo non compilato, e mi cerca come kaywords il valore " " cioè vuoto, ma vorrei che in caso di vuoto, cioè non compilato, il motore non tenga conto del campo, come se non esistesse...!

    Spero di essermi spiegato... ok?

    Grazie per la collaborazione sei gentilissimo
    La Gratitudine è la prima cosa nella vita...

    Grazie a tutti

  9. #9
    scusa, ma ...

    if (secondocampo != "")
    sql += " AND secondocampo='" + secondocampo + "'"

    non vuol dire: "se non e' vuoto, aggiungi" ?

  10. #10
    ok, ho corretto

    quella funzione che mi hai mandato va benissimo per i campi imput test, ma per i menù a scorrimento non viene riconosciuta, ora tutto è ok, ho risolto così:


    codice:
    if (secondocampo != "vuoto") 'che è il valore off del menù
    sql += " AND secondocampo='" + secondocampo + "'"
    Grazie cmq per l'aiuto, spero che questo post possa esser utile per qualcuno, ciao e grazie
    La Gratitudine è la prima cosa nella vita...

    Grazie a tutti

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.