Foros del Web » Programando para Internet » PHP »

detectar resultado de consulta sql

Estas en el tema de detectar resultado de consulta sql en el foro de PHP en Foros del Web. Bueno estoy haciendo una web en la cual hay una seccion que contiene un filtro para realizar busquedas.. y que al presionar el boton buscar ...
  #1 (permalink)  
Antiguo 08/01/2014, 12:10
 
Fecha de Ingreso: mayo-2010
Mensajes: 93
Antigüedad: 13 años, 11 meses
Puntos: 3
Exclamación detectar resultado de consulta sql

Bueno estoy haciendo una web en la cual hay una seccion que contiene un filtro para realizar busquedas.. y que al presionar el boton buscar se active un archivo php que dará como resultado la impresión de contenido que se encuentra en tablas de la base de datos(ya lo hice). Lo que me interesaria saber es como hacer que cuando no haya resultados que coincidan exactamente con la busqueda que de como resultado algo por el estilo "No se han encontrado resultados que coincidan.. bla pero se ofrecen los siguientes..." y abajo que se impriman los mas parecidos. En resumen lo que más me interesa es saber que codigo poner para detectar que el select no devuelve resultados que coincidan... no se si seria vacio o nulo..muchas gracias de antemano
__________________
Mi web de estética www.estarmaslinda.com.ar
  #2 (permalink)  
Antiguo 08/01/2014, 12:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: detectar resultado de consulta sql

Podrías hacerlo así:

Código PHP:
Ver original
  1. $busqueda = mysqli_query($conexion, "SELECT * FROM tabla WHERE campo LIKE '%". $_GET["dato"] . "%'");
  2.  
  3. if (mysqli_num_rows($busqueda)) {
  4.     $datos = mysqli_fetch_array($busqueda);
  5.     if (in_array($_GET["dato"], $datos)) {
  6.         echo "Se encontró el dato que buscaba";
  7.         //Más acciones a realizar (las que desees)
  8.     }
  9.     else {
  10.         echo "No se encontró el dato que buscaba, pero le ofrecemos lo siguiente: <br />";
  11.         while ($datos) {
  12.             echo "Oferta: " . $datos["campo"] . "<br />";
  13.             //Más acciones a realizar (las que desees)
  14.         }
  15.     }  
  16. }
  17. else
  18.     echo "No se encontraron coincidencias de ningún tipo";

Básicamente, haces la búsqueda con el dato, si obtienes resultados de la misma, armas un array asociativo con dichos resultados y buscas el dato recibido dentro del array, si existe, imprimes un mensaje en el que le indicas al usuario que se encontró su dato, caso contrario, muestras otro mensaje en el que indicas que no se encontró el dato pero tienes otras opciones para ofrecer, las cuales vienen siendo las coincidencias que se hayan encontrado en la búsqueda. Si no existiera ninguna coincidencia, muestras el respectivo mensaje. No te olvides de desinfectar el dato.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 08/01/2014, 13:57
 
Fecha de Ingreso: mayo-2010
Mensajes: 93
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: detectar resultado de consulta sql

muchas gracias!! voy a probar asi. pero a que te referis con desinfectar el dato?
__________________
Mi web de estética www.estarmaslinda.com.ar
  #4 (permalink)  
Antiguo 08/01/2014, 14:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: detectar resultado de consulta sql

Al SQL Injection
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: filtros, select, sql, tablas
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 18:57.