Foros del Web » Programando para Internet » PHP »

variables vacias y extrae datos que puede ser???

Estas en el tema de variables vacias y extrae datos que puede ser??? en el foro de PHP en Foros del Web. Hola de nuevo a la comunidad bueno tengo este problemilla que realmente no comprendo tengo un formulario con los siguientes campos Código HTML: <input name= ...
  #1 (permalink)  
Antiguo 28/10/2005, 11:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 96
Antigüedad: 19 años, 11 meses
Puntos: 0
variables vacias y extrae datos que puede ser???

Hola de nuevo a la comunidad bueno tengo este problemilla que realmente no comprendo tengo un formulario con los siguientes campos
Código HTML:
<input name="nombre" type="text" class="Estilo4" id="nombre" >
<input name="apellidos" type="text" class="Estilo4" id="apellidos" >
<input name="empresa" type="text" class="Estilo4" id="empresa" >
<input name="cod1" id="cod1" type="text" size="10">
<input name="cod2" id="cod2" type="text" size="10">
<input name="activa" type="radio" value="si" onClick="habilita(this.form)">
<input name="activa" type="radio" value="no" checked onClick="deshabilita(this.form)">
<input name="busca" type="hidden" id="busca" value="0">
<input type="submit" name="Submit2" value="Enviar" Click="form1.busca.value=1; "> 
estos campos los manejo para realizar 2 tipos de consulta dependiendo de que radio button este activado en caso de que este activado el radio con valor si busca unicamente por codigos eso funciona muy bien en el caso de que el radio button este activado con valor no entra la siguiente condicion php para armar el sql :

Código PHP:
if($_POST['activa'] == "no")
{
$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$empresa=$_POST['empresa'];
                    
$sql="SELECT * FROM usuarios WHERE nombre LIKE '%$nombre%' or apellidos LIKE '%$apellidos% or empresa LIKE '%$empresa%' ";

lo que no entiendo es porque si los campos del formulario estan vacios me extrae la informacion de la base de datos si no le estoy asignando nada que se relacione con algun valor que se asemeje variable ---> campo yo supongo que si la variable esta vacia no debe de traer nada porque no encuentra ninguan semejansa con los registros, pero al contrario el valor es nulo y me extrae todo lo que tengo en mi base de datos entonces ya no se porque lo hace

espero me puedan ayudar
  #2 (permalink)  
Antiguo 28/10/2005, 12:20
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 19 años, 3 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.
  #3 (permalink)  
Antiguo 28/10/2005, 12:35
 
Fecha de Ingreso: diciembre-2004
Mensajes: 96
Antigüedad: 19 años, 11 meses
Puntos: 0
gracias por la ayuda bilkarm3 en este instante la voy a probar :) porque efectivamente se pueden dar varios casos que pueda traer los tres valores o uno o dos en uanto a la busqueda :) ya me abriste el panorama mas porque ya estaba bloqueado grax

un saludo!!
  #4 (permalink)  
Antiguo 28/10/2005, 13:08
 
Fecha de Ingreso: diciembre-2004
Mensajes: 96
Antigüedad: 19 años, 11 meses
Puntos: 0
ya lo intente y sigue haciendo lo mismo no comprendo que estoy haciendo mal
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 22:20.