Foros del Web » Programando para Internet » PHP »

datos formularios hacer consulta mysql, usando php

Estas en el tema de datos formularios hacer consulta mysql, usando php en el foro de PHP en Foros del Web. Buaaa el titulo no es lo mio... Os cuento y si los moderadores determinan que esta pregunta n odebe estar aqui, no hay problema, pero ...
  #1 (permalink)  
Antiguo 04/04/2011, 13:27
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 13 años, 7 meses
Puntos: 1
datos formularios hacer consulta mysql, usando php

Buaaa el titulo no es lo mio...

Os cuento y si los moderadores determinan que esta pregunta n odebe estar aqui, no hay problema, pero es que lleva un poco de PHP, HTML y javascript.

El tema es el siguiente:

Formulario html, donde tienes diversos select, PROVINCIA, PRECIO,etc...

Pues lo que busco es que al seleccionar los select, puedas ahcer una consulta en mysql.

Hasta ahora lo que tenia era que seleccionando un solo campo me hacia la consulta y muy bien. pero ahora quiero unir los demas campos, con lo cual tengo que usar un filtro o algo para saber que select se han cambiado y pasarlo a la consulta mysql.

A todas estas estoy probando de meter javascript para saber que campos han cambiado pero me estoy haciendo la picha un lio. Habia pensado que cuando se pulse el boton buscar, llamar a una funcion y que en ella se mire que Selects han cambiado para luego pasar una variable desde javascript a php y esta seria el filtro para hacer la consulta.

Aqui el codigo.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sp" lang="sp">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>TONI MAS</title>
<script>
function buscar(boton)
{
var s=document.getElementById("tipo");
if (s.value!=""){

document.write(s.value);
}
</script>
<?php
$prueba = "<script> document.write(s) </script>";
echo "s = $prueba ";
?>



<link href="css/default.css" rel="stylesheet" type="text/css" />
</head>

<body id="general">
<div id="container">
<div id="topbar"><img src="images/titulo-informacion.jpg"></img></div>
<div id="marquesina">Listado de Inmuebles de Antonio Mas Mañez</div>

<div id="main">
<div id="menu-izq">Buscar inmuebles</br>
<!-- <form name="form1" method="post" action="consulta.php"> -->
<form name="form1" action="<?$_SERVER['PHP_SELF']?>" method="post">
Tipo de inmueble
<select style="width:100%" id="tipo" name="tipo">
<option value="" selected="selected">-selecciona-</option>
<option value="piso">Piso</option>
<option value="casa">Casa</option>
<option value="chalet">Chalet</option>
<option value="duplex">Duplex</option>
<option value="oficina">Oficina</option>
<option value="bajo">Bajo</option>
<option value="estudio">Estudio</option>
</select>
Gestión
<select style="width:100%" id="gestion" name="gestion">
<option value="" selected="selected">-selecciona-</option>
<option value="alquiler">Alquiler</option>
<option value="compra">Compra</option>
</select>
Precio entre
<select style="width:100%" id="minimo" name="minimo">
<option value="" selected="selected">-minimo-</option>
<option value="1">10.000</option>
<option value="2">20.000</option>
<option value="3">50.000</option>
<option value="4">100.000</option>
<option value="5">200.000</option>
<option value="6">300.000</option>
<option value="6">400.000</option>
<option value="7">500.000</option>
<option value="8">1.000.000</option>
</select>
Y
<select style="width:100%" id="maximo" name="maximo">
<option value="" selected="selected">-maximo-</option>
<option value="1">10.000</option>
<option value="2">20.000</option>
<option value="3">50.000</option>
<option value="4">100.000</option>
<option value="5">200.000</option>
<option value="6">300.000</option>
<option value="6">400.000</option>
<option value="7">500.000</option>
<option value="8">1.000.000</option>
</select>
Localidad
<select style="width:100%" id="localidad" name="localidad">
<option value="" selected="selected">-selecciona-</option>
<option value="1">Alborache</option>
<option value="2">Buñol</option>
<option value="3">Cheste</option>
<option value="4">Chiva</option>
<option value="5">Macastre</option>
<option value="6">Requena</option>
<option value="7">Utiel</option>
<option value="8">Yatova</option>
</select>


<input align="right" type="submit" name="buscar" value="Buscar" onClick="buscar()";>


</form>

</div><div>hola main</div>
<?php
$link = mysql_connect("localhost", "root", "secreto");
mysql_select_db("bda_inmuebles", $link);
$filtro="tipo='oficina'";
//echo "valor del tipo $tipo \n\n";
//echo $_POST['gestion'] ;
if (($_POST['gestion']!="") && ($_POST['tipo']!="")){
$filtro="tipo=".$_POST['tipo']."" && " AND " && "gestion=".$_POST['gestion']."";
echo "$filtro";
}
echo "filtro $filtro";
//$result = mysql_query("SELECT tipo,localidad FROM inmuebles", $link);
//$result = mysql_query("SELECT * FROM inmuebles WHERE tipo='$tipo'", $link);
$result = mysql_query("SELECT * FROM inmuebles WHERE $filtro", $link);

// CODIGO PARA BUSCAR SI HAY UN ERROR EN LA CONSULTA
$error = mysql_error($link); // $link es la variable de conexión
echo "$result";
if ($error!=null)
{
print("Ocurrio; el Siguiente Error:\n ".$error);
exit;
}
// FIN DE LA BUSQUEDA DE ERROR



//echo "$tipo";
echo "<table border = '1'> \n";
echo "<tr> \n";
//echo "<td><b>ID</b></td> \n";
//echo "<td><b>Tipo</b></td> \n";

while ($row = mysql_fetch_row($result)){
$trans=array("&ntilde"=>"ñ"); //funcion para poder mostrar las ñ que en mysql son &ntilde
$row[4]=strtr($row[4],$trans);
//echo "<tr> \n";
echo "<td><img src='$row[5]'></img></td> \n";
echo "<tr><td>Localidad: $row[4]</td></tr>\n";
echo "<tr><td>Tipo: $row[1]</td></tr>\n";
echo "<tr><td>Gestion: $row[2]</td></tr>\n";
echo "<tr><td>Precio: $row[3]</td></tr>\n";
//$numero_rows = mysql_num_rows($result);
//echo ".$numero_rows.";
echo "\n";
//for ( $i = 1 ; $i <= $numero_rows ; $i++) {
// print "$i \n" ;
//}


//echo "<td><a href='http://www.google.es'> $row[4] </a></td>";
//echo "<td>$row[4]</td> \n";


//echo "</tr> \n";
}
echo "</table> \n";
?>
</div>
<!-- <div class="spacer"></div> -->


<div id="footer">Página desarrollada por Rubén Ferrer Ortiz</div>
</div>
</body>
</html>


nos asusteis y gracias.

Haaa cualquier idea de hacerlo de otra manera se agradecera.
;)
  #2 (permalink)  
Antiguo 04/04/2011, 15:31
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.990
Antigüedad: 14 años, 10 meses
Puntos: 80
Respuesta: datos formularios hacer consulta mysql, usando php

Bueno... lo primero es lo primero...

Presiona Editar en tu mensaje de arriba, luego selecciona el codigo y luego presiona el boton de la caja de edicion que dice "Highlight" y selecciona PHP, de esa manera tu codigo se indentara y no se vera como una larga cadena de texto.

Segundo, lo que quieres hacer es lo que sucede cuando sale en un formulario "pais" y despues "ciudad" y que al momento de seleccionar el pais, el select de ciudad se cargue??....

Si este es tu caso, revisa un poco este y este tema.

Si te fijas, hay una funcion que va a buscar datos a otra pagina y luego las trae a la pagina que la solicito... Todo esto en javascript y de esta manera puedes vaciar el select que se tenga que cargar y luego recargarle los valores que te ha entregado esta funcion.

