Foros del Web » Programando para Internet » PHP »

Filtrar busqueda

Estas en el tema de Filtrar busqueda en el foro de PHP en Foros del Web. Hola a todos, estoy construyendo un catalogo de productos este debe tener un buscador echo con lista desplegable. Ya consegui hacerlo, pero quiero que la ...
  #1 (permalink)  
Antiguo 18/11/2011, 11:39
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Filtrar busqueda

Hola a todos, estoy construyendo un catalogo de productos este debe tener un buscador echo con lista desplegable.
Ya consegui hacerlo, pero quiero que la busqueda sea mas avanzada debe tener varias lista una debe filtrar la marca, otra el producto y otra el modelo. Tengo que tener 3 campos de listas. Intente agregar otra pero no las puedo combinar.
Alguno me puede ayudar ? Gracias
  #2 (permalink)  
Antiguo 18/11/2011, 13:00
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Filtrar busqueda

Fijate si esto te ayuda ;)

http://www.codedrinks.com/2010/12/13/select-combinados-mediante-jquery-ajax-php-mysql/

Saludos!
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 18/11/2011, 13:28
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

es exactamente lo que estoy buscando...
pero no logro hacerlo funcionar me tira el siguiente error:

( ! ) Fatal error: Call to a member function fetch_array() on a non-object in C:\wamp\www\desplegables\index.php on line 7

que estoy haciendo mal ? ya lo conecte todo.

gracias por tu ayuda
  #4 (permalink)  
Antiguo 18/11/2011, 13:30
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Filtrar busqueda

Postea el codigo asi vemos donde esta el error y porque :D
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 18/11/2011, 13:43
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

Dale buenisimo:

index.php
Código PHP:
<?php
    $conexion 
= new mysqli("localhost","root","","inmobiliaria",3306);

    
$strConsulta "select id, marca from marca";
    
$result $conexion->query($strConsulta);
    
$opciones '<option value="0"> Elige una marca</option>';
    while( 
$fila $result->fetch_array() )
    {
        
$opciones.='<option value="'.$fila["id"].'">'.$fila["marca"].'</option>';
    }
    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>Selects combinados JQuery + Ajax + PHP + MySQL</title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#marca").change(function(){
                    $.ajax({
                        url:"procesa.php",
                        type: "POST",
                        data:"idmarca="+$("#marca").val(),
                        success: function(opciones){
                            $("#modelo").html(opciones);
                        }
                    })
                });
            });
        </script>
    </head>
    <body>
        <div> Selects combinados </div>
        <div> <label> Marca:</label> <select id="marca"><?php echo $opciones?></select>  </div>
        <div>
            <label> Modelo:</label>
            <select id="modelo">
                <option value="0">Elige un modelo</option>
            </select>
        </div>

    </body>
</html>
procesa.php
Código PHP:
<?php
if(isset($_POST["idmarca"]))
    {
        
$opciones '<option value="0"> Elige un modelo</option>';

        
$conexion= new mysqli("localhost","root","","inmobiliaria",3306);
        
$strConsulta "select id, modelo from modelo where idmarca = ".$_POST["idmarca"];
        
$result $conexion->query($strConsulta);
        

        while( 
$fila $result->fetch_array() )
        {
            
$opciones.='<option value="'.$fila["id"].'">'.$fila["modelo"].'</option>';
        }

        echo 
$opciones;
    }
?>
EDITO:

te voy a mostrar que es lo que tengo realizado yo, asi lo ves y me decis si el codigo que me enviaste me puede servir para lo que necesito.

Código PHP:
<tr> <h1 align="center" class="Estilo1"><img src="head-buscador.png" width="960" height="160" /></h1>
  <form action="busquedapropiedades.php" method="post" name="form1" class="Estilo1">
    <label>
    <div align="center" class="Estilo7">Buscar:
      <input type="text" name="txtBusqueda" id="txtBusqueda">
    Ciudad:
    <select name="selCiudad" id="selCiudad">
      <option value="-1" selected>Todas</option>
        <?php
    $tablaciudades 
