blintz Inserito: 29 settembre 2008 Segnala Share Inserito: 29 settembre 2008 ciao ho un grosso problema e con tutta la mia buona volontà non riesco a venirne a capoho un form con diverse caselle sia txt che select, quest'ultime gestite con php per caricare i dati da tabella sql.Mi servirebbe però che:1. casella select 'Provincia', scegli Milano -->2. casella select 'Comune', scegli il comune -->3. casella txt 'CAP', esce il cap del comune sceltonb. bisogna tener conto che certe città hanno diversi capio ho la tabella sql così strutturata:Codice:TABLE tab_cap ( id_cap INTEGER PRIMARY KEY, --0 prov_cap TEXT, --1 comu_cap TEXT, --2 com2_cap TEXT, --3 fraz_cap TEXT, --4 fra2_cap TEXT, --5 topo_cap TEXT, --6 top2_cap TEXT, --7 dugt_cap TEXT, --8 nciv_cap TEXT, --9 capi_cap TEXT --10 che ti da, giusto per capire il contenuto della tabella:Codice:(NULL, 'AN', 'ANCONA', '', '', '', 'ACHILLE BARILATTI', '', 'VIA', '', '60127');(NULL, 'BA', 'BARI', '', '', '', 'GORIZIA', '', 'VICO III', '', '70129');(NULL, 'PD', 'PADOVA', '', '', '', 'MANDRIA', '', 'VIA', '', '35142');(NULL, 'RM', 'ROMA', '', '', '', 'CALVI', '', 'VIA', '', '00122');cioè ci sono tutte le vie delle città più i paesi della provincia, es:Codice:(NULL, 'PD', 'VEGGIANO', '', '', '', '', '', '', '', '35030');fino adesso sono riuscito a fare questo:<?php $connessione=mysql_connect("localhost", "root", "") or die(mysql_error()); $selezione_db=mysql_select_db("etaimpiantimed") or die(msyql_error()); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>Test AJAX</title> <script language="javascript" type="text/javascript"> /* * Autore: Giuseppe Leone - Master85 * Codice gratuitamente scaricato da http://www.masterdrive.it * Sezione di interesse: Articoli Tecnici >> PHP * MasterDrive.it (c) 2006. */ function newXMLHttpRequest(){ var xmlreq = false; //Controllo il tipo di oggetto XMLHttpRequest da utilizzare if(window.XMLHttpRequest){ //Per browser non Microsoft xmlreq = new XMLHttpRequest(); }else if(window.ActiveXObject){ //Cerco di creare l'oggetto via MS ActiveX try{ //Nuove versioni per browser IE xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e1){ //Errore riscontrato durante la creazione dell'oggetto try{ //Precedenti versioni per browser IE xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e2){ //Nuovo errore durante la creazione dell'oggetto xmlreq = false; } } } //Restituisco l'eventuale oggetto XMLHttpRequest return xmlreq; } /* * Funzione per la popolazione della Seconda SELECT */ function populateSubSelection(){ //Recupero i dati da inviare var province = document.getElementById("province"); //Creo un nuovo oggetto XMLHTTPRequest var req = newXMLHttpRequest(); //Invio la richiesta req.open("POST", "data.php", true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //Invio i dati POST req.send("choice=" + province.options[province.selectedIndex].value); //Gestore dell'evoluzione dello stato dell'oggetto req req.onreadystatechange = handleResponse(req, updateSubSelection); } /* * Ritorna una funzione per la gestione dello stato dell'oggetto req. * Ed infine a stato finale raggiunto, invia la risposta XML alla funzione che dovra' gestire il tutto. * reg = Istanza XMLHTTPRequest * XMLHandler = nome della funzione a cui passare il risultato XML da gestire */ function handleResponse(req, XMLHandler){ return function(){ //Controllo se l'oggetto req ha raggiunto lo stato finale if(req.readyState == 4){ //Inoltre accertiamoci di aver ottenuto il messaggio 200 dal server, if (req.status == 200){ //A questo punto richiamo la funzione che gestira' il risultato XML XMLHandler(req.responseXML); }else{ alert("Errore HTTP: " + req.status); } } } } /* * Popolo la seconda SELECT * XMLResult = Il risultato XML prodotto da handleResponse */ function updateSubSelection(XMLResult){ //Gestisco il documento XML ricevuto e popolo la seconda SELECT var categoria = XMLResult.getElementsByTagName('categoria'); //Recupero la seconda SELECT var subSelection = document.getElementById("subSelection"); //Svuoto la secondo SELECT for (var i = subSelection.length - 1; i >= 0; i--) subSelection.remove(i); //Scorro gli elementi for (var i = 0; i < categoria.length; i++){ //Recupero i vari elementi singoli var item = categoria[i]; //Creo il nuovo elemento OPTION da aggiungere nella seconda SELECT var NewOpt = document.createElement('option'); NewOpt.value = item.getAttribute("value"); NewOpt.text = item.firstChild.nodeValue; //Popolo la seconda SELECT try{ subSelection.add(NewOpt, null); //Metodo Standard, non funziona con IE }catch(e){ subSelection.add(NewOpt); // Funziona solo con IE function faqualcosa(value){ getItemCrossBrowser('in').value = value; getItemCrossBrowser('put').value = value; } //Funzione che ottiene l'oggetto DOM attraverso l'id dell'elemento function getItemCrossBrowser(id){ var item; if(document.getElementById) item = document.getElementById(id); else item = document.all[id]; return item; } } } } </script> </head> <body> <form method="post" action="write.php"> Provincia: <select id="province" onchange="populateSubSelection()"> <option value="">---</option> <option value="A">Menu' A</option> <option value="B">Menu' B</option> <option value="C">Menu' C</option> </select> Citta´: <select id="subSelection"> <option value="">---</option> </select> <?php //Creazione campi //Possiamo anche aumentare il numero dei campi for($i = 1; $i <= 1; $i++){ ?> <input type="hidden" name="id_<?php echo $i;?>" value="<?php echo $i;?>"> <?php echo $i;?>) Via: <input type="text" name="via_<?php echo $i;?>"> CAP: <input type="text" name="cap_<?php echo $i;?>"> <hr> <?php } ?> <input type="submit" value="Invia Dati"> </form> </body> </html>premetto che sono ancora alle prime armi se possibile vorrei un aiuto del genere-- come faccio a collegarmi al database per poi ottenere: -- prima select, compare campo "prov_cap" -- seconda select, compare campo "comu_cap" -- prima txtbox, compare campo topo_cap" ( risultato di "comu_cap" -- seconda txtbox, compare campo "capi.cap" (risultato di "comu_cap)è gradito qualsiasi tipo di aiutograzie anticipatamentegigi Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora