Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/08/2014, 07:27
juancamotril
 
Fecha de Ingreso: mayo-2011
Ubicación: Motril (Granada)
Mensajes: 15
Antigüedad: 13 años
Puntos: 0
Respuesta: consulta filtrada en bd no muestra nada

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Vamos a ver:
1) Creas la sentencia de consulta.
2) Abres la ocnexión a la base.
3) Ejecutas la consulta.
4) Imprimes el resultado...

todo OK excepto un par de nimiedades:
1) No estás verificando en ese script si algunos de los valores llego nulo o es una cadena vacía.
2) No estás verificando si la consulta devolvió registros.
3) No estás probando si la query armada devuelve realmente algún dato según las condiciones ingresadas.

la query en si está básicamente bien:
Código SQL:
Ver original
  1. SELECT *
  2. FROM tabla
  3. WHERE provincia = '$provincia'
  4.     AND estudios = '$estudios'
  5.     AND trabajo = '$trabajo'
  6.     AND experiencia = '$experiencia'
Por lo que si no devuelve registros, es porque ninguno de ellos se cumple al mismo tinepo. No te olvides que AND hace que la siguiente condición sea mandatoria, y con que al menos uno de ellos no se verifique, la consulta devolverá cero registros, pero tampoco devolverá errores.

Al menos deberías debuggear, como te dice @paketetrueke:
Código PHP:
Ver original
  1. <?php
  2. $host="localhost";
  3. $usuario="root";
  4. $pass="root";
  5.  
  6. $provincia=$_POST['provincia'];
  7. $estudios=$_POST['estudios'];
  8. $trabajo=$_POST['trabajox'];
  9. $experiencia=$_POST['experiencia'];
  10. if($provincia!="" AND $estudios!="" AND $trabajo!="" AND $experiencia!="")
  11. {
  12.   $sentencia="SELECT * FROM tabla WHERE provincia = '$provincia' and estudios =   '$estudios'and trabajo = '$trabajo' and experiencia = '$experiencia'";
  13.  
  14.   // VErificando sentencia creada
  15.   print $sentencia;
  16.   $c=mysql_connect($host,$usuario) or die("Ha sido imposible conectar con la base de datos");
  17.   mysql_select_db("desempleados", $c);
  18.   $resultado=mysql_query("$sentencia",$c)or die(mysql_error());
  19.   if(mysql_num_rows($resultado)>0)
  20.   {
  21.   print "<table align=center border=2>";
  22.   print "<tr><td>NOMBRE Y APELLIDOS</td><td>AÑO NAC.</td><td>ESTUDIOS</td>  <td>EXPERIENCIA</td><td>TELÉFONO</td></tr>";
  23.   while($registro = mysql_fetch_row($resultado))
  24.   {
  25.   print "<tr>";
  26.   foreach($registro as $clave)
  27.   {
  28.   print "<td>".$clave."</td>";
  29.   }
  30.   }
  31.   print "</table>";
  32.   }
  33.   else{echo "La consulta no devolvio registros.";}
  34. }
  35. else{echo "Al menos uno de los datos no es válido.";}
  36. ?>
Muchas gracias por tu ayuda, pensaba que era la sentecia lo que estaba mal y no encontraba el fallo, según tu código la sentencia no devuelve resultados y el caso que en la base de datos tengo registros.
te adjunto lo que dice: SELECT * FROM tabla WHERE provincia = 'Cádiz' and estudios = 'Universitario'and trabajo = 'Diseño y artes gráficas' and experiencia = 'No'La consulta no devolvio registros.
Es como si la bd estuviese vacia y no es aí, el select anterior debia haber dado al menos 3 resultados que introduje anteriormente y están ahi.