Devo creare un form per la "Registrazione" nel quale l'utente seleziona prima la provincia e poi il comune (da una lista dinamica). Ho trovato questo scipt e l'ho adattato al mio bisogno, ma non ci crederete!! Non mi funziona (che schiappa che sono)
Potete dargli un'occhiata? Penso che possa essere utile a molti.
ps. lo script si appoggua su un database con 2 tabelle
1 comuni: con 3 compi: id, comune, id_provincia.
2 provincia: con 2 campi: id, Provincia.
PRIMO FILE: Registrazione.php
<?php require_once('Connections/file.php'); ?>
<html>
// il codice incriminato
<script type=”text/javascript” src=”Film_Province_Comuni.js”></script>
<body>
//fine prima parte
<form action="registrazioneok.php" method="POST" name="formRegistra" id="formRegistra">
<p align="center" class="filmtesto Stile5"><strong>Nickname</strong><span class="Stile16"> (campo obbligatorio- almeno 4 caratteri - Usare solo lettere e/o numeri)</span>
<input name="nomeuser" type="text" id="nomeuser">
</p>
<p align="center" class="filmtesto Stile5"> <strong>Password</strong> <span class="Stile16">(campo obbligatorio- almeno 8 caratteri - Usare solo lettere e/o numeri)</span>
<input name="password" type="password" id="password">
</p>
<p align="center" class="filmtesto Stile5"><strong>E-mail</strong><span class="Stile16"> (non obbligatorio) </span>
<!--fgfgffgf -->
<input name="email" type="text" id="email" size="30">
</p>
<p align="center" class="filmtesto Stile5"><strong>Cellulare o Telefono </strong><span class="Stile16">(non obbligatorio)</span>
<input name="cellulare" type="text" id="cellulare">
</p>
// il codice incriminato
<fieldset>
<label for=”province”>
<div align="center"></div>
</label>
<div align="center"><br />
<fieldset>
<div align="center"></div>
</fieldset>
<p align="center" class="Stile5"><span class="Stile6"><strong>Provincia</strong> preferita per lo scambio dei film <span class="Stile16">(obbligatorio) </span></span>
<select name=”province” id=”province” onchange=”loadList(’comune’, getSelected(this))” >
</select>
<br />
</div>
<label for=”comune“>
<div align="center"></div>
</label>
<div align="center"><br />
<span class="Stile5"><span class="Stile6"><strong>Comune</strong> preferito per lo scambio dei film <span class="Stile15">(obbligatorio)</span>
<label></label>
</span></span>
<select name=”comune” id=”comune“>
</select>
<br />
</div>
</fieldset>
// fine 2^ parte
<span class="testo"><input type="submit" name="Submit" value="REGISTRAMI">
</span><span class="testo">
<input type="hidden" name="MM_insert" value="formRegistra">
</span>
</p>
</div>
</form>
// il codice incriminato
<!– script per precaricare le province –>
<script type=”text/javascript”>
//<![CDATA[
loadList('province', 0);
//]]>
</script>
// Fine 3^ parte
<div align="center"><a href="index.php" class="Stile5">Home</a></div>
<p align="center" class="testo"> </p>
</body>
</html>
SECONDO FILE: PROVINCE.JS
var xmlHttp = getXmlHttpObject();function loadList(tb, id){
xmlHttp.open(’GET’, ‘richiesta.php?table=’+tb+’&id=’+id, true);
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.send(null);
}
function addOption(select, value, text) {
//Aggiunge un elemento ad una select
var option = document.createElement(”option”);
option.value = value,
option.text = text;
try {
select.add(option, null);
} catch(e) {
//Per Internet Explorer
select.add(option);
}
}
function getSelected(select) {
//ritorna il valore dell’elemento selezionato
return select.options[select.selectedIndex].value;
}
function stateChanged() {
if(xmlHttp.readyState == 4) {
//Stato OK
if (xmlHttp.status == 200) {
var resp = xmlHttp.responseText;if(resp) {
var values = resp.split(’;');
var listId = values.shift();
var select = document.getElementById(listId);
//svuota elementi precedenti
while (select.options.length) {
select.remove(0);
}if(listId == ‘province’) {
addOption (select, 0, ‘– Selezionare la provincia –’);
}
var limit = values.length;for(i=0; i < limit; i++) {
var pair = values.split(’|');
addOption(select, pair[0], pair[1]);
}
}
} else {
alert(xmlHttp.responseText);
}
}
}//funzione per abilitare Ajax, la chiamata è diversa a seconda del browser
function getXmlHttpObject()
{
var xmlHttp=null;
try
{
//Firefox e Opera
xmlHttp=new XMLHttpRequest();
}
catch(e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject(”Msxml2.XMLHTTP”);
}
catch(e)
{
xmlHttp=new ActiveXObject(”Microsoft.XMLHTTP”);
}
}
return xmlHttp;
}
TERZO FILE: RICHIESTA.PHP
<?php require_once('../Connections/file.php'); ?>
<?php
if (!isset($_SESSION)) {
session_start();
}
define(’DB_HOST’,'localhost');
define(’DB_NAME’,'mydatabase');
define(’DB_USER’,'root');
define(’DB_PASSWORD’,'');
$connection= mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die;
mysql_select_db(DB_NAME) or die;$pid = $_REQUEST['id'];
$tb = mysql_real_escape_string($_REQUEST['table'], $connection);switch($tb) {
case ‘province’:
$sql=”SELECT id, provincia FROM `$tb` ORDER BY provincia”;
break;
case ‘citta’:
$sql=”SELECT id, comune FROM `$tb` WHERE id_provincia=$pid ORDER BY comune”;
break;
}
$out=”$tb;”;
if($result = mysql_query($sql, $conn)) {
while ($row = mysql_fetch_row($result)) {
$out .= $row[0] . ‘|’ . $row[1] . ‘;’;
}
}
echo rtrim($out, ‘;’);
?>
:book:
Potete dargli un'occhiata? Penso che possa essere utile a molti.
ps. lo script si appoggua su un database con 2 tabelle
1 comuni: con 3 compi: id, comune, id_provincia.
2 provincia: con 2 campi: id, Provincia.
PRIMO FILE: Registrazione.php
<?php require_once('Connections/file.php'); ?>
<html>
// il codice incriminato
<script type=”text/javascript” src=”Film_Province_Comuni.js”></script>
<body>
//fine prima parte
<form action="registrazioneok.php" method="POST" name="formRegistra" id="formRegistra">
<p align="center" class="filmtesto Stile5"><strong>Nickname</strong><span class="Stile16"> (campo obbligatorio- almeno 4 caratteri - Usare solo lettere e/o numeri)</span>
<input name="nomeuser" type="text" id="nomeuser">
</p>
<p align="center" class="filmtesto Stile5"> <strong>Password</strong> <span class="Stile16">(campo obbligatorio- almeno 8 caratteri - Usare solo lettere e/o numeri)</span>
<input name="password" type="password" id="password">
</p>
<p align="center" class="filmtesto Stile5"><strong>E-mail</strong><span class="Stile16"> (non obbligatorio) </span>
<!--fgfgffgf -->
<input name="email" type="text" id="email" size="30">
</p>
<p align="center" class="filmtesto Stile5"><strong>Cellulare o Telefono </strong><span class="Stile16">(non obbligatorio)</span>
<input name="cellulare" type="text" id="cellulare">
</p>
// il codice incriminato
<fieldset>
<label for=”province”>
<div align="center"></div>
</label>
<div align="center"><br />
<fieldset>
<div align="center"></div>
</fieldset>
<p align="center" class="Stile5"><span class="Stile6"><strong>Provincia</strong> preferita per lo scambio dei film <span class="Stile16">(obbligatorio) </span></span>
<select name=”province” id=”province” onchange=”loadList(’comune’, getSelected(this))” >
</select>
<br />
</div>
<label for=”comune“>
<div align="center"></div>
</label>
<div align="center"><br />
<span class="Stile5"><span class="Stile6"><strong>Comune</strong> preferito per lo scambio dei film <span class="Stile15">(obbligatorio)</span>
<label></label>
</span></span>
<select name=”comune” id=”comune“>
</select>
<br />
</div>
</fieldset>
// fine 2^ parte
<span class="testo"><input type="submit" name="Submit" value="REGISTRAMI">
</span><span class="testo">
<input type="hidden" name="MM_insert" value="formRegistra">
</span>
</p>
</div>
</form>
// il codice incriminato
<!– script per precaricare le province –>
<script type=”text/javascript”>
//<![CDATA[
loadList('province', 0);
//]]>
</script>
// Fine 3^ parte
<div align="center"><a href="index.php" class="Stile5">Home</a></div>
<p align="center" class="testo"> </p>
</body>
</html>
SECONDO FILE: PROVINCE.JS
var xmlHttp = getXmlHttpObject();function loadList(tb, id){
xmlHttp.open(’GET’, ‘richiesta.php?table=’+tb+’&id=’+id, true);
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.send(null);
}
function addOption(select, value, text) {
//Aggiunge un elemento ad una select
var option = document.createElement(”option”);
option.value = value,
option.text = text;
try {
select.add(option, null);
} catch(e) {
//Per Internet Explorer
select.add(option);
}
}
function getSelected(select) {
//ritorna il valore dell’elemento selezionato
return select.options[select.selectedIndex].value;
}
function stateChanged() {
if(xmlHttp.readyState == 4) {
//Stato OK
if (xmlHttp.status == 200) {
var resp = xmlHttp.responseText;if(resp) {
var values = resp.split(’;');
var listId = values.shift();
var select = document.getElementById(listId);
//svuota elementi precedenti
while (select.options.length) {
select.remove(0);
}if(listId == ‘province’) {
addOption (select, 0, ‘– Selezionare la provincia –’);
}
var limit = values.length;for(i=0; i < limit; i++) {
var pair = values.split(’|');
addOption(select, pair[0], pair[1]);
}
}
} else {
alert(xmlHttp.responseText);
}
}
}//funzione per abilitare Ajax, la chiamata è diversa a seconda del browser
function getXmlHttpObject()
{
var xmlHttp=null;
try
{
//Firefox e Opera
xmlHttp=new XMLHttpRequest();
}
catch(e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject(”Msxml2.XMLHTTP”);
}
catch(e)
{
xmlHttp=new ActiveXObject(”Microsoft.XMLHTTP”);
}
}
return xmlHttp;
}
TERZO FILE: RICHIESTA.PHP
<?php require_once('../Connections/file.php'); ?>
<?php
if (!isset($_SESSION)) {
session_start();
}
define(’DB_HOST’,'localhost');
define(’DB_NAME’,'mydatabase');
define(’DB_USER’,'root');
define(’DB_PASSWORD’,'');
$connection= mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die;
mysql_select_db(DB_NAME) or die;$pid = $_REQUEST['id'];
$tb = mysql_real_escape_string($_REQUEST['table'], $connection);switch($tb) {
case ‘province’:
$sql=”SELECT id, provincia FROM `$tb` ORDER BY provincia”;
break;
case ‘citta’:
$sql=”SELECT id, comune FROM `$tb` WHERE id_provincia=$pid ORDER BY comune”;
break;
}
$out=”$tb;”;
if($result = mysql_query($sql, $conn)) {
while ($row = mysql_fetch_row($result)) {
$out .= $row[0] . ‘|’ . $row[1] . ‘;’;
}
}
echo rtrim($out, ‘;’);
?>
:book: