Foros del Web » Programando para Internet » PHP »

problema con buscador

Estas en el tema de problema con buscador en el foro de PHP en Foros del Web. Hola espero que encuentren el error pues soy nuevo en esto, paso los datos por post desde el formulario, luego de hechas las consultas para ...
  #1 (permalink)  
Antiguo 01/09/2010, 21:50
 
Fecha de Ingreso: mayo-2010
Mensajes: 70
Antigüedad: 14 años
Puntos: 1
problema con buscador

Hola espero que encuentren el error pues soy nuevo en esto, paso los datos por post desde el formulario, luego de hechas las consultas para mostrar en el resultado del buscador el nombre y el género me genera este herror
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\ejercicios_php\buscador\dbuscador.p hp on line 26// que es la linea del while, y me muestra solo la tabla sin contenido.
este es el código:

<body>
<table border="1">
<tr><td align="center"><b><i>NOMBRE</i></b></td><td align="center"><b><i>G&Eacute;NERO</i></b></td></tr>
<?php
$nom=$_POST['txtnombre'];// llamo al campo
$gen=$_POST['combogenero'];// llamo al campo
$nom2=$_POST['radionom'];
$gen2=$_POST['radiogen'];
$asc=$_POST['radioasc'];
$desc=$_POST['radiodesc'];
$conn=mysql_connect("localhost","root","");
$sql="SELECT p.nombre_peli, g.nom_gen
FROM peliculas p, genero g
WHERE p.id_gen=g.id_gen";
if($nom != " "){
$sql.="and p.nombre_peli LIKE '%$nom%'";
}else{
if($gen !=" "){
$sql.="and g.id_gen=$gen";
}
}
mysql_select_db("video",$conn);
$res=mysql_query($sql,$conn);
while($row = mysql_fetch_array($res)){
$nom=$row['nombre_peli'];
$gen=$row['nom_gen'];
print("<tr><td>".$row['nombre_peli']."</td><td>".$row['nom_gen']."</td></tr>");
}
?>
</table>
</body>
</html>
Código PHP:
[PHP
[/PHP]
  #2 (permalink)  
Antiguo 01/09/2010, 22:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con buscador

debes aprender a depurar tus consultas...
Código PHP:
mysql_query(/* tu consulta */) or die(mysql_error()); 
ya que el mensaje que obtienes es producto de una mala consulta, por ende, debes depurarla en base al error que te genere...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 02/09/2010, 08:08
 
Fecha de Ingreso: marzo-2010
Ubicación: Cali
Mensajes: 203
Antigüedad: 14 años, 1 mes
Puntos: 5
Respuesta: problema con buscador

puede ser debido a muchas razones error del query, variables mal declaradas,lo que mas te aconsejo que te fijes bien en la estructura del query o consulta, alguna cosa avisas bueno :).

saludos.
  #4 (permalink)  
Antiguo 02/09/2010, 09:17
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: problema con buscador

Aparte de depurar las consultas a mysql, también sería bueno que depures el codigo php. Por ejemplo, al recibir estos campos, si alguno está vacío vas a tener un error:

Cita:
$nom=$_POST['txtnombre'];// llamo al campo
$gen=$_POST['combogenero'];// llamo al campo
$nom2=$_POST['radionom'];
$gen2=$_POST['radiogen'];
$asc=$_POST['radioasc'];
$desc=$_POST['radiodesc'];
Además, esto no vale: if($nom != " ")

En todo caso, convendría usar trim, y comparar con comillas sin espacios:
Cita:
$nom= trim( $_POST['txtnombre'] );
if($nom != "")
Seguido a eso tenés otro problema de espacios. Estás encadenando strings sin dejar un espacio en blanco:
Cita:
$sql="SELECT p.nombre_peli, g.nom_gen
FROM peliculas p, genero g
WHERE p.id_gen=g.id_gen";
...
$sql.="and p.nombre_peli LIKE '%$nom%'";
La cadena resultante dará:
Cita:
... WHERE p.id_gen=g.id_genand p.nombre_peli LIKE...
  #5 (permalink)  
Antiguo 03/09/2010, 21:37
 
Fecha de Ingreso: mayo-2010
Mensajes: 70
Antigüedad: 14 años
Puntos: 1
Respuesta: problema con buscador

Cita:
Iniciado por mayid Ver Mensaje
Aparte de depurar las consultas a mysql, también sería bueno que depures el codigo php. Por ejemplo, al recibir estos campos, si alguno está vacío vas a tener un error:



Además, esto no vale: if($nom != " ")

En todo caso, convendría usar trim, y comparar con comillas sin espacios:


Seguido a eso tenés otro problema de espacios. Estás encadenando strings sin dejar un espacio en blanco:


La cadena resultante dará:
muchas gracias, el problema era en le espacio con la concatenación de la consulta gracias abrazo

Etiquetas: buscadores
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 11:38.