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
File option.class.php
File selection.php
File result.php
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?
Allego delle immagini per farvi capire...
Inizio:

Alla scelta della prima select:

Alla scelta della seconda select:

Questo è il codice:
index.php
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<br />");
//$("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<br />");
//$("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:<br>
<select id="sel_nazioni" name="sel_nazioni"><option value="no">Scegli...</option>
</select>-->
</div>
<div id="result">
prova1<br />
</div>
</body>
</html>
File option.class.php
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:<br>';
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:<br>';
//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:<br>';
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 '<br><br>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
PHP:
<?php
include_once 'option.class.php';
$obj = new Option();
$obj->ShowNazioni();
?>
File result.php
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?