PHP - Error en el buscador

 
Vista:

Error en el buscador

Publicado por Luis_Malaga (4 intervenciones) el 10/08/2009 10:18:30
Tengo un problemiya con el buscador, cuando solo hago una opcion de busqueda (poredad) funciona, pero cuando hago por varios (poredad, porsexo) se rompe y da el siguiente error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhost/buscocasting.es/home/html/admin/buscar.php on line 125

en esa linea esta:

[PHP]while ($row=mysql_fetch_array($result)) {[/PHP]

El codigo del buscador es:

}
if ($_GET["buscar"]==1) {

include "conexion.php";
//VAMOS AL LIO!!! AKI VIENE LO GORDO
$sql="select * from usuarios"; //escribimos en la variable sql la busqueda
if ($portampelo2=="Todos") {$portampelo2="";}
if ($porsexo=="Todos") {$porsexo="";}
if ($porsexo!=""||$porid!=""||$porojos2!=""||$porpelo2!=""||$poraltura!=""||$porpeso2!=""||$portampelo2!=""||$porespecialidades!=""||$pornacionalidad2!=""||$porresidencia!=""||$poredad!="") {$sql="$sql where";}
$a=0; //bandera para ver si hay q poner un and
if ($porojos2!="") {$a=1;$sql="$sql ojos like '%$porojos2%'";}
if ($porpelo2!="") {$a=1;$sql="$sql pelo like '%$porpelo2%'";}
if ($poraltura!="") {$a=1;$sql="$sql altura like '%$poraltura%'";}
if ($porpeso2!="") {$a=1;$sql="$sql peso like '%$porpeso2%'";}
if ($porespecialidades!="") {$a=1;$sql="$sql especialidades like '%$porespecialidades%'";}
if ($portampelo2!="") {if ($a==1) {$a=0;$sql="$sql and ";} $a=1;$sql="$sql tampelo ='$portampelo2'";}
if ($pornacionalidad2!="") {$a=1;$sql="$sql nacionalidad like '%$pornacionalidad2%'";}
if ($porresidencia!="") {$a=1;$sql="$sql residencia like '%$porresidencia%'";}
if ($poredad!="") {$a=1;$sql="$sql edad like '%$poredad%'";}
if ($porid!="") {$a=1;$sql="$sql id like '%$porid%'";}
if ($porsexo!="") {$a=1;$sql="$sql sexo like '%$porsexo%'";}

$sql="$sql order by id";
$result = mysql_query($sql,$link);
while ($row=mysql_fetch_array($result)) {
$sex=$row["sexo"];
$fec=$row["fechana"];
$nac=$row["nacionalidad"];
$res=$row["residencia"];
$fig=$row["figurante"];
$pro=$row["profesional"];
$ojo=$row["ojos"];
$pel=$row["pelo"];
$alt=$row["altura"];
$pie=$row["piel"];
$pes=$row["peso"];
$tam=$row["tampelo"];
$esp=$row["especialidadeses"];
$nombre=$row["nombre"];
$apellidos=$row["apellidos"];
$contra=$row["contra"];
$telefono=$row["telefono"];
$movil=$row["movil"];
$hobbies=$row["hobbies"];
$deporte=$row["deporte"];
$imagen=$row["imagen"];
$tat=$row["tato"];
$idi=$row["idiomas"];
$email=$row["email"];
$recomienda=$row["recomienda"];
$quien=$row["quien"];
$fech=$row["fecha"];
$id=$row["id"];
$edad=$row["edad"];
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error en el buscador

Publicado por Diego Romero (1450 intervenciones) el 10/08/2009 20:13:07
Para usar dos o más criterios en la cláusula WHERE de SQL debes usar alguno de los operadores lógicos AND u OR. En tu caso sería AND. Entonces lo que falla en tu código es que si usas dos o más criterios no estás uniéndolas con ese operador, simplemente las pones una detrás de la otra.

Con un solo criterio al final la variable $sql te queda como

select * from usuarios where edad like '%$poredad%'

pero si son dos te queda:

select * from usuarios where edad like '%$poredad%' sexo like '%$porsexo%'

cuando debería ser:

select * from usuarios where edad like '%$poredad%' AND sexo like '%$porsexo%'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en el buscador

Publicado por Luis_Malaga (4 intervenciones) el 11/08/2009 10:09:40
Muchas gracias por tu ayuda!! :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar