salve a tutti, il mio problema è che non riesco ad usare i dati di un opzione della <select> restituiti da una query eseguita con un programma PHP in base ai dati inseriti nel form (nel caso specifico il campo si chiama "num_impegno").Immaginate un esempio del tipo "inserisco la regione e restituisco le province per la regione selezionata".
Dal codice sorgente della pagina, dopo avere eseguito la query, non viene generato il codice HTML con la select aggiornata dei dati restituiti, e infatti dalla console degli errori FF ritorna che il campo è NULL.
il programma PHP viene eseguito in un iframe presente nella pagina dove c'è il form.
La strategia adottata è quella di sostituire l'intero codice HTML della <select> nel form con quella aggiornata.
Riporto il codice:
[pagina con il form]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<script type="text/javascript" src="/javascript/utility.js">
</script>
<script type="text/javascript">
var data=new Array(3);
function check_data(id_data)
{
d=document.getElementById(id_data);
//alert(d.id);
switch (d.id)
{
case "gg_comm":
data[0]=d.value;
if(parseInt(data[0])<1||parseInt(data[0])>31)
{alert ("il valore inserito non puo' essere ammesso per il \"giorno\"");
d.value=data[0].substring(0,0);}
//alert();
break;
case "mm_comm":
data[1]=d.value;
if (((data[1]=="4"||data[1]=="6"||data[1]=="9"||data[1]=="11")&& parseInt(data[0])>30)||
((data[1]=="2")&& parseInt(data[0])>28))
{
alert("inserire un valore valido per il mese");
d.value="0";
}
alert(data[0]+" / "+data[1]);
break;
}
}
function inserisciPreventivo()
{
elem=document.getElementById("carica");
imp=document.getElementById("num_impegno").value;
az=document.getElementById("mezzi_impegno").option s[document.getElementById('mezzi_impegni').selectedI ndex].value;
comm=document.getElementById("commessa").value;
g_com=document.getElementById("gg_comm").value;
m_comm=document.getElementById("mm_comm").value;
a_comm=document.getElementById("aaaa_impegno").val ue;
sede=document.getElementById("sede").value;
importo=document.getElementById("importo_prev").va lue;
ins=true;
url="inserisci_prev.php?id="+elem.id;
window.open(url,"_blank");
//document.forms[0].submit();
}
</script>
</head>
<body>
<form name="inserimento" method="GET" action="" target="">
<table border="1" width="70%" align="center">
<tr>
<td width="33%" height=35 bgcolor="#F0F8FF" align="right">Impegno</td>
<td width="33%"align="left">
<input type="text" tabindex="1" name="num_impegno" id="num_impegno" size="4" value="" onblur="verifica(this.id);">
</td>
<td width="33%" height=35 align="center" valign="middle" border=0 rowspan="100%">
<input type="button" name="invia" id="carica" VALUE="Carica Preventivo" onclick="inserisciPreventivo();">
<input type="button" size="100"name="invia2" VALUE="Chiudi" onclick="chiudi();">
</td>
</tr>
<tr>
<td width="33%" height=35 bgcolor="#F0F8FF" align="right">Mezzo</td>
<td width="33%"align="left">
<div id="mezzo_associato">
<select name="mezzi_impegno" id="mezzi_impegno" tabindex="2">
<option></option>
</select>
</div>
</table>
<iframe id="dati_nascosti" name="dati_nascosti" height="0" width="0" src="about:blank" frameborder="0">
</iframe>
</form>
</body>
</html>
[funzioni javascript richiamate in utility.js]
function verifica(id_chiamante)
{
var elem=document.getElementById(id_chiamante);
var elemVal=elem.value;
url="verifica_dati.php?valore="+elemVal+"&id="+ele m.id;
window.open(url,"dati_nascosti");
//return true;
}
[programma PHP che esegue la query]
<?php
$value=$_REQUEST['valore'];
$id=$_REQUEST['id'];
$connect=mysql_connect($host, $login, $password) or die("Accesso Negato!");
$str="<select name=\"mezzi_impegno\">";
$db=mysql_select_db($db_name,$connect);
$sql="SELECT az_impegno FROM impegno_mezzi WHERE num_impegno=".$value;
$result=mysql_query($sql);
//echo "<script> alert('".mysql_num_rows($result)."');</script>";
if (!$result)
{echo "<script> alert('Il valore inserito non e\' valido!');</script>";}
if (mysql_num_rows($result)=="0")
{echo "<script> alert('Nessun mezzo e\' associato al contratto');</script>";}
{
if(mysql_num_rows($result)>0)
{
$i=0;
while ($row=mysql_fetch_assoc($result))
{
$mezzo=$row['az_impegno'];
$str.= "<option value=\"".$mezzo."\">".$mezzo."</option>";
$i++;
}
}
}
$str.="</select>";
mysql_close($connect);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250" />
<script type="text/javascript">
window.onload=function()
{
var datiAggiornati=document.getElementById("risultato" );
var tag_rit=parent.document.getElementById("mezzo_asso ciato");
tag_rit.innerHTML=datiAggiornati.innerHTML;
};
</script>
</head>
<body>
<div id="risultato"><?php echo $str; ?></div>
</body>
</html>