Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/10/2005, 12:20
bilkarm3
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 18 años, 8 meses
Puntos: 0
Debe de ser por el LIKE

Espero haberte entendido la idea, si la entendí bien, tu problema se debe a que cuando armas el SQL usas la sentencia LIKE, y si la variable que le pasas por el formulario esta vacía, mostrará todos los registros, en pocas palabras es como que si no existiera la sentencia WHERE.

Que es lo que creo que puedes hacer, bueno, la sentencia SQL armarla por partes, ejemplo:

Código PHP:
if ($_POST[apellidos]!="")
{
     
$complementa_sql.= " OR apellidos LIKE '%{$_POST[apellidos]}%'";
}
else
{
     
$complementa_sql.= "";

}
if (
$_POST[empresa]!="")
{
     
$complementa_sql.= " OR empresa LIKE '%{$_POST[empresa]}%' ";
}
else
{
     
$complementa_sql.= "";

}

$sql="SELECT * FROM usuarios WHERE nombre LIKE '%$nombre%' {$complementa_sql} "

Así que si la variable apellidos esta vacia, entonces nunca tendra nada que buscar en ese campo, igual que la variable empresa.

Suponiendo que la variable APELLIDOS va CON ALGO y la variable EMPRESA va VACIA, entonces el código SQL que tendrias a la hora de hacer la consulta sería:

Código PHP:
     $sql="SELECT * FROM usuarios WHERE nombre LIKE '%$nombre%'  OR apellidos LIKE '%{$_POST[apellidos]}%'"
Suponiendo que la variable APELLIDOS va VACIA y la variable EMPRESA va CON ALGO, entonces el código SQL que tendrias a la hora de hacer la consulta sería:

Código PHP:
     $sql="SELECT * FROM usuarios WHERE nombre LIKE '%$nombre%'  OR empresa LIKE '%{$_POST[empresa]}%' "
Y si AMBAS LLEVAN ALGO

Código PHP:
$sql="SELECT * FROM usuarios WHERE nombre LIKE '%$nombre%'  OR apellidos LIKE '%{$_POST[apellidos]}%' OR empresa LIKE '%{$_POST[empresa]}%'"
Espero que te sirva.

Saludos.