Foros del Web » Programando para Internet » PHP »

Filtrar consulta con formulario

Estas en el tema de Filtrar consulta con formulario en el foro de PHP en Foros del Web. Buenas a todos. Explico el problema. Tengo una base de datos con registros y los muestro. Código PHP: $_pagi_sql  =  "SELECT * FROM tabla WHERE Estado='correcto'" ;  Y al lado ...

  #1 (permalink)  
Antiguo 27/02/2009, 11:30
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Filtrar consulta con formulario

Buenas a todos. Explico el problema.

Tengo una base de datos con registros y los muestro.

Código PHP:
$_pagi_sql "SELECT * FROM tabla WHERE Estado='correcto'"
Y al lado tengo un formulario

Código HTML:
<form name="form" action="filtrar.php">
<select name="tipo" style="width:200px">
    <option selected>Tipo</option>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
</select>
  <input style="position:absolute; left: 10px; top: 1250px;"  type="submit" value="Filtrar" name="Filtrar" />
</form> 
PROBLEMA:

Necesito que al pinchar en el submit se me carge una nueva pagina (o en la misma, lo que sea mas facil) todos los registros where estado=correcto and tipo= el seleccionado por el formulario.

Tengo una idea de como es pero no consigo que me salga.

PD: Y si tengo mas de un formulario para filtrar? uno para tipo otro para localizacion etc... como sería?.

PD2: Por supuesto, la base de datos esta toda correcta, la conexion con php a la base igual y los codigos. Lo unico que me gustaria que me respondierais es como filtrar una vez mostrado los registros a traves de un formulario. Gracias de antemano.
  #2 (permalink)  
Antiguo 27/02/2009, 11:43
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

No es necesario hacer mas de un formulario, con uno basta.
Solo que debes hacer una condicion a la hora de armar el select;
Si se ha enviado el formulario, es decir if(isset($_POST['Filtrar']) && $_PPOST['Filtrar']=='Filtrar'), entonces tomas los valores, los validas y armas el where, si no se ha enviado nada, el where sera solo estado='correcto';
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 27/02/2009, 11:53
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Gracias por la rapida respuesta.

Cuando pulsas submit te reenvia a filtrar.php.

No seria algo como poner la misma web pero con una consulta diferente?

Código PHP:
$_pagi_sql "SELECT * FROM tabla WHERE Estado='correcto' AND tipo=$_POST['Tipo']; 
Y si es así, como pongo las variables en el formulario??.

PD: O explicame como seria como tu dices, soy algo novato y no entiendo la logica.
  #4 (permalink)  
Antiguo 27/02/2009, 13:08
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Redireccionas a la misma página actual.
Cuando verificas que se ha enviado el formulario de filtro (como te dije arriba), retomas las variables con POST, y armas el nuevo where.
Todo esto en la parte superior de la página. Para cuando muestre el html, muestres los regitros traidos por el select, ya sea filtrados, o en caso de no haber enviado filtro, con la condición por defecto.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #5 (permalink)  
Antiguo 27/02/2009, 14:17
 
Fecha de Ingreso: febrero-2009
Mensajes: 21
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

hola Necrobone, creo enender tu problema, y beuno para probarlo me cree un escernario que refleje tu situacion, espero estar acertando.
mi escenario: tengo una base de datos con 2 tablas producto y categoria, y bueno al inicio muestro todos los productos sin improtar la categoria a la que pertenecen, luego cuando el usuario decide filtrar los productos de una determinada categoria lo que hace es seleccionar de un combo la que desee y con un boton filtrar, muestro solo aquellos productos que pertenecen a esa categoria.

Aqui te dejo el codigo de lo que puedes hacer,:

Archivo index.php

Código:
<?php 
 
    $value = $_REQUEST['cbx_cat'];    
    
    $sql = "select cat_id, cat_nombre from categoria";
    $db->setQuery($sql);
    $rows = $db->loadRowList();

    // la 3 lineas anteriores debes cambiarlas a tu modo de usar tu conexion y consultas a tu base de datos.


    echo "<form id =\"form1\" action=\"index.php\" method=\"post\">\n";
      $combo = "<select name=\"cbx_cat\" id=\"cbx_cat\" >\n";  
      for( $i = 0, $n = count($rows); $i < $n; $i++ ){
        if( $rows[$i][0] == $value ){
  				$combo .= "\t<option value=\"".$rows[$i][0]."\" selected=\"selected\">".$rows[$i][1]."</option>\n";
  			}else{
  				$combo .= "\t<option value=\"".$rows[$i][0]."\">".$rows[$i][1]."</option>\n";
        }
      }    
      echo $combo;    
      echo "<input type=\"submit\" value = \"filtrar\" name=\"submit\" />";
    echo "</form>";
    
   
    if( isset($value) ){
      $sql = "select * from producto where cat_id = ".$value;
    }
    else{      
      $sql = "select * from producto ";
    }
    $db->setQuery($sql);    
    $prods = $db->loadObjectList();
    

// de igual manera debes cambiar para realizar la consulta.

    echo "<table style=\"border: 1px solid #0000ff;\">\n <tr><th>Codigo</th><th>Descripcion</th></tr>";
    foreach( $prods as $key => $v ){
      echo "<tr><td>".$v->pro_id."</td> <td>".$v->pro_nombre."</td><tr>\n";
    }
    echo "</table>";  
?>



Saludos. espero te sirva
  #6 (permalink)  
Antiguo 28/02/2009, 09:05
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Hola a todos. Primero he probado como The_web_saint me ha dicho, y he probado algo así.

Código PHP:
if(isset($_POST['Filtrar']) && $_PPOST['Filtrar']=='Filtrar')

$Tipo $_POST['Tipo'];

$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler' AND Tipo='$Tipo'";

$_pagi_result=mysql_query($_pagi_sql); 
Y luego he mostrado el resto de la pagina pero no consigo acerlo.

Luego tambien he probado lo de leider-garcia (por cierto gracias por tan gran aporte y molestarte tanto). Pero me da errores de index en cbx_cat de la variable value y algo mas (cambiando los campos claro). Aparte de que no he entendido muy bien como funciona. Espero que podais ayudarme necesito terminarlo pronto. Estoy dandole pero no lo consigo.
  #7 (permalink)  
Antiguo 28/02/2009, 09:25
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Creo que te hacen falta los parentesis amigo:
Código php:
Ver original
  1. if(isset($_POST['Filtrar']) && $_POST['Filtrar']=='Filtrar')
  2. {
  3. $Tipo = $_POST['Tipo'];
  4. $_pagi_sql = "SELECT * FROM inmuebles WHERE Estado='Alquiler' AND Tipo=".$Tipo;
  5. }
  6. else
  7. {
  8. $_pagi_sql = "SELECT * FROM inmuebles WHERE Estado='Alquiler'";
  9. }
  10. $_pagi_result=mysql_query($_pagi_sql);
  11.  
  12. /*Sigues con el resto de la página*/

Debes verificar que el campo tenga el nombre exactamente igual, la "T" en mayúscula.
Si notas, en el if, pusiste el segundo $_POST con doble P. Cuidado con esos errores.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #8 (permalink)  
Antiguo 28/02/2009, 09:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Lo siento por los errores. Gracias por el codigo saint. Ahora me funciona y no da errores, pero tengo un problema. No filtra pero carga bien la pagina y tal es un gran avance. Luego lo mirare mas detenidamente y si sabes de que puede ser ponmelo y luego lo leo que tengo un asuntillo que hacer. Muchas gracias saint, muy eficiente y rapido.
  #9 (permalink)  
Antiguo 28/02/2009, 09:45
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Si usas el formulario que pusiste varios post arriba, cambia esta línea en el código que te dí:

Código php:
Ver original
  1. $Tipo = $_POST['tipo'];

En mi anterior post te coloque que verificaras que el nombre fuera idéntico, en el formulario como donde lo recibes.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #10 (permalink)  
Antiguo 28/02/2009, 13:58
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Ya se a lo que te refieres. Pero los campos de mi BD empiezan por mayus, y cualquier value o nombre que pongo en los codigos tambien empiezan por mayus, al menos casi siempre. De todas formas lo comprobe y aun asi pasa lo mismo, carga pero no filtra.

Te copio los codigos aver si descubres mi estupidez gramatica.

1º PAGINA

Código HTML:
<form name="Filtrar" action="browser.php">

</div>
<div style="position:absolute;left:740px;top:280px;z-index:6" align="left">
<select name="Tipo" style="width:200px">
  	<option selected>Tipo de vivienda</option>
    <option value="Áticos">Áticos</option>
    <option value="Apartamentos">Apartamentos</option>
    <option value="Adosados">Adosados/Pareados</option>
    <option value="Casas">Casas</option>
    <option value="Chalet">Chalet</option>
    <option value="Estudios">Estudios</option>
    <option value="Fincas">Fincas/Parcelas</option>
    <option value="Locales">Locales</option>
    <option value="Nuevas">Nuevas promociones</option>
    <option value="Piso">Pisos</option>
</select>

