Foros del Web » Programando para Internet » PHP »

No encuentro porque me falla

Estas en el tema de No encuentro porque me falla en el foro de PHP en Foros del Web. Hola a todos, Vereis de una base de datos relleno 2 selects uno con las poblaciones y el otro con las actividades, utilizo estos 2 ...
  #1 (permalink)  
Antiguo 11/03/2012, 06:00
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
No encuentro porque me falla

Hola a todos, Vereis de una base de datos relleno 2 selects uno con las poblaciones y el otro con las actividades, utilizo estos 2 selects para seleccionar la población y la actividad que quiero que me muestre mi base de datos.

Si selecciono una actividad y ninguna población me muestra esa actividad de todas las poblaciones independientemente de donde se haye, esto es correcto.
Si selecciono una actividad y una población me muestra la actividad que se encuentra en la población seleccionada, esto es correcto.
El select población funciona correctamente ya que si no elijo ninguna población me saca la actividad de todas las poblaciones,.
Pero el select actividad no funciona como yo quiero porque si no elijo ninguna actividad no me saca nada y lo que quiero es que cuando no elija ninguna actividad me las saque todas, por ejemplo al entrar en la página como no hay nada seleccionado (ni población, ni actividad) me saque todas o cuando seleccione "Seleccionar Población" y "Seleccionar Actividad" de los selects tambien me las saque todas.

Se que lo he hecho con el select población que funciona bien pero no se porque no lo consigo hacer con el select actividad, estare ofuscado o es que soy cada día mas tonto, la cuestión es que llevo horas atascado y necesito de vuestra ayuda.

He reducido el código y he dejado lo indispensable, para que veais donde esta el problema porque yo no se como hacerlo.

Código PHP:
Ver original
  1. <?php
  2.         $selpoblacion = isset($_GET["selpoblacion"])? $_GET["selpoblacion"]: '';
  3.         $selactividad = isset($_GET["selactividad"])? $_GET["selactividad"]: '';
  4. ?>
  5. <?php
  6. $tipoEmpresa = isset($_GET["tipoEmpresa"])? $_GET["tipoEmpresa"]: '';
  7. $criterio = isset($_GET["criterio"])? $_GET["criterio"]: '';
  8. $txt_criterio=isset($_GET["txt_criterio"])? $_GET["txt_criterio"]: ''; 
  9.  
  10. $criterio = "";
  11. if (isset($_GET['criterio'])) {
  12.    $txt_criterio = $_GET["criterio"];
  13.     $criterio = $txt_criterio;
  14. }
  15.    
  16. $myActividad = "";
  17.         if (isset($_GET['selactividad'])and $_GET['selactividad'] >0) {
  18.         $txt_selactividad = $_GET["selactividad"];
  19.         $myActividad = $txt_selactividad;
  20.         }
  21. ?>
  22. <table width="765" height="80" border="0">
  23. <?php
  24. $sql = "SELECT SQL_CALC_FOUND_ROWS actividades.* FROM actividades WHERE actividades.Actividades = '$selactividad' and NombreComer like '%" . $txt_criterio . "%'";
  25. $myVariable = "";
  26.         if (isset($_GET['selpoblacion'])and $_GET['selpoblacion'] >0) {
  27.         $txt_selpoblacion = $_GET["selpoblacion"];
  28.         $sql .= "AND idpoblacion =  $txt_selpoblacion ";
  29. }
  30. $sql .= ' ORDER BY NombreComer ASC ';
  31.  
  32.         if (!($result = @mysql_query($sql))) {
  33.  
  34.         die(mysql_error());
  35.         }
  36.  $rows = mysql_fetch_assoc(mysql_query('SELECT FOUND_ROWS() AS rows'));
  37.  $tabla = mysql_query($sql);
  38. while ($registro = mysql_fetch_array($tabla)) {
  39. ?>
  40.         <tr>
  41.           <td><a href="<?php echo $registro['Url']; ?>"><img border="0" src="<?php echo $registro['Imagenes']; ?>"></a></td>
  42.         </tr>
  43. <?php
  44. }
  45. ?>
  46. </table>
  47.  
  48. <table width="745" height="30" border="0">
  49. <td>
  50. <form name="fecha" method="GET" action="Prueba.php">
  51.   <font color="#FFFFFF">&nbsp;&nbsp;Buscar:&nbsp;&nbsp;&nbsp;</font>
  52.   <input name="criterio" type="text" size="20" style="border-width: 2px; font-size:13pt; font-weight:bold;color: #800000;">
  53.  
  54.    <select name="selpoblacion" id="selpoblacion"  style class="Guias2">
  55.         <option value="-1" selected>Seleccionar Población </option>
  56. <?php
  57.     $tablapoblaciones = mysql_query("SELECT * FROM poblaciones ORDER BY poblacion ASC");
  58.     while ($registropoblacion = mysql_fetch_array($tablapoblaciones)) {
  59. ?>
  60.  
  61. <option value="<?php echo $registropoblacion['Id']; ?>"><?php echo $registropoblacion['Poblacion']; ?></option>
  62.  
  63. <?php
  64.     }
  65.     mysql_free_result($tablapoblaciones);
  66. ?>
  67.     </select>
  68.  
  69.     <select name="selactividad" id="selactividad"  size="1" style class="Guias2">
  70.         <option value="-1" selected>Seleccionar Actividad</option>     
  71. <?php
  72.        
  73.     $tablaactividad = mysql_query("SELECT * FROM actividades group by Actividades ORDER BY Actividades ASC");
  74.     while ($registroactividad = mysql_fetch_array($tablaactividad)) {
  75. ?>
  76. <option value="<?php echo $registroactividad['Actividades']; ?>"><?php echo $registroactividad['Actividades']; ?></option>
  77. <?php
  78.     }
  79.     mysql_free_result($tablaactividad);
  80. ?>
  81.     </select>
  82.    
  83.     <input type="submit" name="cmdBuscar" id="cmdBuscar" value="BUSCAR">
  84.        
  85. </form>
  86.  
  87. </td>
  88. </table>