Tercero: Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 04/04/2011, 16:32
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: datos formularios hacer consulta mysql, usando php

gracias por contestar, pero no era eso....
de todas maneras creo que ya casi lo tengo...
Digamos que son varios select: Pero no necesito seleccionar uno para que me muestre datos en otro.

Sencillamente es que en la consulta SQL
Código PHP:
Ver original
  1. $result = mysql_query("SELECT * FROM inmuebles WHERE $filtro", $link);

Lo que quiero es que dependiendo de lo que selecciones tengas mas psobilidades a la hora de hacer la busqueda.

Imagina que los select son marcas de coches, potencia y precio.

pues poder hacer la busqueda por potencia, por precio o por marca del coche y tambien combinarlas....

Lo que estoy haciendo es esto.... debe haber algo mas sencillo
Código PHP:
Ver original
  1. $filtro='';
  2.         $tipo=$_POST['tipo'];
  3.         $gestion=$_POST['gestion'];
  4.         $preciomin=$_POST['minimo'];
  5.         $preciomax=$_POST['maximo'];
  6.         $localidad=$_POST['localidad'];
  7.  
  8.         //echo $tipo;
  9.         //echo $gestion;
  10.         //echo $precio;
  11.         //echo $precio;
  12.         //echo $filtro="tipo=$tipo";
  13.         if(($tipo!="selec") AND ($gestion!="selec") AND ($preciomin!="") AND ($preciomax!="") AND ($localidad!="")){
  14.         $filtro="tipo=\"$tipo\" AND gestion=\"$gestion\" AND precio>=\"$preciomin\" AND precio<=\"$preciomax\" AND localidad=\"$localidad\"";
  15.         }elseif(($tipo!="selec") AND ($gestion!="selec") AND ($preciomin!="") AND ($preciomax!="")){
  16.         $filtro="tipo=\"$tipo\" AND gestion=\"$gestion\" AND precio>=\"$preciomin\" AND precio<=\"$preciomax\"";
  17.         }elseif(($tipo!="selec") AND ($gestion!="selec") AND ($preciomin!="") AND ($localidad!="")){
  18.         $filtro="tipo=\"$tipo\" AND gestion=\"$gestion\" AND precio>=\"$preciomin\" AND localidad=\"$localidad\"";
  19.         }elseif(($tipo!="selec") AND ($gestion!="selec") AND ($preciomax!="") AND ($localidad!="")){
  20.         $filtro="tipo=\"$tipo\" AND gestion=\"$gestion\" AND precio>=\"$preciomax\" AND localidad=\"$localidad\"";
  21.         }elseif(($tipo!="selec") AND ($preciomin!="") AND ($preciomax!="") AND ($localidad!="")){
  22.         $filtro="tipo=\"$tipo\" AND gestion=\"$preciomin\" AND precio>=\"$preciomax\" AND localidad=\"$localidad\"";
  23.         }elseif(($tipo!="selec") AND ($preciomax!="") AND ($localidad!="")){
  24.         $filtro="tipo=\"$tipo\" AND precio>=\"$preciomax\" AND localidad=\"$localidad\"";
  25.         }elseif(($tipo!="selec") AND ($preciomax!="") AND ($localidad!="")){
  26.         $filtro="tipo=\"$tipo\" AND precio>=\"$preciomax\" AND localidad=\"$localidad\"";
  27.         }elseif(($tipo!="selec") AND ($gestion!="selec")){
  28.         $filtro="tipo=\"$tipo\" AND gestion>=\"$gestion\"";
  29.         }elseif(($tipo!="selec") AND ($preciomin!="")){
  30.         $filtro="tipo=\"$tipo\" AND precio>=\"$preciomin\"";
  31.         }elseif(($tipo!="selec") AND ($preciomax!="")){
  32.         $filtro="tipo=\"$tipo\" AND precio>=\"$preciomax\"";
  33.         }elseif(($tipo!="selec") AND ($localidad!="")){
  34.         $filtro="tipo=\"$tipo\" AND localidad>=\"$localidad\"";
  35.         }elseif($tipo!="selec"){
  36.         $filtro="tipo=\"$tipo\"";
  37.         }elseif($gestion!="selec"){
  38.         $filtro="gestion=\"$gestion\"";
  39.         }elseif($preciomin!=""){
  40.         $filtro="precio=\"$preciomin\"";
  41.         }elseif($preciomax!=""){
  42.         $filtro="precio=\"$preciomax\"";
  43.         }elseif($localidad!=""){
  44.         $filtro="localidad=\"$localidad\"";
  45.         }
  46.         $filtro="";
  47.         }
  #4 (permalink)  
