Foros del Web » Programando para Internet » PHP »

consultas like

Estas en el tema de consultas like en el foro de PHP en Foros del Web. Hola. Me ha surgido un problemilla con un formulario de búsqueda. El usuario puede buscar a las personas por distintos campos: nombre, apellido, profesion, edad,... ...
  #1 (permalink)  
Antiguo 10/08/2006, 05:25
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 11 años, 9 meses
Puntos: 1
consultas like

Hola. Me ha surgido un problemilla con un formulario de búsqueda. El usuario puede buscar a las personas por distintos campos: nombre, apellido, profesion, edad,... Pero no es obligatorio que rellene todos los campos de la busqueda. Cuando el campo de busqueda es vacio, cambio su contenido por "%" y hago una consulta con like, asi que me muestra todos los campos. Hasta ahi bien.
El problema es cuando el campo de la base de datos es null o vacio por ejemplo en profesion(que no es un dato obligatorio). Al no haber nada en la base de datos no me muestra esos usuarios.

Hay alguna otra letra o manera para que también salgan los datos null?
  #2 (permalink)  
Antiguo 10/08/2006, 05:56
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Esto debería en ir en el foro de bases de datos, pero bueno...

podrias poner la condicion

(campo LIKE '%' or campo='' or campo is null)

Aunque creo q lo mejor es q estas condiciones las añadas siempre q el usuario escriba algo en el formulario. Si no escribe nada no añadas condiciones sobre dicho campo.

Saludos.

AÑADO UN EJEMPLO SIMPLE:

Código PHP:
$sql="SELECT * FROM tabla WHERE 1=1";
if (
$campo!="") {
    
$sql.=" and campo=$campo";// o campo='$campo' segun corresponda
}
//En caso contrario no hay q poner condiciones sobre ese campo y asi sucesivamente con las diferentes variables q envien sobre la busqueda. 
__________________
La muerte es un camino que todos debemos recorrer...
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 03:56.