mysql_query("SELECT * FROM ciudades ORDER BY nombre ASC"); // Seleccionamos las ciudades de la tabla ciudades
    
while ($registrociudad mysql_fetch_array($tablaciudades)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
?>
      <option value="<?php echo $registrociudad['id']; ?>"><?php echo $registrociudad['nombre']; ?></option>
        <?php
    
// termina la zona de repeticion
    
mysql_free_result($tablaciudades); // se libera la memoria usada por la tabla
?>
      </select>
    <input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR">
    </div>
    </label>
    <div align="center"></div>
  </form>

  <div align="center">
    <table width="563" border="1">
      <tr>
        <td width="122" class="Estilo9">ID Propiedad </td>
    <td width="97" class="Estilo9">Propiedad</td>
    <td width="52" class="Estilo9">Ciudad</td>
    <td width="80" class="Estilo9">Descripci&oacute;n</td>
    <td width="205" class="Estilo9">Precio</td>
    </tr>
      <?php
$sql 
"SELECT propiedades.*, ciudades.* FROM propiedades, ciudades WHERE propiedades.idciudad = ciudades.id ";
if (isset(
$_POST['txtBusqueda'])) {
    
$sql .= " AND propiedades.titulo LIKE '%" $_POST['txtBusqueda'] . "%' ";
    if (
intval($_POST['selCiudad']) > 0) {
        
$sql .= " AND propiedades.idciudad = '" intval($_POST['selCiudad']) . "'";
    }
}
$sql .= " ORDER BY ciudades.nombre DESC";
$tabla mysql_query($sql);
while (
$registro mysql_fetch_array($tabla)) {
?>
      <tr>
        <td height="82" class="Estilo1"><span class="Estilo9"><?php echo $registro['id']; ?></span></td>
    <td class="Estilo1"><span class="Estilo9"><?php echo $registro['titulo']; ?></span></td>
    <td class="Estilo9"><?php echo $registro['idciudad']; ?><?php echo $registro['nombre']; ?></td>
    <td class="Estilo1"><span class="Estilo9"><?php echo $registro['descripcion']; ?></span></td>
    <td class="Estilo9">Venta: <?php echo $registro['precioventa']; ?> / Renta: <?php echo $registro['preciorenta']; ?></td>
    </tr>
      <?php
}
mysql_free_result($tabla);
mysql_close($conexion);
?>
    </table>
Yo no necesito que cuando elijo un campo se actualice el de al lado yo quiero poner 3 filtros y buscar con esa informacion, algo similar a esta web: http://www.distrisurweb.com.ar/productos.php
me parece que eso es un poco mas facil no ?

Última edición por bbrian; 18/11/2011 a las 13:49
  #6 (permalink)  
Antiguo 18/11/2011, 13:53
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Filtrar busqueda

La unica forma que eso este mal es que la consulta este mal, fijate de revisar el sql del index.php
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 18/11/2011, 13:56
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

linuxzero leiste mi mensaje editado? te agregue un poquito de informacion aver si me podes sacar algunas dudas! gracias
  #8 (permalink)  
Antiguo 18/11/2011, 14:13
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Filtrar busqueda

Cita:
Iniciado por bbrian Ver Mensaje
es exactamente lo que estoy buscando...
pero no logro hacerlo funcionar me tira el siguiente error:

( ! ) Fatal error: Call to a member function fetch_array() on a non-object in C:\wamp\www\desplegables\index.php on line 7

que estoy haciendo mal ? ya lo conecte todo.

gracias por tu ayuda
Yo te respondi segun el fatal error que me enviaste :D y si se puede hacer mas facil?? seguro que si, con jquery y ajax lo haces en una patada..
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #9 (permalink)  
Antiguo 18/11/2011, 14:19
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

pasa que todos los tutoriales que encuentro tienen la misma funcion por ejemplo:
pones pais, ahi se cargan las provincias. pero yo necesito que al elegir una opcion muestre las tablas !
  #10 (permalink)  
Antiguo 18/11/2011, 14:27
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Filtrar busqueda

Ahh si es mucho mas facil todavia. Pero el fatal error te lo sigue tirando? porque te dije porque podia ser eso. ahora si el tema es que no te garga lo que tiene que gargar porque te muestra en blanco las cosas eso es otra cosa. Avisame que te anda pasando.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #11 (permalink)  
Antiguo 18/11/2011, 14:50
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

no lo puedo hacer funcionarrrrrrrrr !
tengo 1 base de datos creada (productos) con dos tablas ( marcas -> cod_marca , nombre | modelo -> cod_modelo , cod_marca , nombre )
ya conecte la base de datos eso funciona, pero me sigue tirando el mismo error !
que me falta configurarle?
gracias por tu ayuda !
  #12 (permalink)  
Antiguo 18/11/2011, 14:55
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Filtrar busqueda

segun tu codigo en el index.php haces esto:

Código PHP:
Ver original
  1. <?php
  2.     $conexion = new mysqli("localhost","root","","inmobiliaria",3306);
  3.  
  4.     $strConsulta = "select id, marca from marca";
  5.     $result = $conexion->query($strConsulta);
  6.     $opciones = '<option value="0"> Elige una marca</option>';
  7.     while( $fila = $result->fetch_array() )
  8.     {
  9.         $opciones.='<option value="'.$fila["id"].'">'.$fila["marca"].'</option>';
  10.     }
  11.    
  12. ?>

En tu consulta haces esto:

Código SQL:
Ver original
  1. SELECT id, marca FROM marca

y recien pusiste que la estructura de tu base es la siguiente:

Código:
( marcas -> cod_marca , nombre | modelo -> cod_modelo , cod_marca , nombre )
osea, los campos por los que haces la consulta no existen, te dije que verifiques la consulta de sql porque la unica forma de que te tire el fatal era por el sql, entonces por esto mismo deberia ser asi:

Código SQL:
Ver original
  1. SELECT cod_marca, nombre FROM marca

Fijate eso y avisame
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #13 (permalink)  
Antiguo 18/11/2011, 15:01
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

sigue lo mismo mira...

index.php
Código PHP:
<?php
    $conexion 
= new mysqli("localhost","root","","productos",3306);

    
$strConsulta "SELECT cod_marca, nombre FROM marca";
    
$result $conexion->query($strConsulta);
    
$opciones '<option value="0"> Elige una marca</option>';
    while( 
$fila $result->fetch_array() )
    {
        
$opciones.='<option value="'.$fila["id"].'">'.$fila["cod_marca"].'</option>';
    }
    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>Selects combinados JQuery + Ajax + PHP + MySQL</title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#marca").change(function(){
                    $.ajax({
                        url:"procesa.php",
                        type: "POST",
                        data:"cod_marca="+$("#marca").val(),
                        success: function(opciones){
                            $("#modelo").html(opciones);
                        }
                    })
                });
            });
        </script>
    </head>
    <body>
        <div> Selects combinados </div>
        <div> <label> Marca:</label> <select id="marca"><?php echo $opciones?></select>  </div>
        <div>
            <label> Modelo:</label>
            <select id="modelo">
                <option value="0">Elige un modelo</option>
            </select>
        </div>

    </body>
</html>
procesa.php
Código PHP:
<?php
if(isset($_POST["idmarca"]))
    {
        
$opciones '<option value="0"> Elige un modelo</option>';

        
$conexion= new mysqli("localhost","root","","productos",3306);
        
$strConsulta "select id, cod_modelo from cod_modelo where cod_marca = ".$_POST["idmarca"];
        
$result $conexion->query($strConsulta);
        

        while( 
$fila $result->fetch_array() )
        {
            
$opciones.='<option value="'.$fila["id"].'">'.$fila["cod_modelo"].'</option>';
        }

        echo 
$opciones;
    }
?>
  #14 (permalink)  
Antiguo 18/11/2011, 15:03
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Filtrar busqueda

te siga tirando el fatal error? el mismo u otro?
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #15 (permalink)  
Antiguo 18/11/2011, 15:05
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

el mismo:

( ! ) Fatal error: Call to a member function fetch_array() on a non-object in C:\wamp\www\ajax\index.php on line 7

estoy configurando las tablas mal estoy seguro, pero no se bien donde van cada una....

perdon la molestia
  #16 (permalink)  
Antiguo 18/11/2011, 15:08
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Filtrar busqueda

Claro que te arroja ese error... acaso no lo vez ?

El objeto es $conexion y llamas a un método (fetch_array) del objeto $conexion a través de $result->fetch_array()

Si me imagino la clase seria

Código PHP:
Ver original
  1. $conexion->fetch_array($result)

Pero como te digo ME ESTOY IMAGINANDO LA CLASE.

Te invito a que leas un poco de POO para que no se te presenten este tipo de problemas.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 18/11/2011 a las 15:15
  #17 (permalink)  
Antiguo 18/11/2011, 15:15
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

Código PHP:
<?php
    $conexion 
= new mysqli("localhost","root","","productos",3306);

    
$strConsulta "SELECT cod_marca, nombre FROM marca";
    
$result $conexion->query($strConsulta);
    
$opciones '<option value="0"> Elige una marca</option>';
    while( 
$fila $conexion->fetch_array($result) )
    {
        
$opciones.='<option value="'.$fila["id"].'">'.$fila["cod_marca"].'</option>';
    }
    
?>
ahi lo modifique y sigue con el mismo error ... no entiendo


( ! ) Fatal error: Call to undefined method mysqli::fetch_array() in C:\wamp\www\ajax\index.php on line 7
  #18 (permalink)  
Antiguo 18/11/2011, 15:19
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Filtrar busqueda

Amigo lo que sucede es que desconocemos completamente la clase que administra tu base de datos, lo que PHP te esta diciendo es que estas llamando un método que no esta definido en la clase ni en ninguna parte.

Debes revisar tu código para ver como debes llamar al método fetch_array() y si este necesita parámetros para ser utilizado.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #19 (permalink)  
Antiguo 18/11/2011, 15:20
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

seguire buscando la solucion, cualquier cosa te aviso.
gracias por tu ayuda
  #20 (permalink)  
Antiguo 18/11/2011, 16:33
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

Lo que necesito es exactamente lo que me paso linuxzero:
http://www.codedrinks.com/2010/12/13...jax-php-mysql/
pero no lo puedo hacer funcionar... algo similar conocen ? gracias
  #21 (permalink)  
Antiguo 19/11/2011, 09:42
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

No encuentro exactamente lo que yo necesito, todas las listas dependientes que encuentro son asi:
Pais, elegis el pais y te cargan las provincias. Yo quiero que haya un boton y que me muestre el contenido que yo elegi debajo. Necesito algo similar a esta web.
www.distrisurweb.com.ar/productos.php
De que forma me recomiendan hacerlo ?
Gracias
  #22 (permalink)  
Antiguo 20/11/2011, 17:16
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Filtrar busqueda

El que usa ese sitio no estan vinculadas, son selects por separado, donde no importa lo que eligan siempre tiene la misma info, para lo haces directamenta en php sin ajax, es mucho mas facil que con ajax.. fijate de hacer una consulta para cada select, armas el vector con los datos, se lo pasas al html y lo mostras.. es sencillo.

cualquier ayuda avisame y te paso un ejemplo facil.

Saludos!
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #23 (permalink)  
Antiguo 20/11/2011, 18:32
 
Fecha de Ingreso: enero-2010
Mensajes: 400
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Filtrar busqueda

Me podria pasar algun ejemplo como para empezar a hacerlo? Ojala me resulte facil !
Te agradezco mucho tu tiempo, y tus ganas de ayudarme.

Etiquetas: filtrar, busquedas
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 02:45.