Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] buscador

Estas en el tema de buscador en el foro de PHP en Foros del Web. hola maestros , amigos y compañeros tengo un problema y no se como resolver ya vi tutoriales en youtube, busque en google y no logro ...
  #1 (permalink)  
Antiguo 19/11/2013, 00:36
Avatar de herzbazi  
Fecha de Ingreso: febrero-2012
Mensajes: 612
Antigüedad: 12 años, 2 meses
Puntos: 36
Exclamación buscador

hola maestros , amigos y compañeros

tengo un problema y no se como resolver ya vi tutoriales en youtube, busque en google y no logro solucionarlo asi que pido su apoyo. gracias

primero que nada se que es mas facil con php orientado a objetos pero aun no lo controlo.

gracias por su ayuda.

aqui mi problema.

tengo un formulario el cual se alimenta de los campos de una base de datos

Código PHP:
Ver original
  1. form id="bus" name="bus" action="" method="post">
  2.  
  3.                   Seleccione un producto:
  4.                   <select name="categoria" class="select1">
  5.  
  6.                     <option value="0">Seleccione un producto</option>
  7.                        <?php
  8.                             $productos=mysql_query('select * from categoria');
  9.                             while($productos2=mysql_fetch_array($productos)){
  10.                               $productos3[]=$productos2;
  11.                             }
  12.                           foreach ($productos3 as $c) {
  13.                        ?>
  14.                           <option value="<?php echo $c["categoria1"];?>"><?php echo $c["categoria1"];?></option>
  15.                       <?php
  16.                         }
  17.                        ?>
  18.                   </select>
  19.  
  20.                   | Seleccione una marca:
  21.                   <select name="marca" class="select1">
  22.                     <option value="0">Seleccione una marca</option>
  23.                         <?php
  24.                             $marcas=mysql_query('select * from marca');
  25.                             while($marcas2=mysql_fetch_array($marcas)){
  26.                               $marcas3[]=$marcas2;
  27.                             }
  28.                           foreach ($marcas3 as $m) {
  29.                        ?>
  30.                             <option value="<?php echo $m["marca"];?>"><?php echo $m["marca"];?></option>
  31.                         <?php
  32.                         }
  33.                       ?>
  34.                   </select>
  35.  
  36.                   <input type="hidden" value="ok" name="oculto" />
  37.                   <input type="submit" value="Buscar" class="button medium blue" onClick="javascript:validacion();" />
  38.  
  39.               </form>

ahi todo bien , el problema resulta cuando quiero hacer que dichos campos hagan la busqueda.

Código PHP:
Ver original
  1. <?php
  2.                 if(isset($_POST["oculto"]) and $_POST['oculto']=="ok")
  3.                 {
  4.                  
  5.                           if($_POST['categoria']=="0" and $_POST['marca']!="0")
  6.                           {
  7.                             $sql=mysql_query(" select * from productos where marca='".$_POST['marca']."'");      
  8.                           }
  9.                           else if($_POST['marca']=="0" and $_POST['categoria']!="0")
  10.                           {
  11.                             $sql=mysql_query(" select * from productos where categoria='".$_POST['categoria']."'");
  12.                           }
  13.                           else if($_POST['categoria']!="0" and $_POST['marca']!="0")
  14.                           {
  15.                           $sql=mysql_query(" select * from productos where marca='".$_POST['marca']."' and
  16.                           categoria='".$_POST['categoria']."'");
  17.                            
  18.                           }
  19.                           else if($_POST['categoria']=="0" and $_POST['marca']=="0")
  20.                           {
  21.                             $sql=mysql_query('select * from productos');
  22.                           }
  23.                           while($reg=mysql_fetch_array($sql)){
  24.                             $productos[]=$reg;
  25.                           }
  26.  
  27.                         if(count($productos)==0)
  28.                             {
  29.                               echo "La busqueda no a arrojado resultados";
  30.                             }
  31.       else
  32.       {
  33.  
  34.         ?>
  35.           <table border="1" cellpadding="2">
  36.           <tr>
  37.             <td>Categoria</td>
  38.             <td>Marca</td>
  39.             <td>Codigo</td>
  40.             <td>Precio</td>
  41.             <td>Descripcion</td>
  42.             <td>Fabricado</td>
  43.             <td>Foto</td>
  44.           </tr>
  45.         <?php
  46.         foreach ($productos as $p) {
  47.         ?>
  48.          
  49.           <tr>
  50.             <td><?php echo $p["categoria"];?></td>
  51.             <td><?php echo $p["marca"];?></td>
  52.             <td><?php echo $p["codigo"];?></td>
  53.             <td><?php echo $p["precio"];?></td>
  54.             <td><?php echo $p["descripcion"];?></td>
  55.             <td><?php echo $p["fabricado"];?></td>
  56.             <td><img src="<?php echo $p["foto"];?>" width="200px" height="200px" /></td>
  57.           </tr>
  58.            
  59.         <?php
  60.       }
  61.       }
  62.      
  63.  
  64.  
  65.                 }
  66.                    
  67.  
  68.               ?>

y me da este error

Warning: Invalid argument supplied for foreach() cuando hago busqueda vacia
Warning: Cannot use a scalar value as an array cuando hago busqueda por marca o categoria

pueden apoyarme

gracias
__________________
Enseña todo lo que sepas...
Aprende todo lo que puedas..
  #2 (permalink)  
Antiguo 19/11/2013, 08:54
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: buscador

Holas, herzbazi.

Los mensajes de advertencia te lo están diciendo: si no sabes inglés, usa un traductor, como por ejemplo, el Google Translator.

Respecto al primer error, te recomiendo declarar tu variable $productos al inicio del código, para que no te reclame el error antes dícho. Pruébalo a ver qué pasa.

Código PHP:
$productos = array();

while(
$reg=mysql_fetch_array($sql)){ 
Respecto al segundo error, imprime los valores del $_POST y la consulta en pantalla antes de ejecutarla, para ver qué es lo que está llegando desde el form y qué es lo que se está formando en la query.

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 19/11/2013, 16:39
Avatar de herzbazi  
Fecha de Ingreso: febrero-2012
Mensajes: 612
Antigüedad: 12 años, 2 meses
Puntos: 36
Respuesta: buscador

muchas gracias por tu apoyo te comento que los errores que aparecian eran por que no tenia la variable que me mensionaste.

lo hice tal y como me dijiste en el post y guala, que me funciona correctamente.

agradezco tu tiempo en la lectura de mi problema.

muchas gracias
__________________
Enseña todo lo que sepas...
Aprende todo lo que puedas..

Etiquetas: errores
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 23:26.