Foros del Web » Programando para Internet » PHP »

Al refrescar variables pierdo la información

Estas en el tema de Al refrescar variables pierdo la información en el foro de PHP en Foros del Web. Hola, Tengo este archivo llamado minibuscador.php que está conectado con una base de datos Mysql y que contiene 3 menús desplegables. Cuando selecciono "actividad" todo ...
  #1 (permalink)  
Antiguo 05/09/2011, 04:14
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 15 años, 3 meses
Puntos: 0
Al refrescar variables pierdo la información

Hola,

Tengo este archivo llamado minibuscador.php que está conectado con una base de datos Mysql y que contiene 3 menús desplegables. Cuando selecciono "actividad" todo bien pero cuando selecciono en el segundo campo la "provincia" se refresca y no me muestra las "zonas" que es el tercer campo.

Lo raro es que tengo el mismo archivo en otro servidor y funciona perfectamente. No se si hay que incluir o quitar algo porque el otro servidor tiene php4 y este php5.

Os agradecería que me ayudáseis. Gracias.
http://www.realhotel.es/minibuscador.php



<? require ("includes/conn.php");

$rcat = mysql_query("SELECT * from categorias order by nombre", $link);

if (!$comunidad)

$rprovincias = mysql_query("SELECT * from provincias order by nombre", $link);

else

$rprovincias = mysql_query("SELECT * from provincias where comunidad=$comunidad order by nombre", $link);

if ($idprovincia) {

$rzonas = mysql_query("SELECT * from zonas where idprovincia=$idprovincia order by nombre", $link);

$zonas = mysql_fetch_array($rzonas);

}



$categorias = mysql_fetch_array($rcat);

$provincias = mysql_fetch_array($rprovincias);



?>

<script language="JavaScript" type="text/JavaScript">

<!--

function MM_jumpMenu(targ,selObj){ //v3.0

eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"&idactividad="+form.actividad.value+"'");



}



function Validar(){

if (form.empresa.value!='Empresa o Profesional' && form.empresa.value!=''){



}else{

if (form.provincia.value==''){

alert ('Debe seleccionar alguna Provincia');

return false;

}else if (form.actividad.value==''){

alert ('Debe seleccionar alguna Actividad');

return false;

} else if (form.provincia.value==''){

alert ('Debe seleccionar alguna Provincia');

return false;

}else{

return true;

}

}

}

function Limpiar(){

if (form.empresa.value=='Empresa o Profesional')

form.empresa.value='';

}

//-->

</script>

<link href="estilos.css" rel="stylesheet" type="text/css">



<body bgcolor="#EAEAEA" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table width="318" height="150" border="0" cellpadding="0" cellspacing="0">

<tr>

<td valign="top">

<table width="318" border="0" cellspacing="3" cellpadding="0">

<form name="form" action="buscar.php" target="_top" onsubmit="return Validar();">

<tr>

<td align="left"><img src="images/spacer.gif" width="100%" height="10"></td>

</tr>

<tr>

<td align="left"><input name="empresa" type="text" class="caja_bordeazul" id="empresa" value="Empresa o Profesional" size="30" onFocus="Limpiar();"></td>

</tr>

<tr>

<td align="left"> <select name="actividad" class="caja_bordeazul" id="actividad">

<option value="" selected>Actividad o servicio</option>

<? do{

if ($idactividad==$categorias["id"]){?>

<option value="<? echo $categorias["id"]; ?>" selected><? echo $categorias["nombre"]; ?></option>

<? }else{ ?>

<option value="<? echo $categorias["id"]; ?>"><? echo $categorias["nombre"]; ?></option>

<? }

}while($categorias = mysql_fetch_array($rcat)); ?>

</select> </td>

</tr>

<tr>

<td align="left"><select name="provincia" class="caja_bordeazul" id="provincia" onChange="MM_jumpMenu('self',this,0)">

<option value="" selected>Provincias</option>

<? do{

if ($idprovincia==$provincias["id"]){?>

<option value="minibuscador.php?idprovincia=<? echo $provincias["id"]; ?>" selected><? echo $provincias["nombre"]; ?></option>

<? }else{ ?>

<option value="minibuscador.php?idprovincia=<? echo $provincias["id"]; ?>"><? echo $provincias["nombre"]; ?></option>

<? }

}while($provincias= mysql_fetch_array($rprovincias)); ?>

</select></td>

</tr>

<tr>

<td width="50%" align="left">

<? if ($idprovincia){?>

<select name="zonas" class="caja_bordeazul" id="zonas">

<? do{ ?>

<option value="<? echo $zonas["id"]; ?>"><? echo $zonas["nombre"]; ?></option>

<? }while($zonas = mysql_fetch_array($rzonas)); ?>

</select>

<? }else{ ?>

<select name="zonas" class="caja_bordeazul" id="zonas">

<option value="" selected>Zonas</option>

</select>

<? } ?>

</td>

</tr>

<tr>

<td align="right"> <input name="imageField3" type="image" src="images/boton_buscar.gif" width="63" height="16" border="0"></td>

</tr>

</form>

</table>

</td>

</tr>

