Extraño error

Igguana
16 de Junio del 2004
Intento realizar una busqueda en una base de datos, para ello tengo un buscador con 5 menús desplegables en los cuales existe la opción de no escoger nada. Mi intención es que si el usuario elige 5 características, la busqueda se haga con ese criterio de cinco características juntas que han de darse a la vez, y que si no elige ninguna opción y hace la busqueda, la base de datos le devuelva todos los registros que contiene (Porque no hay criterio restrictivo)
También debería poder elegir algunas características, de forma aislada.
Este es mi código y a continuación el error que me reporta:
<?
$base="bla";
$tabla="Datosinmueble";
$conexion=mysql_connect("bla","bla","bla");
mysql_select_db($base,$conexion);
$datoseleccion1=$_POST[envio1];
$datoseleccion2=$_POST[envio2];
$datoseleccion3=$_POST[envio3];
$datoseleccion4=$_POST[envio4];
$datoseleccion5=$_POST[envio5];
$pegar=mysql_query("SELECT * FROM $tabla WHERE (Modo='$datoseleccion1') or (Localidad='$datoseleccion2') or (Tipo='$datoseleccion3') or (Habitaciones='$datoseleccion4') or (Precio='$datoseleccion5')");
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD>&nbsp;Modo</TD>
<TD>&nbsp;Localidad&nbsp;</TD>
<TD>&nbsp;Tipo&nbsp;</TD>
<TD>&nbsp;Habitaciones&nbsp;</TD>
<TD>&nbsp;Precio&nbsp;</TD>
</TR>
<?
while($row = mysql_fetch_array($pegar)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td></tr>",
$row["Modo"],$row["Localidad"],$row["Tipo"],$row["Habitaciones"],$row["Precio"]);
}
mysql_close();
?>

EL ERROR:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

coco
16 de Junio del 2004
Hola igguana. No se mucho de PHP y solo he hecho algunas cosillas. Probablemente este equivocado pero no te falta pasarle la conexion a mysql_query? BYe

povares
16 de Junio del 2004
Me parece que lo más conveniente es guardar la consulta en una variable y luego desplegar la variable en pantalla. Esto porque puede que alguno de los valores que se reciben (envio1, envio2, etc) podrían traer alguna comilla simple o algo así. Lo que se puede hacer es:
$sql = "SELECT * FROM $tabla WHERE (Modo='$datoseleccion1') or (Localidad='$datoseleccion2') or (Tipo='$datoseleccion3') or (Habitaciones='$datoseleccion4') or (Precio='$datoseleccion5')";
echo $sql;

y así revisar la consulta que se esta mandando a mysql

sergio palacios
16 de Junio del 2004
el problema es que estás definiendo como $tabla a la base y como $base a la tabla.