Grazie a un thread che ho trovato qui sono quasi riuscito a finire la pagina web che sto creando. Mi rimane solo un piccolo problema. In pratica ho 3 tendine che vengono create automaticamente e dinamicamente da un database, sullo stile Regione->Provincia->Comune.
Il problema è che esiste la possibilità che l'utente voglia inserire un campo che non è nel database, quindi ho aggiunto una voce "altro" alla tendina, che dovrebbe andare ad attivare un campo testo, altrimenti disabilitato.
Per la storia delle tendine dinamiche caricate da db ho usato questo codice, postato da mtx_maurizio e modificato per le mie esigenze.
Codice PHP:
<?php
session_start();
class OptionMenu
{
protected $conn;
protected $page;
public function __construct()
{
$this->page = basename($_SERVER['PHP_SELF']);
$this->DbConnectAndSelect();
$this->ParsingAction();
}
protected function DbConnectAndSelect()
{
include "db_config.php";
$this->conn = @mysql_connect($host,$username,$password) OR
die("Impossibile connettersi al server");
@mysql_select_db($db, $this->conn) OR
die("Impossibile selezionare il database");
}
public function JsHeader()
{
echo '<SCRIPT language=JavaScript>
<!--
function goSelect(daform)
{
with(daform)
{
top.window.location=options[selectedIndex].value;
}
}
/*
function AbilitaText(select,nomeCampo1,nomeCampo2,nomeCampo3)
{
var select1="SelectObj";
var select2="SelectMarca";
var select3="SelectModello";
var campo1=select.form.elements[nomeCampo1];
var campo2=select.form.elements[nomeCampo2];
var campo3=select.form.elements[nomeCampo3];
var selObject=select.form.elements[select1];
var selMark=select.form.elements[select2];
var selModel=select.form.elements[select3];
if(selObject.value==0)
{
campo1.disabled=false;
campo1.select();
campo1.focus();
campo2.disabled=false;
campo3.disabled=false;
}
else
if(selMark.value==0)
{
campo2.disabled=false;
campo2.select();
campo2.focus();
campo3.disabled=false;
else
}
if(selModel.value==0)
{
campo3.disabled=false;
campo3.select();
campo3.focus();
}
}
*/
//-->
</SCRIPT>
';
}
public function ShowOggetti()
{
if(isset($_SESSION['oggetto']))
{
$oggetto = $_SESSION['oggetto'];
}
else
{
$oggetto = "Seleziona un oggetto";
}
$sql = "SELECT id_oggetto, nome_oggetto FROM oggetti";
$res = mysql_query($sql, $this->conn);
echo "<form><select name='SelectObj' onchange='goSelect(this)' size='1'><option>".$oggetto."</option>";
while($row = mysql_fetch_array($res))
{
if($row['nome_oggetto'] != $oggetto)
{
echo '<option value="' . $this->page . '?id_ogg=' . $row['id_oggetto'] . '&action=marca&oggetto=' . $row['nome_oggetto'] . '">' . $row['nome_oggetto'] . '</option>
';
}
}
echo '<option value=0>Altro</option>';
echo '</select>';
echo '<input type="text" name="oggetti" disabled>';
echo '</form>';
}
public function ShowMarche()
{
if(isset($_SESSION['marca']))
{
$marca = $_SESSION['marca'];
}
else
{
$marca = 'Seleziona una marca';
}
echo "<form><select name='SelectMarca' onchange='goSelect(this)' size='1'><option>".$marca."</option>
";
if($oggetto = $this->SelectMarca())
{
$sql = "SELECT id_marca,nome_marca FROM marche WHERE cod_ogg='$oggetto'";
$res = mysql_query($sql, $this->conn);
while($row = mysql_fetch_array($res))
{
if($row['nome_marca'] != $marca)
{
echo '<option value="' . $this->page . '?id_mark=' . $row['id_marca'] . '&action=modello&marca=' . $row['nome_marca'] . '">' . $row['nome_marca'] . '</option>
';
}
}
}
echo '<option value=0>Altro</option>';
echo '</select>';
echo '<input type="text" name="marche" disabled>';
echo '</form>';
}
public function ShowModelli()
{
if(isset($_SESSION['modello']))
{
$modello = $_SESSION['modello'];
}
else
{
$modello = 'Seleziona un modello';
}
echo "<form><select name='SelectModello' onchange='goSelect(this)' size='1'><option>".$modello."</option>";
if($_GET['id_mark'])
{
$sql = "SELECT id_modello,nome_modello FROM modelli WHERE cod_mark=$_GET[id_mark]";
$res = mysql_query($sql, $this->conn);
while($row = mysql_fetch_array($res))
{
echo '<option value="' . $this->page . '?id_model=' . $row['id_modello'] . '&action=end&modello=' . $row['nome_modello'] . '">' . $row['nome_modello'] . '</option>
';
}
}
echo '<option value=0>Altro</option>';
echo '</select>';
echo '<input type="text" name="modelli" disabled>';
echo '</form>';
}
protected function SelectMarca()
{
if(!$_GET[id_ogg] AND !$_SESSION[oggetto])
{
return FALSE;
}
else
{
if($_GET['id_ogg'])
{
return $_GET['id_ogg'];
}
else
{
$sql = "SELECT id_oggetto FROM oggetti WHERE oggetto='$_SESSION[oggetto]'";
$res = mysql_query($sql, $this->conn);
$row = mysql_fetch_array($res);
return $row['id_oggetto'];
}
}
}
protected function ParsingAction()
{
if(isset($_GET['action']))
{
if($_GET['action'] == 'marca')
{
$_SESSION['oggetto'] = $_GET['oggetto'];
unset($_SESSION['marca']);
unset($_SESSION['modello']);
}
if($_GET['action'] == 'modello')
{
$_SESSION['marca'] = $_GET['marca'];
unset($_SESSION['modello']);
}
if($_GET['action'] == 'end')
{
$_SESSION['modello'] = $_GET['modello'];
header("Location: form.php");
die;
}
}
}
}
?>
Come vedete ho aggiunto la funzione "abilitaText", ma non funziona affatto. Ho fatto numerose prove e ho avuto sempre errori diversi, questa versione della pagina dovrebbe mandare in pratica a un altra pagina che non esiste quando si clicca su altro, perchè lo script per gestire le tendine è fatto in un determinato modo e non so come modificarlo per adattarlo alle mie esigenze....
Comunque la pagina da cui includo questa classe in pratica è quella che c'è nel thread originale:
http://forum.html.it/forum/showthrea...=men%F9+option