PHP - Seleccionar desde un select

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Seleccionar desde un select

Publicado por unexes (124 intervenciones) el 22/03/2014 13:30:11
Hola a tod@s.

Tengo un pequeño problema con un select que no consigo hacerlo funcionar correctamente:

Vereis en el select me deben aparecer 4 opciones que son "Indiferente" - "SI" -"NO" -"Sin definir"
En una base de datos de prueba tengo el campo tipo varchar "Ascensor" y he puesto cuatro registros para probar con lo siguientes datos:
Al primero le he puesto "0"
Al segundo le he puesto "1"
Al tercero le he dejado en blanco el Campo ""
y al cuarto le he puesto "2"

El problema es que con el código que pongo a continuación funciona a medias:

En la consulta pongo este trozo de código:
1
2
3
4
5
6
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM alquiler WHERE Activacion = '1'";
                               if (isset($_GET['selascensor'])and $_GET['selascensor'] <>'-1') {
		$sql .= "AND alquiler.Ascensor = '$selascensor' ";
	           }else {$sql .= "AND alquiler.Ascensor <> '-1' ";
}
/ Y termino la consulta.

Y en la parte del menu tengo el select:
1
2
3
4
5
6
7
8
9
10
11
<select name="selascensor" id="selascensor" class="Guias3" Onchange="cargarContenido('ContenidoAlquileres.php')">
	<?php
     $value_select = '';
     if ( isset($_GET['selascensor']) )
         $value_select = $_GET['selascensor'];
 ?>
        <option value="-1" id="-1" <?php if ( $value_select <> '-1') echo 'selected="selected"'; ?> >&nbsp;Todos </option>
        <option value="1" id="1" <?php if ( $value_select >= '1') echo 'selected="selected"'; ?> >Si </option>
        <option value="0" id="0" <?php if ( $value_select == '0') echo 'selected="selected"'; ?> >No </option>
        <option value="" id="" <?php if ( $value_select == ' ') echo 'selected="selected"'; ?> >Sin especificar </option>
</select>

Lo que sale cuando selecciono "Todos" es correcto.
Cuando seleciono "SI" me deberian aparecer 2 el que tiene en el campo el valor "1" y el que tiene en el campoel valor "2" y lo que me aparece solo es el que tiene en el campo el valor "1" .
Cuando selecciono "NO" me funciona correcto me sale el que tiene un valor en el campo "0".
Y para terminar cuando selecciono "Sin especificar" me funciona mal me deberia salir solo el que el valor del campo no contiene nada y me salen todos

Como lo tengo que hacer?, he probado de varias formas y no lo consigo. Gracias a tod@s.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Seleccionar desde un select

Publicado por xve (6935 intervenciones) el 23/03/2014 18:26:31
Hola Unexes, la verdad es que trabajar con espacios nunca lo he hecho, por la problematica que puede tener...

Creo que el problema lo tienes en el condicional, no es un espacio, es vació... has probado así:
1
<option value="" id="" <?php if ( $value_select =='') echo 'selected="selected"'; ?> >Sin especificar </option>

Yo te recomiendo que para todos, por ejemplo utilices el valor 9 o 99...

También te recomiendo que el campo de la base de datos, sea un tinyint... ya que las búsquedas son mas rápidas que en un campo de texto.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Seleccionar desde un select

Publicado por unexes (124 intervenciones) el 23/03/2014 20:11:19
Hola xve gracias.

Veras no funciona, el condicional lo tenia como el que tu me aconsejas no es un espacio es vacio lo que pasa que al poner el código aquí se me colo un espacio entre las comillas, pero es vacio, las comillas estan juntas sin espacio, tal cual funciona igual que antes

Otra cosa no puedo utilizar en este campo tinyint porque necesito que pueda estar en algunos registros vacio y tinyint me lo rellena de "0" cuando no le introduces ningún valor.

Estoy de acuerdo contigo en que el problema esta en el condicional ya que no solo falla en el caso de Sin especificar tambien falla en el caso del "SI" ya que me deberia sacar 2 registros el que tiene el valor "1" y el que tiene el valor "2" y solo me saca el que tiene el valor "1" a pesar de que en la variable value_select he puesto mayor ó igual a "1" ($value_select >='1').

Supongo que este condicional tal como esta planteado esta mal pero no se me ocurre como plantearlo.

Lo que necesito es que si selecciono "Todos" (puse en la esplicación anterior "Indiferente" es lo mismo) me aparezcan todos los registros sin importar si contiene un valor ni que valor contiene, si selecciono "SI" me aparezcan todos cuyo valor sea mayor ó igual a "1" y si selecciono "NO" me aparezcan todos los que tengan un valor "0".

Espero haberme esplicado mejor que antes.

PD: no se si te entendido bien con lo de poner a todos un valor de 9 o 99 supongo que te refieres al <option value ="99" id= "99" <?php if etc...> si hago eso (No funciona nada).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Seleccionar desde un select

Publicado por unexes (124 intervenciones) el 25/03/2014 08:12:05
Bueno segun veo nadie me puede ayudar con este condicional, estoy atascado, lo seguire intentando.

Si encuentro la forma de hacerlo ya lo comentare aquí.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar