Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Sql

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    100

    Sql

    CAPISCO CHE NON SARA' BANALE CAPIRCI QUALCOSA MA C'E' QUALCUNO CHE MI TOGLIE DAI CASINI

    Ricerca in un db:
    vorrei creare un form che mi permettesse digitando una parola la ricerca in 4 campi diversi. Mi spiego: ho un db con aziende che hanno quattro campi di attività (cat1/cat2/cat3/cat4).
    Supponiamo che voglia cercare l'attività alimentare in tutti quattro i campi di tutte le aziende del db.
    Ho creato il seguente form (secondo voi va bene?)dove valorecampo1 è alimentari e i bottoni radio dovrebbero andare a verificare sul db i quattro campi categoria:

    <%}
    else if(tipoquery == "q2"){%>

    <form action="query3.asp?tipoquery=q2" method="post" name="form_q2">

    <table>
    <tr>
    <td>digita il valore da ricercare</td>
    </tr>
    <tr>
    <td> <input name="valorecampo1" type="text" size="20"> </td>
    </tr>
    <tr>
    <td><input type="radio" name="campo1" value="radiobutton">
    <input type="radio" name="campo2" value="radiobutton">
    <input type="radio" name="campo3" value="radiobutton">
    <input type="radio" name="campo4" value="radiobutton"></td>
    </tr>
    <tr>
    <td align="center"><hr>
    <input name="esegui" type="submit" value="esegui"></td>
    </tr>
    </table>

    Non riesco più a venirne a campo nelle query sul db, qualcuno ha voglia di darmi una mano:

    <%@LANGUAGE="JAVASCRIPT"%>

    <%
    var tipoquery = String(Request.QueryString("tipoquery"));
    var campo1 = String(Request.Form("campo1"));
    var valorecampo1 = Request.Form("valorecampo1");
    var campo2 = String(Request.Form("campo2"));
    var valorecampo2 = Request.Form("valorecampo2");
    var campo3 = String(Request.Form("campo3"));
    var valorecampo3 = Request.Form("valorecampo3");
    var campo4 = String(Request.Form("campo4"));
    var valorecampo4 = Request.Form("valorecampo4");
    var valorecampo5 = Request.Form("valorecampo5");
    // la variabile aggiorna è true quando viene cliccato il pulsante aggiorna
    // nel form della query in fondo pagina
    var aggiorna = Request.QueryString("aggiorna");
    if (aggiorna == "ok"){

    valorecampo1 = Request.QueryString("valorecampo1")
    campo2 = Request.QueryString("campo2")
    valorecampo2 = Request.QueryString("valorecampo2")
    sql = "UPDATE tbl_estero SET " + campo2 + "='" + valorecampo2 + "' WHERE ragionesociale LIKE '" + valorecampo1 + "'";
    conn.Open(sdc);
    rs = conn.Execute(sql);
    conn.Close();
    aggiorna = "no";
    Response.Redirect("ut_reg_pann_ctrl.asp")
    }
    %>

    <html>
    <head>
    <title>query sul database</title>
    <body class="table" bgcolor="#FFFFFF" text="#000000">

    <div align="center">
    <script type="text/javascript">document.write(link)</script>



    <%}
    else if(tipoquery == "q2"){%>

    <table width="463" border="1">
    <tr>
    <td width="90">ragione sociale</td>
    <td width="25">cat1</td>
    <td width="26">cat2</td>
    <td width="27">cat3</td>
    <td width="25">cat4</td>
    <td width="29">fax</td>
    <td width="48">telefono</td>
    <td width="40">email</td>
    <td width="89">sito</td>
    </tr>
    <%
    sql = "SELECT * FROM tbl_estero WHERE " + campo1 + " LIKE '" + valorecampo1 + "%' OR " + campo2 + " LIKE '" + valorecampo2 + "%'
    OR " + campo3 + " LIKE '" + valorecampo3 + "%'
    OR " + campo4 + " LIKE '" + valorecampo4 + "%'
    ORDER BY tbl_estero.ragionesociale"
    conn.Open(sdc)
    rs = conn.Execute(sql)
    while(!rs.EOF){%>
    <tr>
    <td><%= rs("ragionesociale") %></td>
    <td><%= rs("cat1") %></td>
    <td><%= rs("cat2") %></td>
    <td><%= rs("cat3") %></td>
    <td><%= rs("cat4") %></td>
    <td><%= rs("fax") %></td>
    <td><%= rs("telefono") %></td>
    <td><a href="mailto:<%= rs("email") %>" target="_blank"><%= rs("email") %></td>
    <td><a href="<%= rs("sito") %>" target="_blank"><%= rs("sito")%></td>
    </tr>
    <% rs.MoveNext
    };
    rs.Close();
    conn.Close(); %>
    </table>
    frappy66

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    100
    Mi sono dimenticata di allegare il messaggio di errore che mi restituisce:

    Nessun valore specificato per alcuni parametri necessari.
    /Sito_nuovo/estero/query3.asp, line 114

    e questa è la riga 114:
    rs = conn.Execute(sql)

    frappy66

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    100
    Se non riuscite ad aiutarmi qualcuno sa dirmi se c'è qualche esempio pratico da qualche parte??
    frappy66

  4. #4
    Facciamo il punto:

    - penso che il tuo script sia language=JScript.....
    - vedo una routine di aggiornamento che non è in questione
    - la routine per la ricerca per parole chiave, invece, penso che non funzioni bene perchè i campi su cui fare la ricerca dovranno essere compresi nella query "sql = ecc. ecc." SOLO SE SONO STATI SELEZIONATI, altrimenti lo script si trova a cercare in un certo campo un valore che non è stato definito (da cui l'errore "mancano parametri necessari")

    Avevo sviluppato una cosa simile tempo fa (anche se in VBScript, non in JScript), ma, con facili modifiche, la potrai confrontare con la tua e poi adattare, resisti 5 minuti.........
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  5. #5
    Per comprendere nella query SOLO i campi selezionati (sui quali eseguire la ricerca) dovresti procedere in questo modo (fermo restando che dovrai tradurre le istruzioni VBScript in istruzioni JScript):

    codice:
    sql = "SELECT * FROM tbl_estero WHERE"
    
    
      If request.form("campo1") = ON Then
         sql = sql & " '"&campo1&"' like '%" &valorecampo1& "%'"
      End If  
      If request.form("campo2") = ON Then
         If request.form("campo1") = ON Then sql = sql & " OR"
         sql = sql & " '"&campo2&"' like '%" &valorecampo2& "%'"
      End If
      If request.form("campo3")= ON Then
         If request.form("campo1")= ON OR request.form("campo2") = ON Then sql = sql & " OR"
         sql = sql & "'"&campo3&"' like '%" &valorecampo3& "%'"
       End If
       If request.form("campo4")= ON Then
         If request.form("campo1") = ON OR request.form("campo2") = ON OR request.form("campo3") = ON Then sql = sql & " OR"
         sql = sql & "'"&campo4&"' like '%" &valorecampo4& "%'"
       End If
    Uff..... ..ecco fatto!

    Mi sembra che ci sia tutto. Controlla se il valore passato dai radiobutton selezionati è effettivamente "ON" come ho usato io, non sono sicurissimo.....traduci in JScript.......e dovrebbe andare.

    Se, dopo avere sistemato lo script, ti interessa la possibilità di fare una ricerca per parole multiple anzichè su una sola parola, avevo sviluppato anche quello (è abbastanza facile)

    Buon divertimento.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    100
    Grazie, per l'aiuto. Provo a vedere se riesco a farla funzionare.
    Mi puoi girare il codice anche per ricerche multiple
    Ancora grazie
    franci
    frappy66

  7. #7
    Eccolo.

    Supponendo che la stringa contenente le parole da cercare sia "parole", per esempio potrebbe essere

    parole = "moglie marito dito"
    devi trattare l'input in questo modo:

    codice:
    parole=request("parole")
    
    if len(parole) > 0 then
    
    sql = "SELECT * FROM tabella WHERE"
    
    ArrSearch = Split(parole)
    
    for each word In ArrSearch
    
    If request.form("campo1") = ON Then
         sql = sql & " '"&campo1&"' like '%" &word& "%'"
      End If  
      If request.form("campo2") = ON Then
         If request.form("campo1") = ON Then sql = sql & " OR"
         sql = sql & " '"&campo2&"' like '%" &word& "%'"
      End If
      If request.form("campo3")= ON Then
         If request.form("campo1")= ON OR request.form("campo2") = ON Then sql = sql & " OR"
         sql = sql & "'"&campo3&"' like '%" &word& "%'"
       End If
       If request.form("campo4")= ON Then
         If request.form("campo1") = ON OR request.form("campo2") = ON OR request.form("campo3") = ON Then sql = sql & " OR"
         sql = sql & "'"&campo4&"' like '%" &word& "%'"
       End If     If Not x = UBound(ArrSearch) Then
    	  sql = sql & " or"
      End If
    
    Next
    end if
    Come prima, "ON" significa che nel form in cui scegli i campi sui quali effettuare la ricerca, quel campo è stato "checkato".

    Questo nell'ipotesi che la stringa composta dalle parole da cercare sia la stessa per tutti i campi in cui decidi di fare la ricerca (il che è ragionevole visto che puoi riunire le parole in un' unica variabile...)

    A te le modifiche per adattare il codice al tuo script, ma vedrai che saranno poche.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

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.