Foros del Web » Creando para Internet » HTML »

Formulario de búsqueda

Estas en el tema de Formulario de búsqueda en el foro de HTML en Foros del Web. Hola a tod@s! Ésta es mi primera consulta en el foro. Aunque siempre he sido muy autodidacta, esta vez no he encontrado respuestas buscando en ...
  #1 (permalink)  
Antiguo 30/10/2012, 14:40
 
Fecha de Ingreso: agosto-2012
Mensajes: 33
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Formulario de búsqueda

Hola a tod@s! Ésta es mi primera consulta en el foro. Aunque siempre he sido muy autodidacta, esta vez no he encontrado respuestas buscando en google.

Estoy haciendo la web de una inmobiliaria y en la sección de búsqueda de pisos quiero realizar una búsqueda para que vaya mostrando los pisos filtrando por Precio, habitaciones y demás.

Tengo un formulario con las listas desplegables y un php para que busque en una base de datos de Access y muestre el resultado de la búsqueda. Al realizar la búsqueda no muestra nada.

Aquí os dejo los códigos. Millones de gracias.


Código del Formulario:

Código:
<form action="busqueda.php" method="get">
   <p>Zona:<br /> 
     <select name="zona">    
       <option value="Bugibba" selected="selected">Bugibba</option>
       <option value="Gzira">Gzira</option>
       <option value="St Julian's">St Jualian's</option>
       <option value="Sliema">Sliema</option>
       <option value="Swiqi">Swiqi</option>
       <option value="Valleta">Valleta</option>
     </select>
   </p>
   <p>   Número de habitaciones: <br /> 
     <select name="habitaciones">    
       <option value="1" selected="selected">1 dormitorio</option>
       <option value="2">2 dormitorios</option>
       <option value="3">3 dormitorios</option>
       <option value="4">4 dormitorios</option>
       <option value="5">5 dormitorios</option>
     </select>
   </p>
    <p>   Precio máximo: <br /> 
     <select name="precio">    
       <option value="400" selected="selected">400</option>
       <option value="500">500</option>
       <option value="600">600</option>
       <option value="750">750</option>
       <option value="1000">1000</option>
       <option value="masde1000">Más de 1000</option>
     </select>
    </p>
    <input type="submit" value="Buscar" />
</form>

Código del php:

Código:
<body>
<?php
// Se especifica la ubicación de la base de datos Access (directorio actual)
$db = getcwd() . "\\" . 'fervan.accdb';
// Se define la cadena de conexión
$dsn = "DRIVER={Microsoft Access Driver (*.accdb)};
DBQ=$db";

// Se realiza la conexón con los datos especificados anteriormente
$conn = odbc_connect( $dsn, '', '' );
if (!$conn) { exit( "Error al conectar: " . $conn);
}

$filtros = array();
if($zona != 0) {
    // Supongo que deberas verificar que el valor recibido es correcto y
    // corresponde a un registro en tu base de datos
    $filtros[] = "zona = $zona";
}
if($habitaciones != 0) {
    // Supongo que deberas verificar que el valor recibido es correcto y
    // corresponde a un registro en tu base de datos
    $filtros[] = "habitaciones = $habitaciones";
}
if($precio != 0) {
    // Supongo que deberas verificar que el valor recibido es correcto y
    // corresponde a un registro en tu base de datos
    $filtros[] = "precio <= $precio";
	
}
 
// Despues de agregar cada campo, complementas tu consulta:
if(count($filtros) > 0) {
    $filtro = ' WHERE ' . implode(' AND ', $filtros);
} else {
    $filtro = '';
}
$consulta = "SELECT * FROM pisos $filtro";

// Se ejecuta la consulta y se guardan los resultados en el recordset rs
$rs = odbc_exec( $conn, $consulta );
if ( !$rs ) { exit( "Error en la consulta SQL" );
}
// Se muestran los resultados
while ( odbc_fetch_row($rs) ) { $resultado=odbc_result($rs,"Campo"); echo $resultado; }
// Se cierra la conexión
odbc_close( $conn );


?>
</body>

Última edición por eldespertador; 31/10/2012 a las 14:40
  #2 (permalink)  
Antiguo 31/10/2012, 14:41
 
Fecha de Ingreso: agosto-2012
Mensajes: 33
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Formulario de búsqueda

He actualizado el post anterior con todo lo que he avanzado. A ver si alguien me puede ayudar por favor. Gracias.
  #3 (permalink)  
Antiguo 31/10/2012, 17:09
Avatar de tutorias  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 13
De acuerdo Respuesta: Formulario de búsqueda

Un saludo.

No veo en que parte de su código está tomando los valores del formulario. Antes de hacer validaciones, debe recibir los valores del formulario en variables:

Para el método post del action, es asi:

Cita:
$zona = $_POST["zona"];
$habitaciones = $_POST["habitaciones"];
$precio = $_POST["precio"];
Pero veo, que está usando method="get" en su formulario, luego tomaria los valores asi:

Cita:
$zona = $_GET["zona"];
$habitaciones = $_GET["habitaciones"];
$precio = $_GET["precio"];
  #4 (permalink)  
Antiguo 01/11/2012, 06:08
 
Fecha de Ingreso: agosto-2012
Mensajes: 33
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Formulario de búsqueda

Antes de nada mil gracias por contestar.

¿Cuál es la diferencia entre el método POST y el método GET? ¿cuál es el más adecuado para lo que yo quiero hacer?

Lo pruebo y te digo. Gracias de nuevo :)
  #5 (permalink)  
Antiguo 01/11/2012, 09:48
Avatar de tutorias  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 13
Respuesta: Formulario de búsqueda

Cita:
Iniciado por eldespertador Ver Mensaje
Antes de nada mil gracias por contestar.

¿Cuál es la diferencia entre el método POST y el método GET? ¿cuál es el más adecuado para lo que yo quiero hacer?

Lo pruebo y te digo. Gracias de nuevo :)

Recuerde que está ubicado en un modulo de html no de programación php. investiga sobre ello que hay muchos recursos.

POST = los datos viajan por protocolo http pero ocultos, no se ven.

GET = los datos viajan por protocolo http pero visibles, se ven en la url

Para enviar datos de formularios es aconsejable hacerlo por method="POST" ya que por url hay restriccion de cantidad de caracteres.. además que tal enviar una contraseña por get(url)???
  #6 (permalink)  
Antiguo 02/11/2012, 12:25
 
Fecha de Ingreso: agosto-2012
Mensajes: 33
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Formulario de búsqueda

Ahora éste es el código que tengo en el html

Código:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
<form action="busqueda.php" method="get">
   <p>Zona:<br /> 
     <select name="zona">    
       <option value="Bugibba" selected="selected">Bugibba</option>
       <option value="Gzira">Gzira</option>
       <option value="St Julian's">St Jualian's</option>
       <option value="Sliema">Sliema</option>
       <option value="Swiqi">Swiqi</option>
       <option value="Valleta">Valleta</option>
     </select>
   </p>
   <p>   Número de habitaciones: <br /> 
     <select name="habitaciones">    
       <option value="1" selected="selected">1 dormitorio</option>
       <option value="2">2 dormitorios</option>
       <option value="3">3 dormitorios</option>
       <option value="4">4 dormitorios</option>
       <option value="5">5 dormitorios</option>
     </select>
   </p>
    <p>   Precio máximo: <br /> 
     <select name="precio">    
       <option value="400" selected="selected">400</option>
       <option value="500">500</option>
       <option value="600">600</option>
       <option value="750">750</option>
       <option value="1000">1000</option>
       <option value="masde1000">Más de 1000</option>
     </select>
    </p>
    <input type="submit" value="Buscar" />
   
 

</form>

</body>
</html>
Y éste el que tengo en el PHP

Código:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>


<body>
<?php
$zona = $_POST["zona"];
$habitaciones = $_POST["habitaciones"];
$precio = $_POST["precio"];

// Se especifica la ubicación de la base de datos Access (directorio actual)
$db = getcwd() . "\\" . 'fervan.accdb';
// Se define la cadena de conexión
$dsn = "DRIVER={Microsoft Access Driver (*.accdb)};
DBQ=$db";

// Se realiza la conexón con los datos especificados anteriormente
$conn = odbc_connect( $dsn, '', '' );
if (!$conn) { exit( "Error al conectar: " . $conn);
}

$filtros = array();
if($zona != 0) {
    // Supongo que deberas verificar que el valor recibido es correcto y
    // corresponde a un registro en tu base de datos
    $filtros[] = "zona = $zona";
}
if($habitaciones != 0) {
    // Supongo que deberas verificar que el valor recibido es correcto y
    // corresponde a un registro en tu base de datos
    $filtros[] = "habitaciones = $habitaciones";
}
if($precio != 0) {
    // Supongo que deberas verificar que el valor recibido es correcto y
    // corresponde a un registro en tu base de datos
    $filtros[] = "precio <= $precio";
	
}
 
// Despues de agregar cada campo, complementas tu consulta:
if(count($filtros) > 0) {
    $filtro = ' WHERE ' . implode(' AND ', $filtros);
} else {
    $filtro = '';
}
$consulta = "SELECT * FROM pisos $filtro";

// Se ejecuta la consulta y se guardan los resultados en el recordset rs
$rs = odbc_exec( $conn, $consulta );
if ( !$rs ) { exit( "Error en la consulta SQL" );
}
// Se muestran los resultados
while ( odbc_fetch_row($rs) ) { $resultado=odbc_result($rs,"Campo"); echo $resultado; }
// Se cierra la conexión
odbc_close( $conn );


?>
</body>
</html>
No sé si lo estoy haciendo bien, cuando hago la búsqueda esto es lo que me sale en pantalla:

0) { $filtro = ' WHERE ' . implode(' AND ', $filtros); } else { $filtro = ''; } $consulta = "SELECT * FROM pisos $filtro"; // Se ejecuta la consulta y se guardan los resultados en el recordset rs $rs = odbc_exec( $conn, $consulta ); if ( !$rs ) { exit( "Error en la consulta SQL" ); } // Se muestran los resultados while ( odbc_fetch_row($rs) ) { $resultado=odbc_result($rs,"Campo"); echo $resultado; } // Se cierra la conexión odbc_close( $conn ); ?>
  #7 (permalink)  
Antiguo 18/12/2012, 00:04
 
Fecha de Ingreso: diciembre-2012
Ubicación: Mexico
Mensajes: 28
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Formulario de búsqueda

En tu php estas usando metodo POST pero en tu html siges usando el metodo GET, elige cual es el que vas a usar y en tu html manda a llamar tu php con un action="nombredetuphp"

Etiquetas: busquedas, formulario
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 17:14.