</table>

</body>
  #2 (permalink)  
Antiguo 05/09/2011, 04:33
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Al refrescar variables pierdo la información

comienza por arreglar los short_tags

<?

a

<?php

y por otra parte donde declaras

$idprovincia

yo no logre ver donde
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 05/09/2011, 05:18
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Al refrescar variables pierdo la información

Y no estaría de más que utilizaras la herramienta del foro para formatear el código (highlight), porque leerse ese chorizo sin formatear no es plato de buen gusto.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #4 (permalink)  
Antiguo 05/09/2011, 05:42
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Al refrescar variables pierdo la información

Hola,

Te adjunto de nuevo el código como me has pedido. He probado con <?php y sigue igual. Respecto a $idprovincia, aparece en el código. Gracias.


Código PHP:
Ver original
  1. <?php require ("includes/conn.php");
  2.  
  3. $rcat = mysql_query("SELECT * from categorias order by nombre", $link);
  4.  
  5. if (!$comunidad)
  6.  
  7.     $rprovincias = mysql_query("SELECT * from provincias order by nombre", $link);
  8.  
  9. else
  10.  
  11.     $rprovincias = mysql_query("SELECT * from provincias where comunidad=$comunidad order by nombre", $link);
  12.  
  13. if ($idprovincia)   {
  14.  
  15.     $rzonas = mysql_query("SELECT * from zonas where idprovincia=$idprovincia order by nombre", $link);
  16.  
  17.     $zonas = mysql_fetch_array($rzonas);   
  18.  
  19. }
  20.  
  21.  
  22.  
  23. $categorias = mysql_fetch_array($rcat);
  24.  
  25. $provincias = mysql_fetch_array($rprovincias);
  26.  
  27.  
  28.  
  29. ?>
  30.  
  31. <script language="JavaScript" type="text/JavaScript">
  32.  
  33. <!--
  34.  
  35. function MM_jumpMenu(targ,selObj){ //v3.0
  36.  
  37.   eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"&idactividad="+form.actividad.value+"'");
  38.  
  39.  
  40.  
  41. }
  42.  
  43.  
  44.  
  45. function Validar(){
  46.  
  47. if (form.empresa.value!='Empresa o Profesional' && form.empresa.value!=''){
  48.  
  49.  
  50.  
  51. }else{
  52.  
  53.     if (form.provincia.value==''){
  54.  
  55.         alert ('Debe seleccionar alguna Provincia');
  56.  
  57.         return false;
  58.  
  59.     }else if (form.actividad.value==''){
  60.  
  61.         alert ('Debe seleccionar alguna Actividad');
  62.  
  63.         return false;
  64.  
  65.     } else if (form.provincia.value==''){
  66.  
  67.         alert ('Debe seleccionar alguna Provincia');
  68.  
  69.         return false;
  70.  
  71.     }else{
  72.  
  73.         return true;
  74.  
  75.     }
  76.  
  77. }
  78.  
  79. }
  80.  
  81. function Limpiar(){
  82.  
  83.     if (form.empresa.value=='Empresa o Profesional')
  84.  
  85.         form.empresa.value='';
  86.  
  87. }
  88.  
  89. //-->
  90.  
  91. </script>
  92.  
  93. <link href="admicove.css" rel="stylesheet" type="text/css">
  94.  
  95.  
  96.  
  97. <body bgcolor="#EAEAEA" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  98.  
  99. <table width="318" height="150" border="0" cellpadding="0" cellspacing="0">
  100.  
  101.   <tr>
  102.  
  103.     <td valign="top">
  104.  
  105.       <table width="318" border="0" cellspacing="3" cellpadding="0">
  106.  
  107.         <form name="form" action="buscar.php" target="_top" onsubmit="return Validar();">
  108.  
  109.           <tr>
  110.  
  111.             <td align="left"><img src="images/spacer.gif" width="100%" height="10"></td>
  112.  
  113.           </tr>
  114.  
  115.           <tr>
  116.  
  117.             <td align="left"><input name="empresa" type="text" class="caja_bordeazul" id="empresa" value="Empresa o Profesional" size="30" onFocus="Limpiar();"></td>
  118.  
  119.           </tr>
  120.  
  121.           <tr>
  122.  
  123.             <td align="left"> <select name="actividad" class="caja_bordeazul" id="actividad">
  124.  
  125.                 <option value="" selected>Actividad o servicio</option>
  126.  
  127.                 <?php do{
  128.  
  129.           if ($idactividad==$categorias["id"]){?>
  130.  
  131.                 <option value="<?php echo $categorias["id"]; ?>" selected><?php echo $categorias["nombre"]; ?></option>
  132.  
  133.                 <?php }else{ ?>        
  134.  
  135.                 <option value="<?php echo $categorias["id"]; ?>"><?php echo $categorias["nombre"]; ?></option>                 
  136.  
  137.                 <?php }
  138.  
  139.                 }while($categorias = mysql_fetch_array($rcat)); ?>
  140.  
  141.               </select> </td>
  142.  
  143.           </tr>
  144.  
  145.           <tr>
  146.  
  147.             <td align="left"><select name="provincia" class="caja_bordeazul" id="provincia" onChange="MM_jumpMenu('self',this,0)">
  148.  
  149.                 <option value="" selected>Provincias</option>
  150.  
  151.                 <?php do{
  152.  
  153.           if ($idprovincia==$provincias["id"]){?>
  154.  
  155.                 <option value="minibuscadorbis.php?idprovincia=<?php echo $provincias["id"]; ?>" selected><?php echo $provincias["nombre"]; ?></option>
  156.  
  157.                 <?php }else{ ?>
  158.  
  159.                 <option value="minibuscadorbis.php?idprovincia=<?php echo $provincias["id"]; ?>"><?php echo $provincias["nombre"]; ?></option>
  160.  
  161.                 <?php }
  162.  
  163.           }while($provincias= mysql_fetch_array($rprovincias)); ?>
  164.  
  165.               </select></td>
  166.  
  167.           </tr>
  168.  
  169.           <tr>
  170.  
  171.             <td width="50%" align="left">
  172.  
  173.               <?php if ($idprovincia){?>
  174.  
  175.               <select name="zonas" class="caja_bordeazul" id="zonas">
  176.  
  177.                 <?php do{ ?>
  178.  
  179.                 <option value="<?php echo $zonas["id"]; ?>"><?php echo $zonas["nombre"]; ?></option>
  180.  
  181.                 <?php }while($zonas = mysql_fetch_array($rzonas)); ?>
  182.  
  183.               </select>
  184.  
  185.               <?php }else{ ?>
  186.  
  187.               <select name="zonas" class="caja_bordeazul" id="zonas">
  188.  
  189.                 <option value="" selected>Zonas</option>
  190.  
  191.               </select>
  192.  
  193.               <?php } ?>
  194.  
  195.             </td>
  196.  
  197.           </tr>
  198.  
  199.           <tr>
  200.  
  201.             <td align="right"> <input name="imageField3" type="image" src="images/boton_buscar.gif" width="63" height="16" border="0"></td>
  202.  
  203.           </tr>
  204.  
  205.         </form>
  206.  
  207.       </table>
  208.  
  209.     </td>
  210.  
  211.   </tr>
  212.  
  213. </table>
  214.  
  215. </body>
  #5 (permalink)  
