Hola a todos,
Estoy tratando de ejecutar (a modo de aprendizaje) el código que encontré en un artículo disponible en la web de “driverop” y que utiliza PHP y JavaSript para obtener valores de una lista dependiente y enviarlos a un archivo PHP que se despliega como resultado de la operación. Funciona todo bien… excepto al momento de obtener la respuesta final porque
no consigo pasar los valores del SELECT al archivo “recibe.php”. Si alguien me puede ayudar dándome una pista acerca del código que debe tener el Script en “recibe.php” (en el artículo no aparece) se lo agradecería mucho... y una idea para hacer que la selección en el segundo SELECT fuera múltiple? Lo agradecería más.
Gracias!
A continuación el código y los archivos requeridos:
select2.txt
Código JavaScript
:
Ver originalAR=BA:Buenos Aires*CB:Córdoba*ER:Entre Ríos
MX=DF:Distrito Federal*MI:Michoacán*MY:Monterrey
CO=DC:Distrito Capital*AT:Atlántico*AN:Antioquía
recibe.php
Código JavaScript
:
Ver originalAquí no se que debo poner... ayuda por favor!
test_select.php
<!-- Código propuesto por Diego Romero -->
<!-- sitio "driverop" en programas / php del índice -->
<--! Disculpen, pero no puedo poner la dirección completa... "motivos anti-spam"-->
<!-- Está línea de código no la pude subir, pero ahí indico dónde debía ir -->
<!-- $sel1 = (aquí va el signo arroba)$_POST['selector1']; -->
Código JavaScript
:
Ver original<?php
//función que extrae datos desde el archivo de texto
// “select2.txt” y llena el SELECT dependiente según
// la elección hecha en el primer SELECT
function GetContentSel2($sel) {
$result = "";
$found = FALSE;
// se abre ell archivo de texto
$fh = fopen("select2.txt","r");
do {
$aux = trim(fgets($fh));
$aux = explode("=",$aux);
if ($aux[0] == $sel) {
$found = TRUE;
$result = $aux[1];
}
} while (($found == FALSE) and (!feof($fh)));
fclose($fh);
return $result;
}
// Aquí se utiliza lo devuelto por la función “GetContentSel2”
// y se pasa a la variable “$contentsel2” para rellenar el SELECT
// dependiente con estos valores
$fillsel2 = FALSE;
$sel1 = "";
$request_method = $_SERVER["REQUEST_METHOD"];
if ($request_method == "POST") {
// Aquí la una línea de código que no puedo subir por motivos anti-spam (mensaje de error)
if (!empty($sel1) and ($sel1 != "null")) {
$contentsel2 = GetContentSel2($sel1);
if (!empty($contentsel2)) { $fillsel2 = TRUE; }
}
} // if reqmet
?>
<html>
<head>
<title>Ejemplo de select dependientes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script language="JavaScript" type="text/JavaScript">
function Seleccionar() {
var a = document.form1.selector1.value;
if (a != "null") {
document.form1.action="";
document.form1.submit();
}
else { alert("Seleccione un valor."); }
}
</script>
<body>
// Se hace referencia al archivo "recibe.php"
<form name="form1" method="post" action="recibe.php">
// Primer SELECT
<select name="selector1" id="selector1" onChange="javascript:Seleccionar();">
<option value="null"<?php if (empty($sel1)) { echo " selected"; }
?>>Seleccione un valor</option>
<option value="AR"<?php if ($sel1 == "AR") { echo " selected"; }
?>>Argentina</option>
<option value="MX"<?php if ($sel1 == "MX") { echo " selected"; }
?>>México</option>
<option value="CO"<?php if ($sel1 == "CO") { echo " selected"; }
?>>Colombia</option>
</select>
// SELECT dependiente
<select name="selector2" id="selector2">
<?php
// se obtienen valores del archivo de texto para rellenar el SELECT dependiente
if ($fillsel2) {
$contentsel2 = explode("*",$contentsel2);
foreach($contentsel2 as $key => $value) {
$item = explode(":",$value);
echo '<option value="'.$item[0].'">'.$item[1].'</option>'."\n";
} // foreach
} // if
else {
?>
<option value="null" selected>(Vacío)</option>
<?php } ?>
</select>
// se envían los valores al archivo "recibe.php" a partir de la selección
// hecha en el SELECT dependiente... Funciona en la página de ejemplo,
// pero en la mía.. Nada!
<input type="submit" name="Submit" value="Enviar">
</form>
</body>
</html>