Vai al contenuto
PLC Forum


form dati php - mysql


blintz

Messaggi consigliati

ciao

ho un grosso problema e con tutta la mia buona volontà non riesco a venirne a capo

ho 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 scelto

nb. bisogna tener conto che certe città hanno diversi cap

io 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&acute;:
  <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 aiuto

grazie anticipatamente

gigi

Link al commento
Condividi su altri siti


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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...