Foros del Web » Programando para Internet » PHP »

Varias consultas en

Estas en el tema de Varias consultas en en el foro de PHP en Foros del Web. Muy buenas de nuevo foreros. Algunos de vosotros habréis visto mi primer tema sobre un problemita con una base de datos, el problema sigue siendo ...
  #1 (permalink)  
Antiguo 08/10/2011, 10:29
 
Fecha de Ingreso: octubre-2011
Mensajes: 7
Antigüedad: 12 años, 6 meses
Puntos: 0
Varias consultas en

Muy buenas de nuevo foreros.

Algunos de vosotros habréis visto mi primer tema sobre un problemita con una base de datos, el problema sigue siendo el mismo, pero aquel tema se me descontroló y no conseguía sacar lo que quería, así que espero que no os importe por que voy a abrir otro tema pero esta vez sería una pregunta más concreta.

¿Cómo hago para hacer una consulta que filtre la base de datos con todas las variables que introduzca un usuario en el formulario?

No tengo problema con 1 consulta sola, pero cuando quiero que después de haber consultado la primera filtre los resultados de esa primera con una segunda y los resultados de la 1 y la 2 con una 3 y asi, bueno no se si habrá que hacer algo también para que pueda utilizar todos las consultas o cada una por separado.

Hasta ahora me he figurado esto : 1- la página que coge los campos del formulario.
2- otra página que cambia los valores de los campos a variables , pero cuando llego a esto :

consultar.php
Código PHP:
<?php

include('conectar_mysql.php');
include(
'cargarestilo.php');

$referencia $_POST['referencia'];  

$precio $_POST['precio'];

$tipo $_POST['tipo'];

    
$consultamysql_query("SELECT * FROM inmogea WHERE referencia='$referencia' AND precio=$precio AND tipoterreno=$tipo");  
     
echo 
"$consulta <br>";
$ejecuta=mysql_query($consulta);
$total=mysql_num_rows($ejecuta);
if (
$total 0)
{
    while(
$row=mysql_fetch_array($consulta))
    {
        echo
            
'
                <div id="base"><div id="titulobox"><p><b><h1>Consulta existosa<h1></b></div>
                <br /> <br /> <br />
                <div id="ref"><b>Numero de referencia</b></div><div id="texto">'
.$row['referencia'].'</div><br />
                <div id="poblacion"><b>Poblacion</b></div><div id="texto">'
.$row['poblacion'].'</div><br />
                <div id="terreno"><b>¿tiene cortijo o solo terreno?</b></div><div id="texto">'
.$row['tipoterreno'].'</div><br />
                <div id="superficie"><b>Superficie</b></div><div id="texto">'
.$row['superficie'].'m²</div><br />
                <div id="superficiecasa"><b>Superficie construida</b></div><div id="texto">'
.$row['superficiecasa'].'m²</div><br />
                <div id="superficiecasa"><b>Precio</b></div><div id="texto">'
.$row['precio'].'€</div><br />
                <div id="imagen"><img src="imagenes/casas/'
.$row['foto'].'"></div>
            '
;
    }
}
else
{
    echo 
"No hay registros en la base de datos";
}

 

?>
Me da un error


( ! ) Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\yasi\consultar.php on line 16
Call Stack
# Time Memory Function Location
1 0.0003 681512 {main}( ) ..\consultar.php:0
2 0.0068 689648 mysql_num_rows ( ) ..\consultar.php:16

Si me pudieran pasar algún tutorial o algun script que me arroje algo de luz, os lo agradecería.

Muchas gracias tanto a los que vayáis a esponder como a los que me brindaron su ayuda anteriormente.
Un saludo.

Alejandro.
  #2 (permalink)  
Antiguo 08/10/2011, 14:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Varias consultas en

Ese error es porque no se pudo ejecutar la consulta y mysql_query() devuelve falso en lugar de un recurso de acceso a base de datos y, para saber de que se trata, basta con agregar al final:

Código PHP:
Ver original
  1. $ejecuta = mysql_query($consulta) or die('Error en la consulta: ' . mysql_error());

Seria interesante ver lo que estas obteniendo en $_POST, pero, creo que lo mas sencillo seria:

Código PHP:
Ver original
  1. $consulta = 'SELECT * FROM tabla';
  2. $filtros = array();
  3. // Vas agregando solo los campos que se seleccionaron
  4. if(isset($_POST['dato']) && $_POST['dato'] != '') {
  5.     $filtros = "dato = {$_POST['dato']}";
  6. }
  7.  
  8. // Al final verificas si hay algun filtro y lo aplicas:
  9. if(count($filtros) > 0) {
  10.     $consulta .= ' WHERE ' . implode(' AND ', $filtros);
  11. }

Eso deberia funcionar.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: mysql, registro, variables, usuarios
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 08:19.