</div>
<div style="position:absolute;left:740px;top:230px;z-index:7" align="left">

</div>
<div style="position:absolute;left:740px;top:180px;z-index:8" align="left">

 <input type="submit" name="Filtrar" value="Filtrar" style="position:absolute; left:10px; top:200px;"/></p>
</form> 

FILTRADO:


Código PHP:
if(isset($_POST['Filtrar']) && $_POST['Filtrar']=='Filtrar')
{
$Tipo $_POST['tipo'];
$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler' AND Tipo=".$Tipo;
}
else
{
$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler'";
}
$_pagi_result=mysql_query($_pagi_sql); 
Y continuo la pagina. De todas maneras seguire probando, aver si consigo arreglarlo y no molestarte mas.
  #11 (permalink)  
Antiguo 01/03/2009, 09:08
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Ya lo he conseguido!!. Y para hacer consultas multiples?. Es decir, si elige tipo y localidad por ejemplo. Se hace para formar el where con los dos, pero como hago para formar el where con 1 solo si el otro es null, es decir no ha decidido filtrarlo?.

Última edición por Necrobone; 01/03/2009 a las 09:14
  #12 (permalink)  
Antiguo 04/03/2009, 16:02
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Debes verificar si ha escogido valor diferente a el nulo, si es así, lo agregas al where, sino, simplemente lo dejas fuera de el.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #13 (permalink)  
Antiguo 05/03/2009, 08:48
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Hola web saint. He probado asi:

Código PHP:
if(isset($_POST['Filtrar']) && $_POST['Filtrar']=='Filtrar')
{
$Tipo $_POST['Tipo'];
$Localidad $_POST['Localidad'];
if(!(
$Tipo == "NULL") && (!($Localidad == "NULL"))){
$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler' AND Tipo='$Tipo' AND Localidad='$Localidad'";
}
}
else
{
$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler'";
}
$_pagi_result=mysql_query($_pagi_sql); 
Pero me da error en la ultima linea (undefined variable _pagi_sql). Alguna idea?.

Última edición por Necrobone; 05/03/2009 a las 08:54
  #14 (permalink)  
Antiguo 05/03/2009, 09:08
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: Filtrar consulta con formulario

Me parece q esto te quiere decir que hay alguna parte de la condición donde se pierde.
Es decir, en el primer IF pones si las dos variables son diferentes de null ¿que pasa si una sola es null?
Se pierde, entonces no entra ni en el IF ni hay un else para esto.
Verifica esto, quizás vaya por ahí el problema
salu2
  #15 (permalink)  
