- Home
- Categorie
- Coding e Sistemistica
- PHP
- Select dinamiche...Da Diventare pazzi
-
Select dinamiche...Da Diventare pazzi
Ciao ragazzi,
ho provato a creare tre select dinamiche, la prima che dipende dalla seconda e la seconda della terza, con php e js.
Le prime due funzionano tranquillamente, selezione una provicia e mi torna tutti i comuni presenti. Adesso vorrei ampliarla a tre select, faccio tutto indenticamente però neanche mi visualizza la terza select, come mai?
Vi posto il codice:index.php
[php]
<?php
mysql_connect("localhost","root","") or die (mysql_error());
mysql_select_db("trinacria") or die (mysql_error());
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Popolare select dinamiche con AHAH</title><script type="text/javascript">
function createRequestObj(){ // creo un'istanza XMLHttpRequest
var re;
var browser=navigator.appName;
if (browser=="Microsoft Internet Explorer"){ // sniff browser
re=new ActiveXObject("Microsoft.XMLHTTP");
} else re=new XMLHttpRequest();
return re;
}var http=createRequestObj();
function popolaElemento(idElDaPopolare, paginaFonteDati, metodo, parametri){ // faccio una richiesta
// alert(parametri); // debug
var url=paginaFonteDati+"?" + parametri
http.open(metodo, url , true)
document.getElementById(idElDaPopolare).innerHTML="<select><option value="0">caricamento in corso...</option></select>";
http.onreadystatechange=function(){
if (http.readyState==4 || http.readyState=="complete"){
if (http.status == 200){
document.getElementById(idElDaPopolare).innerHTML=http.responseText;
} else {
document.getElementById(idElDaPopolare).innerHTML="<select><option>ERRORE "+http.status+"</option></select>";
}
}
}
http.send(null);
}function popolaElemento2(idElDaPopolare, paginaFonteDati, metodo, parametri){ // faccio una richiesta
// alert(parametri); // debug
var url=paginaFonteDati+"?" + parametri
http.open(metodo, url , true)
document.getElementById(idElDaPopolare).innerHTML="<select><option value="0">caricamento in corso...</option></select>";
http.onreadystatechange=function(){
if (http.readyState==4 || http.readyState=="complete"){
if (http.status == 200){
document.getElementById(idElDaPopolare).innerHTML=http.responseText;
} else {
document.getElementById(idElDaPopolare).innerHTML="<select><option>ERRORE "+http.status+"</option></select>";
}
}
}
http.send(null);
}
</script>
</head>
<body>
<h1>Esempio</h1><form action="pagina.php" method="get">
<!-- PROVINCIA -->
<label for="provincia" class="home">Provincia:</label>
<select title="selezionare la provincia di appartenenza" name="provincia" id="provincia" onChange="javascript:popolaElemento('selectComune', 'popola.php', 'get', 'id_prov='+this.value);">
<option value="">-----Tutte-----</option>
<?php
$strProvince=mysql_query("SELECT * FROM provincia");
// scrivo la select per intero
while ($result=mysql_fetch_array($strProvince)){ ?>
<option value="<?php echo $result[0] ?>"><?php echo $result[1] ?></option>
<?php } ?>
</select>
<!-- COMUNE --><BR>
<label for="comune" class="home">Comune:</label>
<span id="selectComune">
<select title="selezionare il comune di appartenenza" name="comune" id="comune" onChange="javascript:popolaElemento2('selectFrazione', 'popolafraz.php', 'get', 'id_comune='+this.value);">
<option value="">-----Tutte-----</option>
<?php
$strComuni="SELECT * FROM comuni";
$risultati2=mysql_query($strComuni, $connessione) OR DIE ("Impossibile eseguire la query");
while ($rs=mysql_fetch_array($risultati2)){ ?>
<option value="<?php echo $rs[0] ?>"><?php echo $rs[1] ?></option>
<?php } ?>
</select>
</span>
<!-- FRAZIONE --><BR>
<label for="frazione" class="home">Frazione:</label>
<span id="selectFrazione">
<select title="selezionare la Frazione di appartenenza" name="Frazione" id="Frazione">
<option value="">-----Tutti-----</option>
<?php
$strComuni="SELECT * FROM frazione";
$risultati2=mysql_query($strComuni, $connessione) OR DIE ("Impossibile eseguire la query");
while ($rs=mysql_fetch_array($risultati2)){ ?>
<option value="<?php echo $rs[0] ?>"><?php echo $rs[1] ?></option>
<?php } ?>
</select>
</span><?PHP $chiudi=mysql_close($connessione); ?>
</form>
</body>
</html>
[/php]popola.php
[php]
if (isset($_GET["id_prov"])){$strSQL="SELECT * FROM comune"; if (is_numeric($_GET["id_prov"]) AND $_GET["id_prov"]>0) $strSQL.=" WHERE id_prov=".$_GET["id_prov"]; $strSQL.=" ORDER BY comune"; // connessione al db $connessione=mysql_connect("localhost", "root", ""); $db=mysql_select_db("trinacria") OR DIE ("Impossibile connettersi al database"); $risultati=mysql_query($strSQL, $connessione) OR DIE ("Impossibile eseguire la query"); // scrivo la select per intero echo "<select title=\"selezionare il comune di appartenenza\" name=\"comune\" id=\"comune\"><option value=\"0\">-----Tutti-----</option>"; while ($rs=mysql_fetch_array($risultati)){ echo "<option value=\"".$rs["id_comune"]."\">".htmlentities($rs["comune"])."</option>"; } echo "</select>"; //$chiudi=mysql_close($connessione);
}
[/php]
popolafraz.php
[php]
if (isset($_GET["id_comune"])){$strSQL="SELECT * FROM frazione"; if (is_numeric($_GET["id_comune"]) AND $_GET["id_comune"]>0) $strSQL.=" WHERE id_comune=".$_GET["id_comune"]; $strSQL.=" ORDER BY frazione"; // connessione al db $connessione=mysql_connect("localhost", "root", ""); $db=mysql_select_db("trinacria") OR DIE ("Impossibile connettersi al database"); $risultati=mysql_query($strSQL, $connessione) OR DIE ("Impossibile eseguire la query"); // scrivo la select per intero echo "<select title=\"selezionare la frazione di appartenenza\" name=\"frazione\" id=\"frazione\"><option value=\"0\">-----Tutti-----</option>"; while ($rs=mysql_fetch_array($risultati)){ echo "<option value=\"".$rs["id_fraz"]."\">".htmlentities($rs["frazione"])."</option>"; } echo "</select>"; $chiudi=mysql_close($connessione);
}
[/php]
-
Ciao angelo85ct e benvenuto nel Forum GT.
Hai aperto lo stesso identico thread quì e, come da regolamento che hai accettato all'atto dell'iscrizione, questo non è consentito.
11. Crossposting
11.0. Non è consentito postare lo stesso messaggio o parti di esso in più aree del forum, salvo casi di particolare interesse che dovranno comunque essere autorizzati da un Admin.
11.1. Messaggi crossposting verranno eliminati e quando possibile riuniti.
Se ripetuti potranno portare all'allontanamento dell'utente. Chiudo questa discussione e ti invito a consultare il regolamento.