Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Busqueda con mysql-php muestra todos los registros sin criterio

Estas en el tema de Busqueda con mysql-php muestra todos los registros sin criterio en el foro de PHP en Foros del Web. Hola amigos, espero alguien pueda orientarme. He desarrollado una página de búsqueda en bases de datos con MySQL con código PHP. Ya todo me funciona, ...
  #1 (permalink)  
Antiguo 29/03/2016, 15:42
 
Fecha de Ingreso: febrero-2011
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Busqueda con mysql-php muestra todos los registros sin criterio

Hola amigos, espero alguien pueda orientarme.

He desarrollado una página de búsqueda en bases de datos con MySQL con código PHP.
Ya todo me funciona, pero el problema es que cuando abro la página en la que se ingresa el criterio de búsqueda (que es la misma en la que se muestran los resultados) me muestra todos los registros de la base de datos sin antes haber hecho una consulta.

El criterio lo estoy tomando con método GET (con parámetro "criterio") y cuando busco algo si filtra la búsqueda, pero si "no encuentra" ningún criterio de búsqueda o este está vacío me muestra todos los registros de la base de datos.
Mi pregunta es:
¿Cómo puedo hacer para que no muestre ningún resultado al entrar a la página y no haga ninguna búsqueda hasta que no ingrese el criterio?

Le comparto el código de la parte en la que filtra la búsqueda:

Código:
        $criterio = ""; //limpio la variable del criterio de busqueda
        if ($_GET["criterio"]!=""){
	$txt_criterio = $_GET["criterio"];
	$criterio = " where Nombre like '%" . $txt_criterio";
}

	$sql="SELECT * FROM personal ".$criterio;
	$res=mysql_query($sql);
Si necesitan otra parte del código me dicen.
Gracias !
  #2 (permalink)  
Antiguo 30/03/2016, 07:03
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 2 meses
Puntos: 175
Respuesta: Busqueda con mysql-php muestra todos los registros sin criterio

Porque no pruebas imprimir que es lo que está trayendo ese GET.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 30/03/2016, 08:26
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 9 meses
Puntos: 171
Respuesta: Busqueda con mysql-php muestra todos los registros sin criterio

si no quieres que se haga nada si NO hay criterio seria un ejemplo, asi:

Código PHP:
Ver original
  1. $criterio = ""; //limpio la variable del criterio de busqueda
  2. if (!isset($_GET["criterio"])){
  3. echo "debes ingresar un criterio"; // o codigo de redirección
  4. exit();
  5. }
  6. $txt_criterio = $_GET["criterio"];
  7.     $criterio = " where Nombre like '%" . $txt_criterio."'";
  8. $sql="SELECT * FROM personal ".$criterio;
  9.     $res=mysql_query($sql);
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #4 (permalink)  
Antiguo 30/03/2016, 11:15
 
Fecha de Ingreso: febrero-2011
Mensajes: 13
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Busqueda con mysql-php muestra todos los registros sin criterio

Cita:
Iniciado por petit89 Ver Mensaje
si no quieres que se haga nada si NO hay criterio seria un ejemplo, asi:

Código PHP:
Ver original
  1. $criterio = ""; //limpio la variable del criterio de busqueda
  2. if (!isset($_GET["criterio"])){
  3. echo "debes ingresar un criterio"; // o codigo de redirección
  4. exit();
  5. }
  6. $txt_criterio = $_GET["criterio"];
  7.     $criterio = " where Nombre like '%" . $txt_criterio."'";
  8. $sql="SELECT * FROM personal ".$criterio;
  9.     $res=mysql_query($sql);
Gracias petit89, tu código me ha servido de mucho, te cuento que al entrar a la página ya no me muestra todos los resultados, solamente me muestra el mensaje del echo, pero con el "exit()" dejaba de cargar el resto del html y ya no mostraba el pie de página.
Después comprobé que al darle al botón Buscar sin haber escrito nada, me mostraba de nuevo todos los registros de la base de datos, por lo que he cambiado el
!isset por un empty() y el exit() por un goto direccionado hasta donde carga el pie de página..
al final el código quedó así...

Código PHP:
$criterio "";
if (empty(
$_GET["criterio"])){
echo 
"Ingresa lo que quieras buscar";
goto piepagina;
...
...
...
piepagina:
...
... 
Así ya no me muestra ningún registro al entrar a la página, ni cuando le de "Buscar" sin haber escrito nada, solo hasta que haya algún caracter en el campo de búsqueda.
Se que tal vez no sea muy apropiada la función GOTO pero en ciertos casos saca de un apuro y más cuando es un código corto, al menos en mi caso me han funcionado bien.
Espero que les sirva.

Gracias por sus respuestas

Etiquetas: busqueda, mysql, resultados
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 05:01.