io avevo lo stesso problema con l'evento OnChange di alcune select dinamiche, che poi ho risolto con una serie di ISSET, vedi se ti può andare bene come spunto:
Codice PHP:
<?php
$max = isset($_POST["max"])?$_POST["max"]:1;
echo "<input type=\"hidden\" name=\"max\" value=\"$max\">\n";
for ($i = 1; $i <= $max; $i++)
{
echo "
<tr>
<td>Categoria Ordine:</td>
<td></td>";
$servizi = "select * from `servizi`";
$lista_servizi = mysql_query($servizi) or die ("non eseguo la query servizi");
echo "<td><select name=\"servizio[$i]\" OnChange=\"document.forms[0].submit()\">\n";
echo "<option value=\"0\">- Tipo servizio -</option>\n";
while ($ser = mysql_fetch_array($lista_servizi,MYSQL_ASSOC))
{
echo "<option value=\"".$ser["id_serv"]."\"";
if (isset($_POST["servizio"][$i]) and $_POST["servizio"][$i] ==
$ser["id_serv"])
{
echo " selected";
}
echo ">".$ser["descrizione"]."</option>\n";
}
echo "</select></td></tr> <tr><td>Tipologia ordine:</td><td></td>";
if (isset ($_POST["servizio"][$i]))
{
$cat_servizi = "select * from `categoria_servizi` where `id_rif_servizi` = '".$_POST["servizio"][$i]."'";
$lista_cat_servizi = mysql_query($cat_servizi) or die ("non eseguo la query account");
echo "<td><select name=\"cat_servizio[$i]\">";
while ($cat_serv = mysql_fetch_array($lista_cat_servizi,MYSQL_ASSOC))
{
echo "<option value=\"".$cat_serv["id_cat_serv"]."\"";
if (isset($_POST["cat_servizio"][$i]) and $_POST["cat_servizio"][$i] ==
$cat_serv["id_cat_serv"])
{
echo " selected";
}
echo">".$cat_serv["descrizione"]."</option>\n";
}
}
else
{
}
echo "</select></td></tr><tr><td>Quantità:</td><td></td><td><input name=\"quantita[$i]\" type=\"text\" id=\"quantita\"
value=\"".(isset($_POST["quantita"][$i])?$_POST["quantita"][$i]:"")."\" size=\"8\" maxlenght=\"10\"></td></tr>
<tr><td>Descrizione articolo:</td><td></td><td><textarea name=\"descr_articolo[$i]\" cols=\"30\" rows=\"8\" wrap=\"virtual\" id=\"descr_articolo[$i]\">".(isset($_POST["descr_articolo"][$i])?$_POST["descr_articolo"][$i]:"")."</textarea></td></tr>";
}
?>
<tr><td>Altri articoli</td>
<td></td>
<td><input type="submit" name="aggiungi" value="Aggiungi articolo" onclick="max.value++" />
<input type="submit" name="rimuovi" value="Rimuovi articolo" OnClick="max.value--" /></td></tr>