paloji:
Lo básico, ya te lo indicó
_cronos.
firefox e internet explorer hacen exactamente lo mismo, solo procesan las variables que pasa el form (ademas de las que pasas por get en el method,, que por otra parte siempre van a estar vacías... vos usas POST)
Para que despues de procesar, se mantengan las opciones y no se restablezca, tenes que hacerlo como te lo señalo en el código más abajo, para generar el "selected=selected"...
El método onchange funciona cuando hay un "cambio(change)", para hacerl o correctamente tienes que incluir siempre un option "por defecto", con un value ="", también lo incluí en el código.
En cuanto a
Cita: Y no me digais que incluya el select dentro del <form> porque por diseño no puedo, son diferentes archivos que uno incluye al otro
no se entiende a que te referís con eso...
Si te quedan dudas, ejecuta mi script select.php y comprúebalo tu mismo,
$opt nunca se generará como variable
select.php
Código PHP:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Select fuera de form</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
echo "<form name='territory_form' method='POST' action='".$PHP_SELF."?var1=".$var1."&blabla=".$blabla."&opt=".$opt."'>\n";
?>
<select name='area' class='level0' onchange='document.territory_form.submit()'>
<option value="">Seleccione un país</option>
<option value="Spain" class='level1'<?php if($_POST['area'] == 'Spain'){echo 'selected=\"selected\"';}?> >Spain</option>
<option value="UK" class='level1'<?php if($_POST['area'] == 'UK'){echo 'selected=\"selected\"';} ?> >UK</option>
</select>
</form>
<select name='opt' class='level0' onchange='document.territory_form.submit()'>
<option value="">Seleccione una opción</option>
<option value="Opt1" class='level1'>Opt1</option>
<option value="Opt2" class='level1'>Opt2</option>
<option value="Opt3" class='level3'>Opt3</option>
</select>
<pre>
<?php
echo "\n<b>se envió por get _GET</b>\n\n";
foreach ($_GET as $indice=>$str) {
$$indice = $str ;
echo "$indice = $str \n";
}
echo "\n\n<b>se envió por _POST</b>\n\n";
foreach ($_POST as $indice=>$str) {
$$indice = $str ;
echo "$indice = $str \n";
}
?>
</pre>
<a href="select.php">Restablecer</a>
</body>
</html>
Saludos