Jump to content
PLC Forum


Sign in to follow this  
blintz

form dati php - mysql

Recommended Posts

blintz

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...