Problemas con un combo mientras programo el código de una página en lenguaje PHP

Saludos.
Recuerdas el código de la página que te había mostrado que era todo largo, ahora tengo un combo de Zonas, En la tabla traigo el valor del área que tiene dicho afiliado, si escogo otra zona y hago una consulta vuelve y me deja el combo con el valor de la consulta.
Este código me lo facilitaste:
<?php
$postZona = $_POST['cbZona'];
?>
<td> <select name="cbZona" size="1" id="cbZona">
<option value="U" <?php if ($postZona=="U") echo ' selected'; ?> >Urbana</option>
<option value="R" <?php if ($postZona=="R") echo ' selected'; ?> >Rural</option>
</select></td>
</tr>
Pero me he vuelto loco con ese valor que traigo de la tabla que es constante y no se como lograr si cambia la zona no vuelva a mostrar el valor que trajo de la tabla.
Agradezco la ayuda que me puedas brindar.

1 respuesta

Respuesta
1
No entiendo a qué valor de la tabla te refieres.
Tu rellenas un formulario y elijes una zona, al enviar los datos se presenta de nuevo el formulario pero en la zona tiene que aparecer la que antes habías seleccionado.
Explícame a qué valor de la tabla te refieres, y qué pretendes hacer.
Saludos.
En el formulario tengo los mismos 20 campos incluyendo 3 combos uno de ellos es la zona; en el text escribo el número de cédula y Enter si existe entonces debe seleccionar el valor del combo de acuerdo a lo que arroja la consulta, listo eso lo hago; tengo otros text que son diagnostico, diagnostico2; si escojo otra zona y escribo otro diagnostico y le doy Enter busca el nombre del diagnostico y me vuelve a quedar el valor de la consulta y no la zona que escogí antes de hacer otra consulta.
Espero haberme explicado mejor.
Esto me tiene como loco.
Primero se ejecuta el formulario en blanco y lo rellenas, al enviarlo se rellenan todos los campos inluido el de la zona. Hasta ahí igual que siempre.
Luego cambias la zona por ejemplo está en Urbana y la pones en Rural. Rellenas también el campo diagnostico. Envías el formulario. Ahora se realiza una consulta sobre la base de datos para rellenar los campos y al llegar a zona se ve que el ultimo valor del campo zona es Rural y pone esa opción como seleccionada.
Entiendo que lo que tu quieres es que en vez de poner zona Rural te ponga zona Urbana como estaba antes. Habría que usar alguna variable para indicarlo, posiblemente una variable de sesión.
Al principio de tu código tendrías que poner:
<?php
session_start()
if ($_SESSION['zonaAntigua'] == '') {
if (isset($_POST['cbZona'])) {
$_SESSION['zonaAntigua'] = $_POST['cbZona'];
}
}
$postZona = $_SESSION['zonaAntigua'];
?>
Y en el código que me pusiste un poco más arriba tienes que quitar las siguiente líneas:
<?php
$postZona = $_POST['cbZona'];
?>
De todas formas no tengo del todo claro si es esto lo que necesitas. Si no es lo que quieres me lo aclaras. Quizá no estoy muy inspirado últimamente que tengo muy poco tiempo para todoexpertos.
Saludos.
Mira la cuestión es la siguiente:
Si dígito el documento correcto de un afiliado me trae los datos el afiliado entr ellos: la zona, el departamento; si el documento 1 es Zona Rural debe seleccionar del combo y el departamento es el 50, pero resulta que no es de Zona Rural sino Urbana y del departamento 50; el usuario haría lo siguiente primero escogería la zona Urbana y digitaria el depto 50 y hace la consulta del depto pero me devuelve la zona a Rural, cuando había seleccionado Urbana.
Espero haberte aclarado un poco mejor mi caso.
El problema puede estar en donde obtienes los datos, siempre obtienes los datos de la base de datos independientemente de lo que haya seleccionado el usuario. Tendrías que guardar el valor seleccionado en el combo y mostrarlo de nuevo tras hacer la consulta.
Pero eso mismo es lo que haces con la variable $postZona. Por tanto debe tener algo en alguna parte del código que modifica esa variable y le asigna el valor de la consulta y no el que ya tenga seleccionado. Puedes revisar el código buscando esa variable y los lugares en donde se modifica. Si no lo encuentras envíamelo para que lo revise.
Saludos, después de mirar y mirar no he podido lograrlo; aquí te envío el código si puedes hacerme el favor de revisarlo y decirme en donde esta mal.
<?php
// include "racceso.php";
session_start();
if ($_SESSION['zonaAntigua'] == '') {
if (isset($_POST['cbZona']))
{
$_SESSION['zonaAntigua'] = $_POST['cbZona'];
}
}
$postZona = $_SESSION['zonaAntigua']; ?>
<html>
<head>
<title>Modificar Particular</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function isValidDate() {
// Checkea si la fecha es valida de acuerdo al formato:
// MM/DD/YY
// se utilizan variables separadas para el mes,dia y año
//var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
// Para el año se requiere 4 digitos, Usar la siguiente linea:
dateStr = document.forms.form1.txtFechaNac.value;
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
var matchArray = dateStr.match(datePat); // Es este el formato OK?
if (dateStr==""){
return true
}
if (matchArray == null) {
alert("El formato de la Fecha debe ser mm/dd/aaaa")
document.forms.form1.txtFechaNac.focus();
return false;
}
month = matchArray[1]; // parse date into variables
day = matchArray[3];
year = matchArray[4];
if (month < 1 || month > 12) { // check month range
alert("El mes debe estar entre 1 y 12.");
return false;
}
if (day < 1 || day > 31) {
alert("Día debe estar entre 1 y 31.");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Este mes no tiene 31 días!")
return false
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("Febrero " + year + " no tiene " + day + " dias!");
return false;
}
}
/*if (year < 2002) {
alert("El año debe ser mayor o igual a 2002")
return false
}*/
var daynew = new Date();
return true;
}
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers.document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>
</head>
<body>
<form name="form1" method="post" action="">
<table width="20%" border="1" align="center">
<tr>
<td><table width="5%" border="0" align="center" cellspacing="0">
<tr>
<td colspan="4"><div align="center"><font color="#006666" size="5" face="Verdana, Arial, Helvetica, sans-serif">Modificar
Particular</font></div></td>
</tr>
<tr>
<td><div align="right">No Identificación</div></td>
<td>
<input name="NoIdent" type="text" id="NoIdent"
onKeyPress="if(event.keyCode==13){submit();} if(event.keyCode>=48 && event.keyCode<=57){} else{event.keyCode=8;}" value="<?php echo $_REQUEST['NoIdent']; ?>" size="10" maxlength="10">
<?php include "ValidaParticular.php";
if(isset($_REQUEST['NoIdent']))
{
$arr[0] = $_REQUEST['txtPriApel'];
$arr[1] = $_REQUEST['txtSegApel'];
$arr[2] = $_REQUEST['txtPriNombre'];
$arr[3] = $_REQUEST['txtSegNomb'];
$arr[4] = $_REQUEST['txtFechaNac'];
echo $_REQUEST['cbZona'];
$VP_FacturaPart = ValidaFacturaPart($_REQUEST['NoIdent']);
if($VP_FacturaPart[0]!="")
{
$VL_TipIdent = $VP_FacturaPart[0];
if($_REQUEST['txtPriApel']=='')
{$VL_PriApel = $VP_FacturaPart[1];}
else
{$VL_PriApel = $arr[0];}
if($_REQUEST['txtSegApel']=='')
{$VL_SegApel = $VP_FacturaPart[2];}
else
{$VL_SegApel = $arr[1];}
if($_REQUEST['txtPriNombre']=='')
{$VL_PriNomb = $VP_FacturaPart[3];}
else
{$VL_PriNomb = $arr[2];}
if($_REQUEST['txtSegNomb']=='')
{$VL_SegNomb = $VP_FacturaPart[4];}
else
{$VL_SegNomb = $arr[3];}
if($_REQUEST['txtCodDepto']=='')
{
$_REQUEST['txtCodDepto'] = $VP_FacturaPart[7];
}
if($_REQUEST['txtCodMun']=='')
{
$_REQUEST['txtCodMun'] = $VP_FacturaPart[8];
}
if($_REQUEST['txtFechaNac']=='')
{$VL_FechaNac = $VP_FacturaPart[12];}
else
{$VL_FechaNac = $arr[4];}
$VL_Sexo = $VP_FacturaPart[6];
// $VL_Zona = $VP_FacturaPart[9];
$campoFocus = "NoIdent";
echo "<script>";
echo "document.forms.form1.NoIdent.disabled=true;";
echo "</script>";
}
else
{
echo "<script>";
echo "alert('El Número de documento no existe');";
echo "</script>";
$campoFocus = "NoIdent";
}
}
?>
</td>
<td><div align="right">Tipo Identificación</div></td>
<?php
echo "variable=".$VL_TipIdent;
echo "post=".$_POST['cbTipIdent'];
if($_POST['cbTipIdent']!='')
{
$postTipIdent = $VL_TipIdent;
}
else
{
$postTipIdent = $_POST['cbTipIdent'];
}
/* $postTipIdent = $VL_TipIdent;
if($_POST['cbTipIdent']!=$VL_TipIdent)
{
$postTipIdent = $_POST['cbTipIdent'];
}*/
?>
<td><select onChange="document.forms.form1.txtPriApel.focus();" name="cbTipIdent" size="1" id="cbTipIdent">
<option value="CC" <?php if ($postTipIdent=="CC") echo ' selected'; ?> >Cédula
Ciudadanía</option>
<option value="CE" <?php if ($postTipIdent=="CE") echo ' selected'; ?> >Cédula
de Extranjeria</option>
<option value="PA" <?php if ($postTipIdent=="PA") echo ' selected'; ?> >Pasaporte</option>
<option value="RC" <?php if ($postTipIdent=="RC") echo ' selected'; ?> >Registro
Civil</option>
<option value="TI" <?php if ($postTipIdent=="TI") echo ' selected'; ?> >Tarjeta
de Identidad</option>
<option value="AS" <?php if ($postTipIdent=="AS") echo ' selected'; ?> >Adulto
sin Identificación</option>
<option value="MS" <?php if ($postTipIdent=="MS") echo ' selected'; ?> >Menor
sin Identificación</option>
<option value="NU" <?php if ($postTipIdent=="NU") echo ' selected'; ?> >No.
Único Identificación</option>
</select></td>
</tr>
<tr>
<td><div align="right">Primer Apellido</div></td>
<td><input name="txtPriApel" type="text" id="txtPriApel" onKeyPress="if(event.keyCode==13 && document.forms.form1.txtPriApel.value!=''){document.forms.form1.txtSegApel.focus();}" value="<?php echo $VL_PriApel; ?>" size="20" maxlength="20"></td>
<td><div align="right">Segundo Apellido</div></td>
<td><input name="txtSegApel" type="text" id="txtSegApel" onKeyPress="if(event.keyCode==13){document.forms.form1.txtPriNombre.focus();}" value="<?php echo $VL_SegApel; ?>" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="right">Primer Nombre</div></td>
<td><input name="txtPriNombre" type="text" id="txtPriNombre" onKeyPress="if(event.keyCode==13 && document.forms.form1.txtPriNombre.value!=''){document.forms.form1.txtSegNomb.focus();}" value="<?php echo $VL_PriNomb; ?>" size="20" maxlength="20"></td>
<td><div align="right">Segundo Nombre</div></td>
<td><input name="txtSegNomb" type="text" id="txtSegNomb" value="<?php echo $VL_SegNomb; ?>" onKeyPress="if(event.keyCode==13){document.forms.form1.txtCodDepto.focus();}" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="right">Código Departamento</div></td>
<td><input name="txtCodDepto" type="text" id="txtCodDepto" onKeyPress="if(event.keyCode==13){ document.forms.form1.NoIdent.disabled=false;submit();} if(event.keyCode>=48 && event.keyCode<=57){} else{event.keyCode=8;}" value="<?php echo $_REQUEST['txtCodDepto']; ?>" size="2" maxlength="2">
<?php
if(isset($_REQUEST['txtCodDepto']) and $_REQUEST['txtCodDepto'])
{
include "conexion.php";
if(mssql_select_db ("ArsMigra", $conexion))
{
$consul = mssql_query("select DepNombre from Departamentos where DepCodigo="
.$_REQUEST['txtCodDepto'],$conexion);
if(mssql_num_rows($consul)>0)
{
$reg = mssql_fetch_object($consul);
$VL_NombDepto = $reg->DepNombre;
$campoFocus = "txtCodMun";
}
else
{
echo "<script>";
echo "alert('No se encontro un Departamento asociado a este Código');";
echo "</script>";
$campoFocus = "txtCodDepto";
}
echo "<script>";
echo "document.forms.form1.NoIdent.disabled=true;";
echo "</script>";
}
mssql_close();
}
?>
</td>
<td><div align="right">Nombre Departamento</div></td>
<td><input name="txtNombDepto" type="text" id="txtNombDepto" value="<?php echo $VL_NombDepto; ?>" size="25" maxlength="25" readonly></td>
</tr>
<tr>
<td><div align="right">Código Municipio</div></td>
<td><input name="txtCodMun" type="text" id="txtCodMun" onKeyPress="if(event.keyCode==13){document.forms.form1.NoIdent.disabled=false;submit();} if(event.keyCode>=48 && event.keyCode<=57){} else{event.keyCode=8;}" value="<?php echo $_REQUEST['txtCodMun']; ?>" size="3" maxlength="3"></td>
<?php
if(isset($_REQUEST['txtCodMun']) and ($VL_NombDepto!="") and $_REQUEST['txtCodMun'])
{
include "conexion.php";
if(mssql_select_db ("ArsMigra", $conexion))
{
$consul = mssql_query("select MunNombre from Municipios where MunCodigo="
.$_REQUEST['txtCodMun']." and MunDpto=".
$_REQUEST['txtCodDepto'],$conexion);
if(mssql_num_rows($consul)>0)
{
$reg = mssql_fetch_object($consul);
$VL_NombMun = $reg->MunNombre;
$campoFocus="cbZona";
}
else
{
echo "<script>";
echo "alert('No se encontro un Municipio asociado al Departamento');";
echo "</script>";
$campoFocus = "txtCodMun";
}
echo "<script>";
echo "document.forms.form1.NoIdent.disabled=true;";
echo "</script>";
}
mssql_close();
}
?>
<td><div align="right">Nombre Municipio</div></td>
<td><input name="txtNombMun" type="text" id="txtNombMun" value="<?php echo $VL_NombMun; ?>" size="20" maxlength="20" readonly></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><div align="right">Zona</div></td>
<td> <select name="cbZona" size="1" id="cbZona">
<option value="U" <?php if ($postZona=="U" && $VL_Zona=="U") echo ' selected'; ?> >Urbana</option>
<option value="R" <?php if ($postZona=="R" && $VL_Zona=="R") echo ' selected'; ?> >Rural</option>
</select></td>
</tr>
<tr>
<td><div align="right">Sexo</div></td>
<?php
if($_POST['cbSexo']!='')
{
$postSexo = $VL_Sexo;
}
else
{
$postSexo = $_POST['cbSexo'];
}
?>
<td><select onChange="document.forms.form1.txtFechaNac.focus();" name="cbSexo" size="1" id="cbSexo">
<option value="M" <?php if ($postSexo=="M") echo ' selected'; ?> >Masculino</option>
<option value="F" <?php if ($postSexo=="F") echo ' selected'; ?> >Femenino</option>
</select></td>
<td><div align="right">Fecha Nacimiento</div></td>
<td><input name="txtFechaNac" type="text" id="txtFechaNac"
onKeyPress="if(event.keyCode==13){if(isValidDate()==false){document.forms.form1.txtFechaNac.focus();}} if(event.keyCode>=47 && event.keyCode<=57){} else{event.keyCode=8;} if(document.forms.form1.txtFechaNac.value==''){document.forms.form1.txtFechaNac.focus();}" value="<?php echo $VL_FechaNac; ?>" size="10" maxlength="10">
<font color="#009900" size="2" face="Verdana, Arial, Helvetica, sans-serif">(mm/dd/yyyy)</font></td>
</tr>
</table></td>
</tr>
</table>
<table width="20%" align="center">
<tr>
<td><div align="center">
<input type="hidden" name="hiddenField">
<input name="btnGuardar" type="button" id="btnGuardar" value="Guardar" onMouseMove="if(form1.txtPriApel.value==''){this.disabled=true;}"
onFocus="if(form1.txtPriApel.value==''){this.disabled=true;}" onClick="MM_validateForm('NoIdent','','RisNum','txtPriApel','','R','txtCodDepto','','RisNum','txtNombDepto','','R','txtCodMun','','RisNum','txtNombMun','','R','txtFechaNac','','R');if(document.MM_returnValue==true){enviar(); '&<?php if($_REQUEST['NoIdent']){$VL_Modif='A';}?>&';};return document.MM_returnValue">
</div></td>
<td><div align="center">
<input name="btnLimpiar" type="button" id="btnLimpiar2" onClick="limpiar();" value="Limpiar">
</div></td>
</tr>
</table>
<p>
<script language="JavaScript">
function limpiar()
{
document.forms.form1.NoIdent.value=""
document.forms.form1.txtPriApel.value=""
document.forms.form1.txtSegApel.value=""
document.forms.form1.txtPriNombre.value=""
document.forms.form1.txtSegNomb.value=""
document.forms.form1.txtFechaNac.value=""
document.forms.form1.cbSexo.value=""
document.forms.form1.cbZona.value=""
document.forms.form1.txtCodDepto.value=""
document.forms.form1.txtCodMun.value=""
document.forms.form1.txtNombDepto.value=""
document.forms.form1.txtNombMun.value=""
document.forms.form1.cbTipIdent.value=""
document.forms.form1.NoIdent.disabled=false
document.forms.form1.NoIdent.focus()
}
</script>
</p>
</form>
<?php
include "conexion.php";
if(mssql_select_db ("ArsMigra", $conexion))
{
if($_REQUEST['NoIdent'] and $_REQUEST['txtCodDepto'] and $_REQUEST['txtCodMun'] and
$_REQUEST['txtPriApel'] and $_REQUEST['txtPriNombre'] and $_REQUEST['txtFechaNac']
and $_REQUEST['txtNombDepto'] and $_REQUEST['txtNombMun'] and $_REQUEST['Oculto'] =='A' and
$VL_Modif=='A')
{
$Modif = mssql_query("update ParticularRipsIps set PartNumIdenti='".
$_REQUEST['NoIdent']."',PartTipoIdenti='".
$_REQUEST['cbTipIdent']."',PartPriApellido='".
$_REQUEST['txtPriApel']."',PartSegApellido='".
$_REQUEST['txtSegApel']."',PartPriNombre='".
$_REQUEST['txtPriNombre']."',PartSegNombre='".
$_REQUEST['txtSegNomb']."',PartFechaNaci='".
$_REQUEST['txtFechaNac']."',PartSexo='".
$_REQUEST['cbSexo']."',PartZona='".
$_REQUEST['cbZona']."',PartCodigoDepto=".
$_REQUEST['txtCodDepto'].",PartCodigoMuni=".
$_REQUEST['txtCodMun']." where PartNumIdenti='".
$_REQUEST['NoIdent']."'",$conexion);
if($Modif)
{
echo "<script>";
echo "alert('Se Modificaron exitosamente los datos del Particular');";
echo "document.forms.form1.NoIdent.value='';
document.forms.form1.txtPriApel.value='';
document.forms.form1.txtSegApel.value='';
document.forms.form1.txtPriNombre.value='';
document.forms.form1.txtSegNomb.value='';
document.forms.form1.txtFechaNac.value='';
document.forms.form1.cbSexo.value='';
document.forms.form1.cbZona.value='';
document.forms.form1.txtCodDepto.value='';
document.forms.form1.txtCodMun.value='';
document.forms.form1.txtNombDepto.value='';
document.forms.form1.txtNombMun.value='';
document.forms.form1.cbTipIdent.value='';";
echo "document.forms.form1.NoIdent.disabled=false;";
echo "document.forms.form1.NoIdent.focus();";
echo "</script>";
$campoFocus = "NoIdent";
}
else
{
echo "<script>";
echo "alert('Se presentaron errores al Modificar');";
echo "</script>";
}
}
}
mssql_close($conexion);
?>
<?php
if($campoFocus)
{
echo "<script language='JavaScript'>";
echo "document.forms.form1.$campoFocus.focus();";
echo "</script>";
}
?>
</body>
</html>
Según este script, primero se comprueba si en ZonaAntigua hay algo, y si no lo hay se usa el valor que se haya introducido en el campo de zona en el formulario una vez relleno y enviados los datos.
Luego se asigna el valor de ZonaAntigua a la variable $postZona para rellenar con ella el formulario de forma automática.
Veo que además tienes la siguiente línea:
// $VL_Zona = $VP_FacturaPart[9];
Como está con comentarios al principio esa línea no se ejecuta, y por tanto la variable $VL_Zona no deberías usarla en el resto del código.
Por último se ejecuta el siguiente código:
<td><div align="right">Zona</div></td>
<td> <select name="cbZona" size="1" id="cbZona">
<option value="U" <?php if ($postZona=="U" && $VL_Zona=="U") echo ' selected'; ?> >Urbana</option>
<option value="R" <?php if ($postZona=="R" && $VL_Zona=="R") echo ' selected'; ?> >Rural</option>
</select></td>
Ahí deberías quitar $VL_Zona porque no está definida.
<td><div align="right">Zona</div></td>
<td> <select name="cbZona" size="1" id="cbZona">
<option value="U" <?php if ($postZona=="U") echo ' selected'; ?> >Urbana</option>
<option value="R" <?php if ($postZona=="R") echo ' selected'; ?> >Rural</option>
</select></td>
Este código lo que hace es no seleccionar ninguna zona la primera vez. Tras enviar el formulario y volver a mostrarlo, rellena el campo zona con el valor que tuviese antes de enviar el formulario.
Saludos.
Disculpa pero no he podido solucionar esto; hice los cambios que me dijiste:
// $VL_Zona = $VP_FacturaPart[9]; esta linea la habilte y escribi:
$postZona = $VP_FacturaPart[9];
También borre lo que tenia en el select de $VL_zona; cuando hago la consulta del afiliado me selecciona bien la zona, Ej: afiliado:123456789 zona:R, si le cambio la zona a U y le cambio el código del depto y hago la búsqueda la zona vuelve a quedar en R y no en U.
Espero que puedas ayudarme más de lo que me has ayudado.
Vamos por partes porque no está funcionando correctamente.
Lo primero que te aconsejo es que revises la configuración de php en el archivo php.ini de tu servidor y establezcas las siguientes directivas:
error_reporting = E_ALL
display_errors = On
Esto hace que se muestren todos los errores que se puedan producir al ejecutar la página. Es muy útil durante la programación, pero para un servidor web de producción conviene desactivarlas para que los usuarios no vean los errores en caso de producirse. A ti te interesa verlos para solucionarlos.
Luego, vamos a intentar que te guarde el valor de la zona que selecciones tu. Para ello tienes que cambiar las siguientes líneas de tu código:
if ($_SESSION['zonaAntigua'] == '') {
if (isset($_POST['cbZona']))
{
$_SESSION['zonaAntigua'] = $_POST['cbZona'];
}
}
$postZona = $_SESSION['zonaAntigua']; ?>
Reemplazalas por:
if ( !isset( $_SESSION['zonaAntigua'] ) ) {
if (isset($_POST['cbZona'])) {
$_SESSION['zonaAntigua'] = $_POST['cbZona'];
} else {
$_SESSION['zonaAntigua'] = "";
}
}
$postZona = $_SESSION['zonaAntigua'];
?>
Tambien tienes que modificar las siguientes líneas:
<td><div align="right">Zona</div></td>
<td> <select name="cbZona" size="1" id="cbZona">
<option value="U" <?php if ($postZona=="U" && $VL_Zona=="U") echo ' selected'; ?> >Urbana</option>
<option value="R" <?php if ($postZona=="R" && $VL_Zona=="R") echo ' selected'; ?> >Rural</option>
</select></td>
Pones estas otras:
<td><div align="right">Zona</div></td>
<td> <select name="cbZona" size="1" id="cbZona">
<option value="U" <?php if ($postZona=="U") echo ' selected'; ?> >Urbana</option>
<option value="R" <?php if ($postZona=="R") echo ' selected'; ?> >Rural</option>
</select></td>
Y de momento vamos a dejarlo aquí. Pruébalo. Ahora, te tiene que aparecer zona Urbana seleccionada por defecto al abrir la página. Cuando cambies la zona a rural y envíes los datos, al volver a mostrar la zona tiene que poner rural. Y si vuelves a cambiarlo y a enviar los datos, te tiene que poner urbana. Es decir, la primera vez te poner urbana, pero el resto de veces te pondrá el mismo contenido que tenga antes de que envíes el formulario.
Una vez que ya lo tengas, a partir de esas modificaciones me confirmas ese funcionamiento y me indicas qué necesitas.
Saludos.
Hice lo siguiente hasta ahora todo bien.
<?php
if($_POST['cbZona']!='null'){$postZona = $_POST['cbZona'];}
?>
<select name="cbZona" size="1" id="cbZona">
<option value="null">Seleccione Zona
<option value="U" <?php if ($postZona=="U") echo ' selected'; ?> >Urbana</option>
<option value="R" <?php if ($postZona=="R") echo ' selected'; ?> >Rural</option>
</select>
Así si me sale como quiero.
No he finalizado la pregunta porque quería darte la solución que se me ocurrió pero apenas contestes finalizo la pregunta.
Me parece correcto. Ha costado pero al final has conseguido la solución.
Con ese código la primera vez te tiene que mostrar zona urbana y tras enviar el formulario aparecerá de nuevo lo que hayas seleccionado, es decir, lo que estaba seleccionado antes de que enviases el formulario.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas