Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Interazione tra i campi in un form

    Salve.

    Ho un form in una pagina ASP e al suo interno ci sono tre listbox.
    Il primo è Regione (con la scelta della regione), il secondo è Provincia (con le province appartenenti alla Regione) e il terzo è Comuni (in cui ci sono i comuni appartenenti alla provincia).
    Se dichiaro le variabili di default all'inizio del fil ASP, il form funziona andando ad accedere al database e popola correttamente i listbox interessati, ma se vado sul primo (Regione) e cambio la regione in quale modo posso far vedere la variabile selezionata per Regione alla Sub che gestisce il listbox della Provincia ?
    Premetto che gestisco i listbox tramite sub in ASP.

    <%
    'oConn è la stringa di connessione
    <select size="1" name="tRegione"><% AddRegioniMenu sRegione, oConn %></select>

    'e qui c'è la Sub
    '-- Sub usata per creare un menu dropdown delle Regioni italiane
    Sub AddRegioniMenu(sDefault, oConn)
    Dim RecordSet 'as record set
    Dim sSQL 'as string
    Dim sCode 'as string
    Dim sName 'as string
    sSQL = "SELECT creg, regione FROM Regioni"
    Set RecordSet = oConn.Execute(sSQL)
    IF NOT RecordSet.EOF THEN
    DO UNTIL RecordSet.EOF
    sCode = Trim(RecordSet(0).Value)
    sName = Trim(RecordSet(1).Value)
    IF LCase(sDefault) = LCase(sCode) THEN
    Response.Write "<option selected value=""" & sCode & """>" & sName & "</option>"
    ELSE
    Response.Write "<option value=""" & sCode & """>" & sName & "</option>"
    END IF
    RecordSet.MoveNext
    LOOP
    END IF
    Set RecordSet = Nothing
    End Sub
    %>

    'Scelta della Provincia
    <select size="1" name="tProvincia"><% AddProvinceMenu sProvincia, sRegione %></select>

    'e qui c'è la Sub
    '-- Sub usata per creare un menu dropdown delle Provincie filtrate per Regione
    Sub AddProvinceMenu(sDefault, filtro)
    Dim sSQL 'as string
    Dim sCode 'as string
    Dim sName 'as string
    sSQL = "SELECT provincia, provest, COUNT(*) AS qt FROM comuni WHERE creg='" & filtro & "' GROUP BY provest, provincia"
    Set RecordSet = oConn.Execute(sSQL)
    IF NOT RecordSet.EOF THEN
    DO UNTIL RecordSet.EOF
    sCode = Trim(RecordSet(0).Value)
    sName = Trim(RecordSet(1).Value)
    IF LCase(sDefault) = LCase(sCode) THEN
    Response.Write "<option selected value=""" & sCode & """>" & sName & "</option>"
    ELSE
    Response.Write "<option value=""" & sCode & """>" & sName & "</option>"
    END IF
    RecordSet.MoveNext
    LOOP
    END IF
    Set RecordSet = Nothing
    End Sub
    %>
    Grazie a che vorrà rispondermi

  2. #2
    Ti faccio un esempio:
    tblRegioni
    idRegione - contatore
    regione - testo

    tblProvincie
    idProvincia - contatore
    idRegione - numerico
    provincia - testo

    tblComuni
    idComune - contatore
    idProvincia - numerico
    comune - testo

    codice:
    <%
    idRegione = request.queryString("idRegione")
    if isNumeric(idRegione) then 
    	idRegione = cLng(idRegione)
    else
    	idRegione = 0
    end if
    
    idProvincia = request.queryString("idProvincia")
    if isNumeric(idProvincia) then 
    	idProvincia = cLng(idProvincia)
    else
    	idProvincia = 0
    end if
    
    idComune = request.queryString("idComune")
    if isNumeric(idComune) then 
    	idComune = cLng(idComune)
    else
    	idComune = 0
    end if
    
    questaPagina = request.serverVariables("PATH_INFO")
    %>
    <form>
    <%
    set conn = server.createObject("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mapPath("\samples\mdb-database\database.mdb")
    
    	sql = "SELECT * FROM tblRegioni ORDER BY regione"
    	set rs = conn.execute(sql)
    	
    		if not rs.eof then
    %>
    			<select name="idRegione" onchange="document.location.href='<%=questaPagina%>?idRegione='+this.value;">
    				<option value="">SELEZIONA</option>
    <%
    			do until rs.eof
    %>
    				<option value="<%=rs("idRegione")%>"<% if idRegione = rs("idRegione") then %> selected="selected"<% end if %>><%=rs("regione")%></option>
    <%
    			rs.moveNext
    			loop
    %>
    			</select>
    <%		
    		end if
    		
    	rs.close
    	set rs = nothing
    
    
    	if idRegione > 0 then
    		
    		sql = "SELECT * FROM tblProvincie WHERE idRegione = " & idRegione & " ORDER BY provincia"
    		set rs = conn.execute(sql)
    		
    			if not rs.eof then
    %>
    			<select name="idProvincia" onchange="document.location.href='<%=questaPagina%>?idRegione=<%=idRegione%>&amp;idProvincia='+this.value;">
    				<option value="">SELEZIONA</option>
    <%
    				do until rs.eof
    %>
    				<option value="<%=rs("idProvincia")%>"<% if idProvincia = rs("idProvincia") then %> selected="selected"<% end if %>><%=rs("provincia")%></option>
    <%					
    					rs.moveNext
    				loop
    %>				
    			</select>
    <%				
    			end if
    		
    		rs.close
    		set rs = nothing
    		
    	end if
    	
    	if idProvincia > 0 then
    		
    		sql = "SELECT * FROM tblComuni WHERE idProvincia = " & idProvincia & " ORDER BY comune"
    		set rs = conn.execute(sql)
    		
    			if not rs.eof then
    %>
    			<select name="idComune" onchange="document.location.href='<%=questaPagina%>?idRegione=<%=idRegione%>&amp;idProvincia=<%=idProvincia%>&amp;idComune='+this.value;">
    				<option value="">SELEZIONA</option>
    <%
    				do until rs.eof
    %>
    				<option value="<%=rs("idComune")%>"<% if idComune = rs("idComune") then %> selected="selected"<% end if %>><%=rs("comune")%></option>
    <%					
    					rs.moveNext
    				loop
    %>				
    			</select>
    <%				
    			end if
    		
    		rs.close
    		set rs = nothing
    		
    	end if
    
    conn.close
    set conn = nothing
    %>
    </form>

  3. #3
    Ti ringrazio per la risposta.
    Le Sub che hai visto nel mio listato fanno parte di un file INCLUDE che tengo in disparte rispetto al codice di pagina.
    Faccio questo quando devo costruire qualcosa di complesso.
    Nella modalità che mi suggerisci tu (che sicuramente proverò) con tutti i controlli che devo fare al form per validarlo e mandarlo al database mi verrebbe fuori un codice molto disordinato, ergo, illeggibile e poco comodo da manutenere.
    Forse sarò pignolo, ma provenendo da piattaforme stand-alone in cui tutto se non viene strutturato come si conviene è impossibile poi apportare modifiche e/o correzioni, ho acquisito la mentalità (pallino ?) del codice ordinato.
    Ciao e grazie ancora

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Fai bene tu, si sa che mems fa il cuoco e non il programmatore...

    Roby

  5. #5
    Originariamente inviato da Roby_72
    Fai bene tu, si sa che mems fa il cuoco e non il programmatore...

    Roby
    Menu di oggi,
    Primi piatti:
    Array alla carbonara
    Database a forno

    Secondi piatti:
    Scaloppine ai funghi integer
    Pollo alla ADODB

    Contorno:
    Patate in INNER JOIN con insalata verde

    Dolce:
    Cookies della nonna.

    Caffè ed acqua minerale.

    Prezzo: 15 euro.


    Goldenhawk2007, il mio era solo un esempio per farti vedere come popolare dinamicamente delle select... non intendevo dirti come fare da zero il tuo codice.
    Infatti ho scritto "Ti faccio un esempio".
    Auguri e buon pranzo.

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Esemplare... ed economico!



    Roby

  7. #7
    Scusami, non volevo urtare la suscettibilità nè tua nè di chicchessia,
    non ci sono abituato, anzi...
    tornando al mio problemino, io dico che ci dovrebbe essere un modo per swappare le variabili tra i vari listbox.
    Sono da poco alle prese col Web Authoring. Fosse stata una procedura stand-alone avrei già finito da un pezzo. Raga', ma non c'è un modo per rendere globali le variabili locali ?? Puo' darsi che così risolvo il problema.

    Ciao ciao

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Si faceva per scherzare ovviamente...
    Non ho capito il tuo problema, nello specifico.

    Roby

  9. #9
    Il problemino non so se è "ino" o no.
    Allora, in un database, in un form, creo tre listbox, rispettivamente: REGIONI, PROVINCE e COMUNI.
    E funzionano egregiamente tutte e tre, ma.... INDIPENDENTEMENTE una dall'altra.
    Cioè, se do come default nelle variabili, ad esempio, CAMPANIA come regione e NAPOLI come Provincia, appena mi apre il form, mi popola i list box nel modo giusto, cioè con le province appartenenti alla regione CAMPANIA e i comuni appartenenti alla provincia NAPOLI.
    Ma se nel form, vado sul listbox della regione e cambio da CAMPANIA a, ad esempio, BASILICATA, le province restano quelle di CAMPANIA ed i comuni quelli della provincia di NAPOLI.
    Tieni presente che, come ho detto prima, nel listato del file, nella <select> uso un riferimento ad una sub che risiede in un listato in disparte che inglobo nel file con un INCLUDE.
    Se vuoi posso mandarti tramite email i pezzetti di codice sia del file primcipale che di quello include.

    Ciao ciao

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    la sub che devi richiamare è quella che popola i comuni passandole la provincia.
    mems ti ha mostrato come...
    Ad esempio...

    codice:
    <select name="idProvincia" onchange="document.location.href='<%=questaPagina%>?idRegione=<%=idRegione%>&idProvincia='+this.value;">
    Quando cambia la provincia ricarichi la pagina passando il nuovo idProvincia e la tua SUB recupererà i comuni corrispondenti.

    Roby

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.