Gracias a todos.
  #2 (permalink)  
Antiguo 11/03/2012, 12:11
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: No encuentro porque me falla

Las select no tienen WHERE ni ningún otro filtro, falta toda la lógica del filtro. Si está seleccionada una población.. filtrar por población, etc. Tal vez no has posteado todo el código.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 11/03/2012, 13:41
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: No encuentro porque me falla

repara2 Gracias.

No se si me esplique bien, pero en el código que postee esta todo lo necesario para que funcione tal como lo hace hasta este momento.

Los select no necesitan ningún filtro que yo sepa, ya que solo se rellenan de un campo de la base de datos y esto lo hacen bien.

Veras que cuando armo mi consulta principal la que me muestra los datos en mi pagina (mira las lineas 24 a la 30 del código que postee) aqui si que necesito los filtros y este es el primero
Código MySQL:
Ver original
  1. WHERE actividades.Actividades = '$selactividad'
utilizo la variable $selactividad que es la que contiene el valor de lo seleccionado en el select actividades por lo tanto me filtra por el valor de esa variable, AQUÏ HAGO UN INCISO, porque creo que el asunto que me falla podria estar por aqui pero no veo como solucionarlo, en el where pregunta que si $selactividad es igual a uno de los valores que se encuentra en el campo Actividades de la tabla y si es así que me lo seleccione y como es igual pues funciona y me saca los datos que coinciden con esa actividad seleccionada, pero es aquí donde necesito decirle de alguna manera que si no he seleccionado ninguna actividad en el select osea la variable $selactividad no contiene nada o un valor "-1"que me saque todas las actividades.

En cuanto al select Poblaciones funciona bien y en mi consulta principal lo pongo como filtro en la linea 28 del código que postee anteriormente
Código MySQL:
Ver original
  1. $sql .= "AND idpoblacion =  $txt_selpoblacion ";
.

Esto es un ejemplo de lo que hace en estos momentos y lo que preciso:

1º)seleccionada una actividad -no selecciono ninguna población
Resultado: me saca la actividad seleccionada de todas las poblaciones (esto funciona bien)
2º)Seleccionana una actividad- Seleccionada una población.
Resultado: me saca la actividad seleccionada de la población seleccionada (Esto funciona bien).
3º)No selecciono ninguna actividad- No selecciono ninguna población.
Resultado: No saca nada NECESITO: que me saque todas las actividades de todas las poblaciones (No lo hace en estos momentos).
4º)No selecciono ninguna actividad- pero si selecciono una población.
Resultado: No saca nada NECESITO: que me saque todas las actividades de la población seleccionada(No lo hace en estos momentos).

Bueno espero haberme esplicado, gracias por vuestra ayuda, un saludo.

Última edición por ra120354; 11/03/2012 a las 13:53

Etiquetas: encuentro, falla, imagenes, mysql, registro, sql, tabla, 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 14:34.