Aggiornamento contenuto di un div dopo la creazione di una select dinamica

  • Creatore Discussione Creatore Discussione Shinnuz
  • Data di inizio Data di inizio

Shinnuz

Nuovo Utente
3 Feb 2010
1
0
0
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
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?
 

Discussioni simili