Antiguo 05/09/2011, 05:50
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Al refrescar variables pierdo la información

Buenas,

No he mirado bien el código, pero por la forma de actuar de la página deduzco que es por esto:
<td align="left"><select name="provincia" class="caja_bordeazul" id="provincia" onChange="MM_jumpMenu('self',this,0)">

Ese evento onChange hace un submit de la página. No sé lo que hace ni lo veo en el fichero, así que prueba simplemente a quitarlo y mira a ver si te funciona.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #6 (permalink)  
Antiguo 05/09/2011, 10:34
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Al refrescar variables pierdo la información

pues yo sigo sin ver donde identificas el valor de

$idprovincia

y en esta parte del codigo

Código PHP:
Ver original
  1. if ($idprovincia)   {
  2.  
  3.     $rzonas = mysql_query("SELECT * from zonas where idprovincia=$idprovincia order by nombre", $link);
  4.  
  5.     $zonas = mysql_fetch_array($rzonas);    
  6.  
  7. }

la pide y me imagino que si esta en blanco por supuesto que no te mostrara nada en Zonas

haz un

Código PHP:
echo $idprovincia//asi compruebas que tiene 
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #7 (permalink)  
Antiguo 06/09/2011, 02:59
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Al refrescar variables pierdo la información

Hola,

He probado a quitar:
<td align="left"><select name="provincia" class="caja_bordeazul" id="provincia" onChange="MM_jumpMenu('self',this,0)">

y sigue sin funcionar bien.

He añadido echo $idprovincia; y no veo ningún cambio. (Tampoco estoy seguro donde tengo que ponerlo).

Si queréis ver donde está funcionando este mismo código sin problema está en:
http://www.admicobe.com/minibuscador.php ( admicobe con "v" ).

He cambiado a 1and1 y me dicen que lo de php4 funciona correctamente a pesar de ser php5.

Gracias.
  #8 (permalink)  
Antiguo 06/09/2011, 03:53
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Al refrescar variables pierdo la información

No tienes que borrar todo el select, sólo la parte de onChange (creo que quedaba bastante claro).

El problema es, que si has copiado el código de algún otro lado, estás llamando a la función MM_jumpMenu y si la tienes declarada, pero tendrás que adaptarla a tu código y a tus tablas. Esta función seguramente es la que hace que, según la opción que elijes en el segundo select, se rellene el primero. Pero esto no te va a funcionar simplemente copiando el código, tendrás que adaptarlo.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #9 (permalink)  
Antiguo 06/09/2011, 04:12
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Al refrescar variables pierdo la información

pues yo estoy casi seguro que no tienes el codigo completo porque el que muestras de ejemplo tambien refresca pero trae los resultados porque las variables estan correctas, y me imagino que en alguna parte debe preguntar si existe x variable entonces trabajar con ella
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O

Etiquetas: refrescar, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:37.