Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    376

    select con più campi anche vuoti

    salve atutti vorrei sepre come posso fare ad inviare una select su una tabella avendo come form di partenza un form con 4 campi, e non è detto che questi 5 campi siano riempiti solamente 2 sono obbligatori gli altri no. La select che ho costruito vuole giustamente tutti e 4 i campi altrimenti non funziona come posso fare. Vi posto il codice:
    pagina con la form
    <form action="centrale1.asp" method="post" name="form" target="mainFrame" onSubmit="return formCheck(this)">
    <table width="70%" border="1">
    <tr>
    <td class="titoloLatoSx" width="29%">Tipologia</td>
    <td class="titoloLatoSx" width="23%">Regione *</td>
    <td class="titoloLatoSx" width="18%">Provincia *</td>
    <td class="titoloLatoSx" width="10%">Comune</td>
    </tr>
    <tr>
    <td width="29%"><select name="Tipologia" id="Tipologia">
    <option></option>
    <% While (NOT Recordset2.EOF)%>
    <option value="<%=(Recordset2.Fields.Item("Tipologia").Val ue)%>"><%=(Recordset2.Fields.Item("Tipologia").Val ue)%></option>
    <%Recordset2.MoveNext()
    Wend
    If (Recordset2.CursorType > 0) Then
    Recordset2.MoveFirst
    Else
    Recordset2.Requery
    End If
    %>
    </select>
    </td>
    <td width="23%"><select name="Regione" id="Regione">
    <option></option>
    <% While (NOT Recordset1.EOF)%>
    <option value="<%=(Recordset1.Fields.Item("Regione").Value )%>"><%=(Recordset1.Fields.Item("Regione").Value)% ></option>
    <%Recordset1.MoveNext()
    Wend
    If (Recordset1.CursorType > 0) Then
    Recordset1.MoveFirst
    Else
    Recordset1.Requery
    End If
    %>
    </select>
    </td>
    <td width="18%"><select name="Provincia" id="Provincia">
    <option value></option>
    <%While (NOT Recordset3.EOF)%>
    <option value="<%=(Recordset3.Fields.Item("Provincia").Val ue)%>"><%=(Recordset3.Fields.Item("Provincia").Val ue)%></option>
    <%
    Recordset3.MoveNext()
    Wend
    If (Recordset3.CursorType > 0) Then
    Recordset3.MoveFirst
    Else
    Recordset3.Requery
    End If
    %>
    </select>
    </td>
    <td width="30%"><input name="Comune" size="20" type="text" id="Comune" onblur="validate()"></td>
    </tr>
    <tr>
    <td ><input name="Ricerca" type="submit" class="scritteLatoSx" value="Ricerca"></td>
    </tr>
    <tr>
    <td class="elenco1">I campi con * sono obbligatori</td>
    </tr>
    </table>
    </form>


    Pagina con i risultati:

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>


    <%
    provi=cstr(request.form("Provincia"))
    regio= request("Regione")
    Comu=request("Comune")
    Tipologia=request.Form("Tipologia")
    Dim Recordset1
    Dim Recordset1_numRows

    Set Recordset1 = Server.CreateObject("ADODB.Recordset")
    Recordset1.ActiveConnection = MM_conn_STRING
    Recordset1.Source = "SELECT * FROM T_Prodotti where Provincia ='"& provi & "' and Regione ='"& regio & "' and Comune ='"& Comu & "' and Tipologia = '"&Tipologia&"'"
    Recordset1.CursorType = 0
    Recordset1.CursorLocation = 2
    Recordset1.LockType = 1
    Recordset1.Open()
    Chi Crede in Me non Perirà MAI

  2. #2
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    risolvi con una semplice condizione if..then..end if sui campi del form che possono essere vuoti; quando sono vuoti cambi la query e la esegui solo sui campi correttamente popolati.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    376

    PROBLEMONE ONE ONE ONE

    ok, ci avevo pensato anche io ma se faccio in questo modo mi diventa un fattoriale la select che quindi diventano 6 select e se poi un domani i campi crescono che faccio mi metto a fare 20 query
    ci deve essere un altro metodo.
    Esempio se io in una form ho 10 campi e 1 solo obbligatorio le select che devo fare sono:
    9x8x7x6x5x4x3x2x1 è IMPOSSIBILE, deve esistese un altro metodo.
    Chi Crede in Me non Perirà MAI

  4. #4
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Re: PROBLEMONE ONE ONE ONE

    Originariamente inviato da devil946
    ok, ci avevo pensato anche io ma se faccio in questo modo mi diventa un fattoriale la select che quindi diventano 6 select e se poi un domani i campi crescono che faccio mi metto a fare 20 query
    ci deve essere un altro metodo.
    Esempio se io in una form ho 10 campi e 1 solo obbligatorio le select che devo fare sono:
    9x8x7x6x5x4x3x2x1 è IMPOSSIBILE, deve esistese un altro metodo.
    Non devi fare 20 query... te ne basta una dove ogni volta che il valore del campo che recuperi con il request.form è diverso da nullo aggiungi la condizione dedicata a quel valore...

  5. #5
    si fa così

    codice:
    ' qui la tua SELECT senza selezioni
    ' ne invento una di fantasia
    SQL = "SELECT NOME, COGNOME, INDIRIZZO FROM TABELLA WHERE 1=1 "
    ' la parte  WHERE 1=1  lasciala così com'è!
    
    ' qui inizi a guardare le richieste
    ' si va sempre di fantasia, ok?
    
    qNome = request("qNome")
    IF TRIM(qNome & "[]") <> "[]" THEN
       SQL = SQL & " AND NOME = '" & qNome & "'"
    END IF
    
    ' e poi vai con tutte le altre request
    prova e facce sape'

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    376
    ok grazie ma in questo faccio una where se il nome è riempito e non il congome, poi ne devo fare una se il cognome è riempito e il nome no, poi una se l'indirizzo è riempito e il nome, cognome no, poi un'altra con indirizzo e nome riepiti e cognome no, e così via, ma i miei campi sono 8 questo vuole dire fare una miriade di where, non c'è un'alytra soluzione??
    Chi Crede in Me non Perirà MAI

  7. #7
    ma santa crespella, hai letto quello che ho scritto? dai, ragionaci un attimo, è fatto apposta per NON fare una miriade di query

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    376
    ok giusta osservazione, scusami ma ero già cotto da prove precedenti.
    Ho provato a fare come dici te e va alla grande, grazie di cuore.
    Non è che mi aiuteresti anche in quest'altro problema??
    Ho 2 select e voglio che dopo aver selezionato un valore dalla prima i valori della seconda siano visualizzati in base alle scelta della prima, il problema è che la visualizzazione della seconda select è ok, ma il valore scelto nella prima select non rimane
    Ti posto il codice:

    <td width="23%"><select name="Regione" id="Regione" onChange="document.location.href=('?s='+this.optio ns[this.selectedIndex].value);">
    <option></option>
    <% While (NOT Recordset1.EOF)%>
    <option value="<%=(Recordset1.Fields.Item("Regione").Value )%>"><%=(Recordset1.Fields.Item("Regione").Value)% ></option>
    <%Recordset1.MoveNext()
    Wend
    If (Recordset1.CursorType > 0) Then
    Recordset1.MoveFirst
    Else
    Recordset1.Requery
    End If
    %>
    </select>
    </td>

    INIZIO SECONDA SELECT

    <%
    dim s
    s=request.querystring("s")
    if len(s)>0 then
    Dim Recordset3
    Dim Recordset3_numRows
    Set Recordset3 = Server.CreateObject("ADODB.Recordset")
    Recordset3.ActiveConnection = MM_conn_categorie_STRING
    Recordset3.Source = "SELECT Provincia FROM T_Provincie where Regione ='"& s & "'"
    Recordset3.CursorType = 0
    Recordset3.CursorLocation = 2
    Recordset3.LockType = 1
    Recordset3.Open()
    end if
    %>
    <td width="18%"><select name="Provincia" id="Provincia">
    <option value></option>
    <%While (NOT Recordset3.EOF)%>
    <option value="<%=(Recordset3.Fields.Item("Provincia").Val ue)%>"><%=(Recordset3.Fields.Item("Provincia").Val ue)%></option>
    <%
    Recordset3.MoveNext()
    Wend
    If (Recordset3.CursorType > 0) Then
    Recordset3.MoveFirst
    Else
    Recordset3.Requery
    End If
    %>
    </select>
    </td>
    Chi Crede in Me non Perirà MAI

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 © 2026 vBulletin Solutions, Inc. All rights reserved.