Foros del Web » Programando para Internet » PHP »

Seleccionar registros desde un select

Estas en el tema de Seleccionar registros desde un select en el foro de PHP en Foros del Web. Hola a tod@s. Pido disculpas por si esta consulta no perteneciera a este foro, si es así por favor que alguien la mueva a su ...
  #1 (permalink)  
Antiguo 23/03/2014, 03:04
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Seleccionar registros desde un select

Hola a tod@s.

Pido disculpas por si esta consulta no perteneciera a este foro, si es así por favor que alguien la mueva a su lugar correcto.


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 el campo en blanco ""
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:

Código:
$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:

Código:
<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;Indiferente</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 "Indiferente" es correcto.
Cuando seleciono "SI" me deberian aparecer 2 el que tiene en el campo el valor "1" y el que tiene en el campo el 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.
__________________
¿Hay algo mas hermoso que ayudar.?

Última edición por unexes; 23/03/2014 a las 03:10
  #2 (permalink)  
Antiguo 25/03/2014, 07:34
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 12 años, 10 meses
Puntos: 5
Sonrisa Respuesta: Seleccionar registros desde un select

prueba esto y deja 0 como el "sin especificar" y a "no" dale un valor superior a 0 y dejar valores null en la bd es una mala pracitca de programacion

Código PHP:
Ver original
  1. </select><p></p>
  2.             <label><strong>Fuente de Financiamiento :</strong></label>
  3.            <select name="ffinanciamiento" id="ffinanciamiento">
  4.           <option value="0">Sin Especificar:</option>
  5.               <?php
  6.                 $consul=mysqli_query($conexion,"SELECT * FROM alquiler");
  7.                 while($registro=mysqli_fetch_row($consul))
  8.                 {    
  9.                 echo "<option value='$registro[0]'>$registro[1] </option>";  
  10.                 }
  11.             ?>
  12.            </select><p></p>
  #3 (permalink)  
Antiguo 25/03/2014, 17:44
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Seleccionar registros desde un select

Gracias por tu respuesta evolutionrgm .

Ante todo quiero aclarar que mis conocimientos en este tema son limitados, es por ello que no entiendo muy bien la solución que me planteas, pero voy a intentar esplicarme de nuevo de forma lo mas resumida posible, porque lo mas probable es que haya esplicado mal mi problema, veras mi problema no esta en la consulta de la base de datos por que pasa correctamente el valor que contiene el campo "Ascensor" a la variable "$selascensor", . En mi página tengo un apartado (menú) para filtrar los registros, y en el tengo un combo(select) y es el condicional que le pongo a este select el que creo que esta mal planteado, pero no se como hacerlo.
Dicho combo(select) me presenta 4 opciones:
"Indiferente"
"SI"
"NO"
"Sin especificar"

Lo que quiero es que de entrada dicho combo me muestre por defecto "Indiferente" y me muestre todos lo registros independientemente del contenido del campo "Ascensor"
Si selecciono "SI" me muestre solo los que en el campo "Ascensor" tienen un valor mayor o igual a "1".
Si selecciono "NO" me muestre solo los que en el campo "Ascensor" tienen un valor igual a "0"
Y si selecciono "Sin especificar" me muestre los que tienen el campo "Ascensor" vacio.

En cuanto a la mala practica de dejar valores Null en la base de datos, no se como evitarlo ya que si un cliente introduce los datos desde un formulario, en ese campo le debo dejar la posibilidad de que no introduzca ningún dato ya que no es un campo obligatorio.

Te agradezco el código que me has puesto pero no lo he podido probar porque no veo como integrarlo en mi código.

Si ves como ayudarme te lo agradeceria mucho, un saludo.
__________________
¿Hay algo mas hermoso que ayudar.?

Última edición por unexes; 25/03/2014 a las 17:52

Etiquetas: registro, registros, select, sql
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 10:59.