Antiguo 05/04/2011, 01:42
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.990
Antigüedad: 14 años, 10 meses
Puntos: 80
Respuesta: datos formularios hacer consulta mysql, usando php

Entonces intenta esto:
Código PHP:
Ver original
  1. $filtro = "WHERE 1 = 1";
  2. if(isset($_POST['tipo']) && !empty($_POST['tipo'])){
  3.     $filtro .= " AND tipo='".$_POST['tipo']."'";
  4. }
  5. if(isset($_POST['gestion']) && !empty($_POST['gestion'])){
  6.     $filtro .= " AND gestion='".$_POST['gestion']."'"; 
  7. }
  8. if(isset($_POST['minimo']) && !empty($_POST['minimo'])){
  9.     $filtro .= " AND precio>='".$_POST['minimo']."'";  
  10. }
  11. if(isset($_POST['maximo']) && !empty($_POST['maximo'])){
  12.     $filtro .= " AND precio<='".$_POST['maximo']."'";  
  13. }
  14. if(isset($_POST['localidad']) && !empty($_POST['localidad'])){
  15.     $filtro .= " AND localidad='".$_POST['localidad']."'"; 
  16. }

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 05/04/2011, 08:13
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: datos formularios hacer consulta mysql, usando php

muchas gracias Marvin, he probado tu solucion, pero no me acaba de ir bien... hago ciertas consultas y no salen... de todos modos he llegado a mi solucion depurando lo que anteriormente escribi (le puse todas las condicionales).

Queda feo, pero funciona bien.

Gracias!
  #6 (permalink)  
Antiguo 19/04/2011, 05:13
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 10 años, 7 meses
Puntos: 1
Pregunta Respuesta: datos formularios hacer consulta mysql, usando php

Cita:
Iniciado por Marvin Ver Mensaje
Entonces intenta esto:
Código PHP:
Ver original
  1. $filtro = "WHERE 1 = 1";
  2. if(isset($_POST['tipo']) && !empty($_POST['tipo'])){
  3.     $filtro .= " AND tipo='".$_POST['tipo']."'";
  4. }
  5. if(isset($_POST['gestion']) && !empty($_POST['gestion'])){
  6.     $filtro .= " AND gestion='".$_POST['gestion']."'"; 
  7. }
  8. if(isset($_POST['minimo']) && !empty($_POST['minimo'])){
  9.     $filtro .= " AND precio>='".$_POST['minimo']."'";  
  10. }
  11. if(isset($_POST['maximo']) && !empty($_POST['maximo'])){
  12.     $filtro .= " AND precio<='".$_POST['maximo']."'";  
  13. }
  14. if(isset($_POST['localidad']) && !empty($_POST['localidad'])){
  15.     $filtro .= " AND localidad='".$_POST['localidad']."'"; 
  16. }

Suerte!
Hola Marvin:

Me imagino que
Código PHP:
$filtro "WHERE 1 = 1"
Lo pones para no tener problemas con los "AND" a la hora de generar la consulta...

¿Esto es correcto? ¿funciona?

Gracias por tu atención

Etiquetas: mysql, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:42.