Foros del Web » Programando para Internet » PHP »

Problema en un select

Estas en el tema de Problema en un select en el foro de PHP en Foros del Web. Vereis tengo este select que utilizo para filtrar que se encuentra en un formulario y que se rellena de una base de datos y eso ...
  #1 (permalink)  
Antiguo 21/11/2012, 13:26
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 9 meses
Puntos: 7
Problema en un select

Vereis tengo este select que utilizo para filtrar que se encuentra en un formulario y que se rellena de una base de datos y eso lo hace correctamente el problema es que necesito que al enviar lo seleccionado el select mantenga la opción seleccionada y lo que me hace es lo siguiente.

En el campo Provincia de mi tabla están todas las ciudades "A Coruña","Álava" etc... y la ultima logicamente es "Zaragoza" cuando selecciono en el select por ejemplo "Madrid" me filtra correctamente los registros que se corresponden con "Madrid" pero al recargar la página en el select queda seleccionada "Zaragoza que es la ultima de la tabla no se me queda "Madrid".

Me podeis ayudar:
Código PHP:
Ver original
  1. <select name="selciudad" id="selciudad" class="Guias3">
  2.     <option value="-1" selected>&nbsp;Todas las Ciudades&nbsp;&nbsp;</option>
  3.     <?php
  4.     $tablaciudad = mysql_query("SELECT * FROM provincias  ORDER BY Provincia ASC");
  5.     while ($registrociudad  = mysql_fetch_array($tablaciudad ))
  6.     {
  7.         if (isset($_GET["selciudad"])==$registrociudad['Provincia'])
  8.         {
  9.             echo "<option value='".$registrociudad['Provincia']."' selected>&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
  10.         }else{
  11.             echo "<option value='".$registrociudad['Provincia']."' >&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
  12.         }
  13.     }
  14.     mysql_free_result($tablaciudad);
  15.    
  16.     ?>
  17. </select>

Gracias.
__________________
¿Hay algo mas hermoso que ayudar.?
  #2 (permalink)  
Antiguo 21/11/2012, 14:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en un select

isset() sirve para comprobar si esta una variable definida, tu comparación no tiene lógica, quita el isset para que compruebes realmente si $_GET['selciudad'] es igual al valor que quieres comparar.

Saludos.
  #3 (permalink)  
Antiguo 21/11/2012, 14:38
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Problema en un select

Gracias por tu rapidez en contestar GatorV, si quito el isset() me da el siguiente error
Código:
Notice: Undefined index: selciudad in C:\wamp\www\Vehiculos\coches.php on line 159
y no se rellena el select desde la tabla.

Al principio de mi página tengo esta linea:
Código:
$selciudad = isset($_GET["selciudad"])? $_GET["selciudad"]: '';
No veo donde esta mal.
__________________
¿Hay algo mas hermoso que ayudar.?
  #4 (permalink)  
Antiguo 21/11/2012, 16:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en un select

¿Que es lo que tienes en la línea 159?
  #5 (permalink)  
Antiguo 22/11/2012, 01:36
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Problema en un select

La linea 159 contiene ahora esto:
Código:
if ($_GET["selciudad"]==$registrociudad['Provincia'])
Es la linea donde me preguntaste por que habia puesto el isset() al quitarlo es cuando me aparece el notice.
En el código que puse al principio del tema del select, se corresponde con la linea que tiene el número 7.

Acabo de darme cuenta que el mal funcionamiento solo es al entrar en la página, si pulso el botón BUSCAR del formulario sin haber seleccionado nada, me muestra todos los coches eso es correcto y a partir de ese momento desaparece el notice y el select aparece correctamente relleno y ya funciona todo correctamente, solo funciona mal al entrar a la página.
__________________
¿Hay algo mas hermoso que ayudar.?

Última edición por unexes; 22/11/2012 a las 02:27
  #6 (permalink)  
Antiguo 23/11/2012, 02:07
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Problema en un select

Estoy atascado

Nadie sabe porque el mal funcionamiento solo es al entrar en la página por primera vez.

A entrar por primera vez me sale el notice y el select no se rellena, pero si pulso el botón BUSCAR del formulario sin haber seleccionado nada ya que no me deja seleccionar porque el select no se rellenado, me muestra todos los coches, eso es correcto (porque si no se selecciona nada para filtrar los debe mostrar todos) y a partir de ese momento al recargarse la página, desaparece el notice y el select aparece correctamente relleno y ya funciona todo correctamente, solo funciona mal al entrar a la página por primera vez.

Mirad a ver si me podeis ayudar, gracias.
__________________
¿Hay algo mas hermoso que ayudar.?
  #7 (permalink)  
Antiguo 24/11/2012, 05:51
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 9 meses
Puntos: 7
Solucionado: Problema en un select

Ya esta SOLUCIONADO.
Gracias a tod@s.
__________________
¿Hay algo mas hermoso que ayudar.?
  #8 (permalink)  
Antiguo 24/11/2012, 06:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema en un select

Si tienes la solución, postearla es lo correcto.
Este es un sitio colaborativo, donde se comparte problemas y soluciones.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 25/11/2012, 05:13
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Problema en un select

gnzsoloyo, perdonad por no poner la solución en el momento pero fue por una causa mayor tuve que marcharme rapidamente cuando estaba escribiendo el post así que deje el mensaje para que otros compañeros no siguierán buscando la solución porque yo ya la tenia, la pongo a continuación pero me gustaria que si alguien ve que en esta solución hay alguna cosa que esta mal hecha le rogaria me lo dijera porque me gusta que mi código este lo mejor posible.
Código PHP:
Ver original
  1. <select name="selciudad" id="selciudad" class="Guias3">
  2.     <option value="-1" selected>&nbsp;Todas las Ciudades&nbsp;&nbsp;</option>
  3.     <?php
  4.     $tablaciudad = mysql_query("SELECT * FROM provincias  ORDER BY Provincia ASC");
  5.     while ($registrociudad  = mysql_fetch_array($tablaciudad ))
  6.  
  7.         if(empty($_GET['selciudad']))
  8.         {
  9.           ($_GET['selciudad'] = '-1');
  10.         }elseif
  11.           ($_GET["selciudad"]==$registrociudad['Provincia'])
  12.         {
  13.            echo "<option value='".$registrociudad['Provincia']."' selected>&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
  14.        }else{
  15.           echo "<option value='".$registrociudad['Provincia']."' >&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
  16.       }
  17.     mysql_free_result($tablaciudad);
  18.    
  19.     ?>
  20.  
  21. </select>
Bueno la solución estaba en comprobar si el valor que llegaba al cargar la página por primera vez era nulo y si lo era darle un valor de "-1", en caso contrario si no es la primera vez que se entra en la página osea que se a utilizado el filtro coger el valor seleccionado previamente.

Gracias a tod@s.
__________________
¿Hay algo mas hermoso que ayudar.?

Etiquetas: formulario, mysql, registro, select, tabla
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 21:34.