Sto cercando di creare una pagina dove alla selezione di una prima select ne compare una seconda (i cui valori, letti da un database, dipendono dalla scelta precedente) e alla scelta della seconda vengono mostrati i risultati in un div.
Allego delle immagini per farvi capire...
Inizio:

Alla scelta della prima select:

Alla scelta della seconda select:

Questo è il codice:
index.php
Codice PHP:
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#sel_continenti').change(function(){
var cont = $('#sel_continenti').attr('value');
$.post("selection.php", {id_cont:cont}, function(data){
$("#sel_nazioni").empty();
//$("div#result").empty();
$("div#nazioni").empty();
$("div#result").append("prova2
");
//$("div#result").append(document.createTextNode("prova"));
$("#sel_nazioni").prepend(data);
$("div#nazioni").prepend(data);
});
});
$('#sel_nazioni').change(function(){
var id_naz = $('#sel_nazioni').attr('value');
$.post("result.php", {id:id_naz}, function(data){
$("div#result").empty();
$("div#result").append("prova3
");
//$("div#result").prepend(data);
});
});
});
</script>
</head>
<body>
<div id="continenti">
<?php
include_once 'option.class.php';
$obj = new Option();
$obj->ShowContinenti();
?>
</div>
<div id="nazioni">
<!--Seleziona una nazione:
<select id="sel_nazioni" name="sel_nazioni"><option value="no">Scegli...</option>
</select>-->
</div>
<div id="result">
prova1
</div>
</body>
</html>
File option.class.php
Codice PHP:
<?php
class Option
{
public $conn;
public function __construct()
{
$this->DbConnectAndSelect();
}
protected function DbConnectAndSelect()
{
//include_once "db_config.php";
//$this->conn = mysql_connect($db_host,$username,$password);
$this->conn = pg_connect("host=**** port=**** user=**** password=**** dbname=****");
//mysql_select_db($db_name, $this->conn);
return TRUE;
}
public function ShowContinenti()
{
echo 'Seleziona un continente:
';
echo '<select id="sel_continenti" name="sel_continenti"><option value="no">Scegli...</option>';
$sql = "SELECT * FROM continenti";
//$res = mysql_query($sql,$this->conn);
$res = pg_query($this->conn,$sql);
while($row = pg_fetch_row($res))
{
echo '<option value="' . $row[0] . '">' . $row[1] . '</option>';
}
echo '</select>';
}
/*public function ShowNazioni()
{
if($_POST['id_cont'] == "no")
{
die;
}
//echo 'Seleziona una nazione:
';
//echo '<select id="sel_nazioni" name="sel_nazioni">';
$id_cont = $_POST['id_cont'];
$sql = "SELECT * FROM nazioni WHERE id_cont=$id_cont";
$res = pg_query($this->conn,$sql);
//echo'<option value="no">Scegli...</option>';
while($row = pg_fetch_row($res))
{
echo '<option value="' . $row[0] . '">' . $row[2] . '</option>';
}
//echo '</select>';
}*/
public function ShowNazioni()
{
if($_POST['id_cont'] == "no")
{
die;
}
echo 'Seleziona una nazione:
';
echo '<select id="sel_nazioni" name="sel_nazioni">';
$id_cont = $_POST['id_cont'];
$sql = "SELECT * FROM nazioni WHERE id_cont=$id_cont";
$res = pg_query($this->conn,$sql);
echo'<option value="no">Scegli...</option>';
while($row = pg_fetch_row($res)) {
echo '<option value="' . $row[0] . '">' . $row[2] . '</option>';
}
echo '</select>';
}
public function ShowResult()
{
echo "dentro shoresult()";
if($_POST['id'] == "no")
{
echo "post id=no";
die;
}
echo '
Hai scelto la nazione: ';
$id = $_POST['id'];
$sql = "SELECT * FROM nazioni WHERE id=$id";
$res = pg_query($this->conn,$sql);
$row = pg_fetch_row($res);
echo 'id: '.$row[0].' id_cont: '.$row[1].' nazione: '.$row[2];
}
}
?>
File selection.php
Codice PHP:
<?php
include_once 'option.class.php';
$obj = new Option();
$obj->ShowNazioni();
?>
File result.php
Codice PHP:
<?php
include_once 'option.class.php';
$obj = new Option();
$obj->ShowResult();
?>
Premetto che il database funziona (visto che le due select vanno), inoltre se guardate nel codice di index ho messo per semplificare che al cambiamento della seconda select nel div#result appaia scritto "prova3"... ma questo non succede! come mai?? dove sbaglio?