Antiguo 05/03/2009, 09:24
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Hay esta mi problema. Que si tengo que poner un IF para cada posibilidad, tendria que poner una cantidad de IF grandisima (lo digo por que en realidad son 5 campos no 2). Y no se como hacerlo :(!.

Alguna idea?. Gracias.
  #16 (permalink)  
Antiguo 05/03/2009, 09:43
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: Filtrar consulta con formulario

Me parece que deberias armar la consulta de forma diferente
A grandes rasgos y sin probar nada.
1. Comprobar que las variables no esten vacias
Código PHP:
$Tipo != null $queryT "Tipo='$Tipo'" $queryT ''
2. Despues q hagas esto, armar la consulta
Código PHP:
$_pagi_sql "SELECT * FROM inmuebles WHERE $queryT $queryN" 
Me imagino que sea asi, solo te doy la idea. Si lo hechas a andar me avisas, o si aparece alguna otra idea

salu2
  #17 (permalink)  
Antiguo 05/03/2009, 10:03
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Podrías hacer un bucle y hacerlo más general, de esta manera no tendrás que hacer tantos if.
Por ejemplo usando un foreach de POST, así validas que se hayan tomando valores para cada uno, de ser así, armas la consulta, sino, bueno pasas a la otra variable POST.

Quizás no sea tan sencillo como te lo explico, pero no es complejo tampoco.
Saludos.
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #18 (permalink)  
Antiguo 05/03/2009, 13:16
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Me han corroborado que tu forma seria la correcta saint. Pero no entiendo muy bien el foreach y en php.net tampoco lo veo muy claro. He echo esto de prueba.

Pero aparte de que no lo entiendo muy bien, no me sale. (espero que puedas ayudarme).


Código PHP:
<?php

    
if(isset($_POST['submit-filtrar'])){
        
        
$a $_POST['a'];
        
$b $_POST['b'];
        
$c $_POST['c'];
        
$d $_POST['d'];
        
        
// arrays de los datos recogidos en el form
        
$datos_form = array(
            
"a" => array(
                
"post" => $_POST['a'],
                
"cond" => "opcion_a='A'"
            
),
            
            
"b" => array(
                
"post" => $_POST['b'],
                
"cond" => "opcion_b='B'"
            
),
            
            
"c" => array(
                
"post" => $_POST['c'],
                
"cond" => "opcion_c='C'"
            
),
            
            
"d" => array(
                
"post" => $_POST['d'],
                
"cond" => "opcion_d='D'"
            
)
        );
        
    }
    

?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
.Estilo1 {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #006699;
}
.Estilo2 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #006699; font-weight: bold; }
.Estilo3 {font-family: Arial, Helvetica, sans-serif; font-size: 9px; color: #006699; }
-->
</style>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td width="150" rowspan="2" align="center" valign="middle">&nbsp;</td>
        <td height="350" align="left" valign="bottom">
            <table width="80%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td class="Estilo2">RESULTADOS DEL FILTRADO:</td>
                </tr>
                <tr>
                    <td height="10" valign="top"></td>
                </tr>
                <tr>
                    <td valign="top" bgcolor="#9FE0FF" class="Estilo3" style="padding:8px;">
                        <?php

                            
foreach($datos_form as $condicion=>$post){
                                echo 
"$condicion=>$post AND ";
                            }
                        
                        
?>
                    </td>
                </tr>
                <tr>
                    <td height="100" valign="top">&nbsp;</td>
                </tr>
            </table>
        </td>
    </tr>
    <tr>
        <td height="200" align="left" valign="top" class="Estilo1">
            <form action="" method="post" name="form-filtrar">
                Selecciona para filtrar:
                    <br />
                <hr style="margin:8px 0px 5px 0px;" color="#006699" width="80%" />
                    <br />
                <select name="a" id="a">
                    <option value="NULL">Selecciona</option>
                    <option value="A01">A01</option>
                    <option value="A02">A02</option>
                    <option value="A03">A03</option>
                </select>
                <select name="b" id="b">
                    <option value="NULL">Selecciona</option>
                    <option value="B01">B01</option>
                    <option value="B02">B02</option>
                    <option value="B03">B03</option>
                </select>
                <select name="c" id="c">
                    <option value="NULL">Selecciona</option>
                    <option value="C01">C01</option>
                    <option value="C02">C02</option>
                    <option value="C03">C03</option>
                </select>
                <select name="d" id="d">
                    <option value="NULL">Selecciona</option>
                    <option value="D01">D01</option>
                    <option value="D02">D02</option>
                    <option value="D03">D03</option>
                </select>
                    <br />
                    <br />
                <input name="submit-filtrar" type="submit" id="submit-filtrar" value="Filtrar" />
            </form>
        </td>
    </tr>
</table>
</body>
</html>
  #19 (permalink)  
Antiguo 05/03/2009, 13:41
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Vamos a ver:

Código php:
Ver original
  1. foreach (array_expression as $key => $value)
  2. {
  3. //Lo que deseas hacer
  4. }

Esto lo que hace es que toma un array y lo descompone en una variables, en tu caso, usarás algo como esto:
Código php:
Ver original
  1. foreach ($_POST as $key => $value)
  2. {
  3. //Lo que deseas hacer
  4. }
En donde $key será el nombre del input del formulario y $value su valor.

Ahora, teniendo esto de esta forma, puedes validar el valor($value) de cada input e ir armando tu where.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #20 (permalink)  
Antiguo 05/03/2009, 13:45
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: Filtrar consulta con formulario

Vaya, es cierto esto es mucho mejor que lo q te habia dicho. Nunca me habia topado con un caso de estos, luego mi ligereza en el planteamiento
  #21 (permalink)  
Antiguo 05/03/2009, 13:55
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Si, el foreach, es muy útil, sobre todo para el manejo de grandes cantidades de datos en un arreglo.

:D
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #22 (permalink)  
Antiguo 05/03/2009, 14:10
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Intento entenderlo pero aun estoy ahi ahi xD. En el value que iria, una variable?. Y en esa variable "value" va el Tipo='$Tipo'?.

Y luego dentro del foreach, lo que deseo hacer, no lo entiendo. T_T. Lo siento de verdad pero no entiendo la logica.
  #23 (permalink)  
Antiguo 05/03/2009, 14:28
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

El foreach lo que hace es como por decir, separar el array en variables.
Por ejemplo:

arreglo[2]=23
con el foreach de la forma que te coloque arriba te dará:
$key=2
$value=23

En tu caso lo usarás para el arreglo $_POST
que tiene por ejemplo:
$_POST['filtro']=3
entonces:
$key=filtro y $value=3

Espero hayas comprendido, porque más sencillo no puedo XD

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #24 (permalink)  
Antiguo 05/03/2009, 14:45
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

entonces el key es el nombre del submit? y el valor k seria tipo,localidad y todo eso?.

PD: Entiendo que el foreach lo que hace es separar los valores del array en variables. Pero como aplico eso al filtro de la consulta? (WHERE)?.

Última edición por Necrobone; 05/03/2009 a las 14:52
  #25 (permalink)  
Antiguo 05/03/2009, 15:16
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Si tienes ya el bucle para recorrer todos los valores que se te envia por el formulario de filtro. En cada pasada verificas si es nulo o no se ha seleccionado un valor para filtrar y esto te dirá si lo incluyes o no en el where.
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #26 (permalink)  
Antiguo 05/03/2009, 15:41
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Código PHP:
$a = array(
            
"Tipo" => array(
                
"post" => $_POST['Tipo'],
                
"cond" => "opcion_Tipo='Tipo'"
            
),
            
            
"Localidad" => array(
                
"post" => $_POST['Localidad'],
                
"cond" => "opcion_Localidad='Localidad'"
            
),
);

/*$Tipo = $_POST['Tipo'];
$Localidad = $_POST['Localidad'];*/

foreach($a as $k => $v) {
    if (!(
$a[$k] == "NULL"){
$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler' AND $a[$k]='$v'";
    }

Ni de coña no? xDD. no entiendooo :(((.
  #27 (permalink)  
Antiguo 05/03/2009, 15:57
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Mira, al enviar un formulario, la página de destino recibe un array llamado $_POST, este es el que normalmente uno usa de la manera convencional, colocando entre corchetes el nombre del campo que desea obtener el valor.
En tu caso no lo haras así, sino que usaras este arreglo en un foreach, no debes declarar ningun arreglo.
Este llegará cuando envies datos por el formulario.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #28 (permalink)  
Antiguo 05/03/2009, 16:05
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Código PHP:
foreach($_POST as $k => $v) {
    if (!(
$_POST[$k] == "NULL"){
$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler' AND $_POST[$k]='$v'";
    }

Asi?. Te entiendo y se lo que quieres decir, pero mi nivel no es tan bueno como pa desarrollar el codigo, se que quieres ayudarme haciendo que lo haga yo, pero esque no se como hacerlo, nunca e dado el foreach y no entiendo aunque cada vez mas. Lo peor de todo esque necesito acabarlo para mañana. Estoy en un buen lio. Menos mal que solo me queda el filtrado, el resto del portal esta acabado, sino me da algo. Gracias por tu ayuda.
  #29 (permalink)  
Antiguo 05/03/2009, 16:15
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años, 6 meses
Puntos: 43
Respuesta: Filtrar consulta con formulario

Eso que tienes esta mal.
Código php:
Ver original
  1. foreach($_POST as $k => $v) {
  2.     if ($v != "NULL"){
  3. $_pagi_sql = "SELECT * FROM inmuebles WHERE Estado='Alquiler' AND campo_tabla='$v'";
  4.     }
  5. }

Mas o menos de esta forma..

Bueno vamos a hacer algo, tu trata por el día de hoy.
Si mañana no haz resuelto, te ayudo a hacerlo. Pero como sabras es muy importante que lo hagas tu.
Bueno mañana me informas, ya me debo ir.

Suerte y saludos
:D
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #30 (permalink)  
Antiguo 05/03/2009, 16:22
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtrar consulta con formulario

Código PHP:
$Tipo $_POST['Tipo'];
$Localidad $_POST['Localidad'];
if(isset(
$_POST['Filtrar']) && $_POST['Filtrar']=='Filtrar')
{
      foreach(
$_POST as $k => $v) {
          if (
$v != "NULL"){
      
$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler' AND Tipo='$v' AND Localidad='$v'";
          }
      }
}
else
{
$_pagi_sql "SELECT * FROM inmuebles WHERE Estado='Alquiler'";
}
$_pagi_result=mysql_query($_pagi_sql); 
Bueno al menos he conseguido, que al pulsar filtrar, me salga en blanco (no filtre), pero ya no da error XD. Yo estoy a tu favor, yo soy del que opina que la mejor forma de aprender es hacerlo uno mismo, pero tengo que salir del paso, no estoy haciendo ningun trabajo de escuela (por desgracia). De todas maneras gracias por tu ayuda. Espero poder arreglarlo esta noche T_T. Y lo siento por las molestias.
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 21:56.