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

    select dinamiche e ciclo Do

    Ciao, ho scaricato lo script delle select dinamiche da larianaweb.com.
    Ho provato in tutti i modi a modificare sia il codice in javascript che quello asp. Ma non ho trovato soluzione.

    codice:
    codice:
    sql = "select * from articoli"
    do while not rs1.EOF
    <form name="" ecc...>
    <div id="AHAHSEZ">
    <select name="SEZ">
    <option>------------</option>
    </select></div>
    <div id="AHAHSubSEZ">
    <select name="SubSEZ">
    <option>------------</option>
    </select>
    </form>
    rs.MoveNext
    Loop
    In pratica ho tre tabelle: una con gli articoli, un'altra con le sezioni e l'altra con le sotto sezioni, come faccio a caricare le due select per ogni record dell'articolo?
    E' un po' complicato spero di essere stato chiarò, se così non fosse troverò altri termini per spiegarmi

  2. #2
    Selezionando una voce dalla prima combo vuoi che nella seconda combo appaiano gli oggetti figli?

  3. #3
    il codice che hai postato è palesemente lacunoso ed errato....

    ma te le vuoi far caricare con javascript o con asp ricaricando di volta in volta la pagina?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Non ho specificato che quel codice che ho messo era solo un riassunto per farvi capire meglio.

    Lo script funziona con questo script javascript:
    codice:
    <script type="text/javascript">
    function caricaPagina(pagina,idLayer){
    	if (document.getElementById) {var x=(window.ActiveXObject)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();}
    	if (x) 
      	{
    		document.getElementById(idLayer).innerHTML = "Generazione lista...";
        	x.onreadystatechange = function() 
    							   {
    							   	 if (x.readyState == 4 && x.status == 200) 
    							   	 {
    									
    									el = document.getElementById(idLayer);
    									el.innerHTML = x.responseText;
    								 }
    							   }
     		x.open("GET", "http://localhost:8080/" + pagina, true);
        	x.send(null);
      	}
    }	
    </script>
    che richiama una pagina asp la quale crea la select.

    Ed io invece credo una pagina col la lista di tutti gli articoli i quali hanno per oguna due select per individuare o scegliare la sezione o sottosezione giusta. Il fatto è che logicamente lo script funziona solo per il primo select presente nella pagina.
    Ho provato con un ciclo For sullo scrit javascript, ed altre soluzioni, ma niente.

  5. #5
    Quello è una parte di codice javascript/AJAX.

  6. #6
    so che quello è AJAX e javascript ma il problema è che non so come modificarlo in base alla mia esigenza

  7. #7
    Sulla prima combo all'onchange metti il return della funzione javascript passandole la pagina da chiamare (comprensia di parametri in queryString) e l'ID del layer o tag html dove far caricare i dati.

  8. #8
    Ecco come è strutturato lo script:
    codice:
    <html>
    <head>
    <script type="text/javascript">
    function caricaPagina(pagina,idLayer){
    	if (document.getElementById) {var x=(window.ActiveXObject)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();}
    	if (x) 
      	{
    		document.getElementById(idLayer).innerHTML = "Generazione lista...";
        	x.onreadystatechange = function() 
    							   {
    							   	 if (x.readyState == 4 && x.status == 200) 
    							   	 {
    									
    									el = document.getElementById(idLayer);
    									el.innerHTML = x.responseText;
    								 }
    							   }
     		x.open("GET", "http://localhost:8080/" + pagina, true);
        	x.send(null);
      	}
    }	
    </script>
    </head>
    <body onload="caricaPagina('unapgina.asp?type=sez_id','AHAHSEZ)">
    <form name="" ecc...>
    <div id="AHAHSEZ">
    <select name="SEZ">
    <option>------------</option>
    </select></div>
    <div id="AHAHSubSEZ">
    <select name="SubSEZ">
    <option>------------</option>
    </select>
    </form>
    </body>
    </html>
    UNAPAGINA.ASP
    codice:
    <%
    value 						= replace(request("value")&"", "'", "&#39")
    fieldtype 					= request("type")
    set ds						= new DinamicSelect
    ds.prova = request("prova")
    if fieldtype = "sez_id" then 
    	' REGIONI
    	ds.DefaultText			= "-----------------"
    	ds.sql 					= "select * from tab_sezioni"
    	ds.SelectValue 			= "id_sez"
    	ds.SelectText 			= "sez_titolo"
    	ds.evento 				= " onchange=""caricaPagina('_Admin/unapagina.asp?type=ssez_id&value='"&_
    	                          "+ this.options[this.options.selectedIndex].value,'AHAHSSEZ');"""
    	ds.NomeCampo			= "SEZ_ID"
    end if 
    ' PROVINCIE
    if fieldtype = "ssez_id" then 
    	ds.DefaultText			= "-----------------"
    	ds.sql 					= "select * from tab_SEZIONI_SUB where sez_id = "& value&""
    	ds.selected 			= value
    	ds.SelectValue 			= "id_ssez"
    	ds.SelectText			= "ssez_titolo"
    	ds.evento 				= ""
    	ds.NomeCampo 			= "SSEZ_ID"
    end if 
    Response.Write(ds.CreaDinamicSelect())
    set ds						= nothing
    %>
    CLASS.ASP
    codice:
    Class DinamicSelect
    	Public SelectText		'impostare il nome del campo del database che verrà visualizzato nella lista 
    	Public SelectValue		'impostare il nome del campo del database che verrà passato come valore della lista
    	Public Selected			'impostare la voce che verrà visualizzata nella lista al caricamento di pagina
    	Public DataBase			'impostare l'url del database 
    	Public sql				'impostare la query per estrarre i dati
    	Public Evento			'impostare l'evento che provvederà al submit "parziale" del form
    	Public NomeCampo		'impostare il nome del campo (nell'ambito del form) 
    	Public DefaultText
    	Public Prova
    	Public Function CreaDinamicSelect()
    		Call Connession(rs, me.sql)
    		tmpString			= ""
    		tmpString			= tmpString & "<select name=""" & me.NomeCampo & """" & me.Evento & """>" & vbcrlf
    		tmpString			= tmpString & "<option value="""">" & Me.DefaultText & "</option>"  & vbcrlf
    		do until rs.eof
    			tmpString		= tmpString & "<option value=""" & Trim(rs(me.SelectValue)) & """" 
    			if rs(me.SelectValue) = me.selected then 
    				tmpString	= tmpString &  "selected = ""selected"""
    			end if 
    			tmpString		= tmpString & ">" & Trim(UCase(rs(me.SelectText))) & "</option>" & vbcrlf
    			rs.movenext
    		loop
    		rs.movefirst
    		tmpString			= tmpString &"</select>"& vbcrlf
    		'chiusura e distruzione del recordset
    		rs.close
    		set rs 				= nothing
    		'chiusura e distruzione della connessione
    		conn.close
    		set conn 			= nothing
    		CreaDinamicSelect	= tmpString
    	End function
    End Class
    La parte "Call connessione(..." è un mia Sub che richiama tutto il codice della connessione

    Cmq così vedete tutto lo script. come e dove posso modificarlo per la mia esigenza?

  9. #9
    Io fatto questo esempio:
    Sul db di nome db2.mdb ho due tabelle:
    tabella1
    campoID (contatore)
    campoNome (testo)

    tabella2
    campoID (contatore)
    campoNome (testo)
    parentID (numerico)

    Queste le pagine:
    pagina.asp
    codice:
    <%
    Response.CacheControl = "no-cache"
    Response.AddHeader "pragma", "no-cache"
    Response.Expires = 0
    
    session.LCID = 1040
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it" dir="ltr">
    	<head>
    		<title>Esempio AJAX</title>		
    		<script language="javascript" type="text/javascript" src="utility.js"></script>
    		<script language="javascript" type="text/javascript">						
    			function caricaTesto(metodo, nomeFile, parametri, idTag) {				
    			  var ajax = assegnaXMLHttpRequest();
    			  var elemento = prendiElementoDaId(idTag);			    
    			  var usaLink = true;
    			  if(ajax) {
    			    usaLink = false;			    
    			    ajax.open(metodo, nomeFile, true);
    			    if(metodo == "post") {			    	
    			    	ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    			    	ajax.send(parametri);			    	
    			    }
    			    if(metodo == "get") {
    			    	ajax.setRequestHeader('connection', 'close');
    			  	}
    			    ajax.onreadystatechange = function() {
    			      if(ajax.readyState == readyState.COMPLETATO) {			       
    			        if(statusText[ajax.status] == "OK")			          
    			          elemento.innerHTML = ajax.responseText;
    			        else {			         
    			          elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.
    ";
    			          elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
    			        }			      
    			      }
    			    //  else		  
    		  		//	elemento.innerHTML = "Caricamento in corso..."; 
    			    }			  
    			    if(metodo == "get") {
    			    ajax.send(null);
    			  	}
    			  }			   
    			  return usaLink;
    			}
    		</script>
    	</head>
    	<body>
    		<div id="parents" style="float: left;">
    <%
    	set conn = server.createObject("ADODB.Connection")
    	conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mapPath("\ajax\db\db2.mdb")
    
    	sql = "SELECT * FROM tabella1 ORDER BY campoNome"
    	
    	set rs = conn.execute(sql)
    	
    		if not rs.eof then
    %>
    			<select name="parents" onchange="return caricaTesto('get','list2.asp?id='+this.options[this.selectedIndex].value,null,'childs');">
    				<option value="">Seleziona</option>
    <%
    			do until rs.eof
    %>
    				<option value="<%=rs("campoID")%>"><%=rs("campoNome")%></option>
    <%
    			rs.moveNext
    			loop
    %>
    			</select>
    <%
    		end if
    		
    	rs.close
    	set rs = nothing
    	
    	conn.close
    	set conn = nothing
    %>
    		</div>
    		<div id="childs"></div>	
    	</body>
    </html>
    list2.asp
    codice:
    <%
    Response.CacheControl = "no-cache"
    Response.AddHeader "pragma", "no-cache"
    Response.Expires = 0
    
    session.LCID = 1040
    
    	id = request.queryString("id")
    	
    		if len(id) > 0 and isNumeric(id) then
    			
    			set conn = server.createObject("ADODB.Connection")
    			conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mapPath("\ajax\db\db2.mdb")
    
    			sql = "SELECT * FROM tabella2 WHERE parentID = " & id & " ORDER BY campoNome"
    	
    			set rs = conn.execute(sql)
    	
    				if not rs.eof then
    %>
    					<select name="childs">
    						<option value="">Seleziona</option>
    <%
    					do until rs.eof
    %>
    						<option value="<%=rs("campoID")%>"><%=rs("campoNome")%></option>
    <%
    					rs.moveNext
    					loop
    %>
    					</select>
    <%
    				end if
    		
    			rs.close
    			set rs = nothing
    	
    			conn.close
    			set conn = nothing
    			
    		end if
    %>
    il file utility.js incluso nella pagina.asp
    codice:
    		function prendiElementoDaId(id_elemento) {
    			var elemento;
    			if(document.getElementById)
    				elemento = document.getElementById(id_elemento);
    			else
    				elemento = document.all[id_elemento];
    			return elemento;
    		}
    
    		function assegnaXMLHttpRequest() {
    			var XHR = null,
    				browserUtente = navigator.userAgent.toUpperCase();
    			if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
    				XHR = new XMLHttpRequest();			
    			else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {				
    				if(browserUtente.indexOf("MSIE 5") < 0)
    					XHR = new ActiveXObject("Msxml2.XMLHTTP");
    				else
    					XHR = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			return XHR;
    		}
    
    		var readyState = {
    			INATTIVO:	0,
    			INIZIALIZZATO:	1,
    			RICHIESTA:	2,
    			RISPOSTA:	3,
    			COMPLETATO:	4
    		}
    
    		var statusText = new Array();
    		statusText[100] = "Continue";
    		statusText[101] = "Switching Protocols";
    		statusText[200] = "OK";
    		statusText[201] = "Created";
    		statusText[202] = "Accepted";
    		statusText[203] = "Non-Authoritative Information";
    		statusText[204] = "No Content";
    		statusText[205] = "Reset Content";
    		statusText[206] = "Partial Content";
    		statusText[300] = "Multiple Choices";
    		statusText[301] = "Moved Permanently";
    		statusText[302] = "Found";
    		statusText[303] = "See Other";
    		statusText[304] = "Not Modified";
    		statusText[305] = "Use Proxy";
    		statusText[306] = "(unused, but reserved)";
    		statusText[307] = "Temporary Redirect";
    		statusText[400] = "Bad Request";
    		statusText[401] = "Unauthorized";
    		statusText[402] = "Payment Required";
    		statusText[403] = "Forbidden";
    		statusText[404] = "Not Found";
    		statusText[405] = "Method Not Allowed";
    		statusText[406] = "Not Acceptable";
    		statusText[407] = "Proxy Authentication Required";
    		statusText[408] = "Request Timeout";
    		statusText[409] = "Conflict";
    		statusText[410] = "Gone";
    		statusText[411] = "Length Required";
    		statusText[412] = "Precondition Failed";
    		statusText[413] = "Request Entity Too Large";
    		statusText[414] = "Request-URI Too Long";
    		statusText[415] = "Unsupported Media Type";
    		statusText[416] = "Requested Range Not Satisfiable";
    		statusText[417] = "Expectation Failed";
    		statusText[500] = "Internal Server Error";
    		statusText[501] = "Not Implemented";
    		statusText[502] = "Bad Gateway";
    		statusText[503] = "Service Unavailable";
    		statusText[504] = "Gateway Timeout";
    		statusText[505] = "HTTP Version Not Supported";
    		statusText[509] = "Bandwidth Limit Exceeded";

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.