Foros del Web » Programando para Internet » PHP »

buscador avanzado

Estas en el tema de buscador avanzado en el foro de PHP en Foros del Web. hola a todos. estoy tratando de hacer un buscador para mi web mediante varias listas desplegables. lo que pretendo es que al elegir un valor ...
  #1 (permalink)  
Antiguo 23/05/2011, 06:02
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
buscador avanzado

hola a todos. estoy tratando de hacer un buscador para mi web mediante varias listas desplegables.

lo que pretendo es que al elegir un valor de la 1º lista, este valor se almacene en una variable, para asi en la 2º lista desplegable que aparezcan los datos segun el valor de la primera lista (mediante una consulta).

no se si me he explicado bien:
la 1º lista es de tipos de productos (reloj, joyas...) y la 2º lista es de colecciones.
lo que quiero es que si en la 1º lista elijo "reloj" en la 2º aparezcan las colecciones de relojes.

el problema que tengo es que al cargar la pagina la variable me almacena el valor por defecto de la 1º lista. pero una vez cargada la pagina si elijo otro campo de la lista desplegable no se guarda en la variable. ¿como puedo hacer para que en cuanto elija un valor, se guarde inmediatamente en la variable?
  #2 (permalink)  
Antiguo 23/05/2011, 06:30
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

buenas, ver si te entendi en lo que quieres hacer:

tu quieres hacer dos listas anidadas, para despues darle en un boton y buscar?

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #3 (permalink)  
Antiguo 23/05/2011, 08:27
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

exactamente, eso es lo que quiero hacer.
  #4 (permalink)  
Antiguo 23/05/2011, 09:01
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

hola,
dime si me equivoco en lo que quieres:

tienes 2 select,
cuando selecionas uno del primero te debe mostrar de la BD un filtro en el 2 select,

mira tienes que crear esta funcion de jscript

function FiltroColecciones(producto)
{
var x=document.forms.Form;
x.action="index.php?id_prod="+producto;
x.submit();

}
lo que haces con esto es cambiar el action del formulario, y este se envia y entra en la pagina con el id del producto que selecionaste, y entonces de esta forma tienes como hacer el filtro para mostrar las colecciones en el 2 select

entonces en el primer select pones el onchange

onChange="return FiltroColecciones(SelectProd.value)"

esto hace llamar a la funcion que te cambia el action del formulario

Para que veas algo parecido , revisa este link:
2-combobox-vicualdos-formulario

saludos
Cualquier cosa que te enrredes me comentas
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #5 (permalink)  
Antiguo 23/05/2011, 09:55
 
Fecha de Ingreso: octubre-2010
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: buscador avanzado

Eso es mas facil hacerlo con ajax, dependiendo de lo que elija en la primera lista se colocan los datos de la siguiente linea
__________________
..
  #6 (permalink)  
Antiguo 23/05/2011, 10:11
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

gracias por responder. estoy probando de la forma que me comentas y lo unico que consigo es que cuando escojo un campo de la lista deplegable se me cargue automaticamente la pagina resultado y me muestre todos los productos que cumplen el criterio elegido. vamos, que si elijo "viceroy" me carga la pagina con todos los productos de "viceroy". y si elijo "sandoz" me carga la pagina con todos los productos de "sandoz".

de todas formas me estoy dando cuenta que no va a funcionar con lo que me dices (utilizando el id) ya que los valores de la lista 1 (marca) vienen de una consulta que no permite repetir resultados:
SELECT distinct categoria.marca FROM categoria ORDER BY marca ASC, por lo que cuando elijo una opcion de la lista no hay manera de saber exactamente su "id"

la lista 2 (colecciones) coge sus valores de otra consulta:
SELECT distinct categoria.coleccion FROM categoria
WHERE categoria.marca = var_marca ORDER BY coleccion ASC

la gran duda que tengo es como puedo hacer que cuando escojo una opcion de la lista 1 (ejemplo viceroy), se almacene en la variable "var_marca" para que asi la consulta de la lista 2 pueda funcionar y dicha lista 2 tenga solo las colecciones de viceroy
  #7 (permalink)  
Antiguo 23/05/2011, 11:07
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

hola, de la forma que te digo lo puedes hacer,
mira lo que tienes que hacer es cuando selecciones un valor en la lista 1, que la pagina te recarge, ejecutas la consulta
var_marca= $_GET['marca'];
SELECT distinct categoria.coleccion FROM categoria
WHERE categoria.marca = var_marca ORDER BY coleccion ASC

y de esta forma actualiazas la lista de los valores deseados,

mira para poder actualizar la lista dos dependiendo de la primera:
o lo hacer recargando la pagina, (como te explique)
o lo haces con ajax,

si quieres postea el codigo para ver en realidad lo que tienes

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #8 (permalink)  
Antiguo 23/05/2011, 11:26
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

he encontrado como hacerlo con ajax pero estoy en las mismas, se usa el id y no me vale.

por desgracia no he diseñado la base de datos lo mas eficientemente posible. mis tablas de la base de datos estan asi:
categoria (id_categoria, marca, coleccion, edicion)
producto (id_producto, id_categoria, tipo, referencia, precio, imagen)

y las opciones de busqueda que quiero van a ser:
marca, coleccion, precio

si estas opciones de busqueda estarian en 3 tablas distintas y no se repetirian los campos no tendria ningun problema. pero tal y como he diseñado la base de datos no puedo hacerlo asi.

pues eso, que sigo con la duda de como puedo hacer que cuando escojo una opcion de la lista 1 (ejemplo viceroy), se almacene en la una variable "var_marca" para que asi la consulta de la lista 2 pueda funcionar y dicha lista 2 tenga solo las colecciones de viceroy.
funcionara esto? o las variable solo es posible pasarlas al refrescar la pagina? lo mismo pregunto para las consultas: si una consulta da un resultado que depende de una variable, si se cambia el valor de la variable la consulta actualizara los datos automaticamente o es necesario refrescar la pagina?

gracias rodno voy a probar eso ultimo que dices... haber si es la solucion
  #9 (permalink)  
Antiguo 23/05/2011, 12:09
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

ya lo he conseguido solo que al refrescar la pagina en la lista 1 vuelve a ponerse el valor por defecto (en la lista 2 todo sale correcto).

¿como puedo hacer para elegir un valor de la lista y al recargar permanezca ese valor, en vez de el valor por defecto?

Última edición por peta555; 23/05/2011 a las 12:31
  #10 (permalink)  
Antiguo 23/05/2011, 12:42
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

estuve viendo mas menos por arribita, antes de ponerme reajustar todo,
el onchange que tienes en el form, mi idea es que fuera el el primer select
<select name="lst_marca" id="lst_marca" onChange="return AlmacenarVariable(lst_marca.value)">

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #11 (permalink)  
Antiguo 23/05/2011, 12:52
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

hola,
lo que tienes que hacer es cuando estes llenando la lista 1
cuando estas dentro del while
vas comprobando que

si la Marca== $_Get['marca']
entonces
echo "<option value=".$row['marca']." selected>".$row['Nombre_marca']."</option>";
else
echo "<option value=".$row['marca']." >".$row['Nombre_marca']."</option>";

seria algo

saludos
y Cualquier duda tira para aca
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #12 (permalink)  
Antiguo 23/05/2011, 12:57
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

tienes toda la razon me habia equivocado poniendo el onChange en el "form". bueno ya lo he cambiado y lo he puesto en el "select" y ahora cuando elijo un valor en la lista 2 no me recarga la pagina.

pero sigo con el problema de que al refrescar la pagina la lista 1 me carga el valor por defecto, y no el que habia elegido. estoy pensando como solucionarlo pero de momento no se me ocurrenada.

el codigo del formulario:

Código HTML:
<form id="avanzada" name="avanzada" method="get" action="busqueda_avanzada_resultado.php">
                    <table width="500">
                      <tr>
                        <td width="80" align="right" valign="middle" class="texto_gris">Marca</td>
                        <td width="408" align="left" valign="middle" class="texto_gris">                        
                        <select name="lst_marca" id="lst_marca" onChange="return AlmacenarVariable(lst_marca.value)">
                        <?php
						do {
						?>
                        <option value="<?php echo $row_rsMarca['marca']?>"><?php echo $row_rsMarca['marca']?></option>
                        <?php
						} while ($row_rsMarca = mysql_fetch_assoc($rsMarca));
						$rows = mysql_num_rows($rsMarca);
						if($rows > 0) {
							mysql_data_seek($rsMarca, 0);
							$row_rsMarca = mysql_fetch_assoc($rsMarca);
						}						
						?>
                        </select></td>
                      </tr>
                      <tr>
                        <td align="right" valign="middle" class="texto_gris">Colección</td>
                        <td align="left" valign="middle" class="texto_gris">
                        <select name="lst_coleccion" id="lst_coleccion" title="<?php echo $row_rsColeccion['coleccion']; ?>">
                        <?php
						do {
						?>
                        <option value="<?php echo $row_rsColeccion['coleccion']?>"><?php echo $row_rsColeccion['coleccion']?></option>
                        <?php
						}while ($row_rsColeccion = mysql_fetch_assoc($rsColeccion));
						$rows = mysql_num_rows($rsColeccion);
						if($rows > 0) {
							mysql_data_seek($rsColeccion, 0);
							$row_rsColeccion = mysql_fetch_assoc($rsColeccion);
						}
						?>
                        </select></td>
                      </tr>
                      <tr>
                        <td align="right" valign="middle" class="texto_gris">Precio entre</td>
                        <td align="left" valign="middle" class="texto_gris">
                        <select name="lst_precio1" id="lst_precio1">
                          <option>50</option>
                          <option selected="selected">100</option>
                          <option>150</option>
                          <option>200</option>
                          <option>250</option>
                          <option>300</option>
                          <option>400</option>
                          <option>500</option>
                          <option>1000</option>
                          <option>5000</option>
                        </select>
                        &nbsp;y&nbsp;
                        <label for="lst_precio2"></label>
                        <select name="lst_precio2" id="lst_precio2">
                          <option>50</option>
                          <option>100</option>
                          <option>150</option>
                          <option selected="selected">200</option>
                          <option>250</option>
                          <option>300</option>
                          <option>400</option>
                          <option>500</option>
                          <option>1000</option>
                          <option>5000</option>
                        </select>&nbsp;</td>
                      </tr>
                    </table>
                      <label for="lst_marca"></label>
                      <br />
                      <input name="button" type="image" id="button" src="imagenes/boton_buscar.png" />
                  </form> 

y aqui el codigo de la select que creo que hay que tocar para que refresque la pagina con el valor elegido (y no el de por defecto):

Código HTML:
<select name="lst_marca" id="lst_marca" onChange="return AlmacenarVariable(lst_marca.value)">
                        <?php
						do {
						?>
                        <option value="<?php echo $row_rsMarca['marca']?>"><?php echo $row_rsMarca['marca']?></option>
                        <?php
						} while ($row_rsMarca = mysql_fetch_assoc($rsMarca));
						$rows = mysql_num_rows($rsMarca);
						if($rows > 0) {
							mysql_data_seek($rsMarca, 0);
							$row_rsMarca = mysql_fetch_assoc($rsMarca);
						}						
						?>
                        </select> 
  #13 (permalink)  
Antiguo 23/05/2011, 13:05
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

hola, prueba con estas cambios

<form id="avanzada" name="avanzada" method="get" action="busqueda_avanzada_resultado.php">
<table width="500">
<tr>
<td width="80" align="right" valign="middle" class="texto_gris">Marca</td>
<td width="408" align="left" valign="middle" class="texto_gris">
<select name="lst_marca" id="lst_marca" onChange="return AlmacenarVariable(lst_marca.value)">
<?php
do {
if ($row_rsMarca['marca']==$_GET["marca"])
echo '<option value="'. $row_rsMarca['marca'].'" selected>'.$row_rsMarca['marca'].'</option>';
else
echo '<option value="'. $row_rsMarca['marca'].'">'.$row_rsMarca['marca'].'</option>';
?>

<?php
} while ($row_rsMarca = mysql_fetch_assoc($rsMarca));
$rows = mysql_num_rows($rsMarca);
if($rows > 0) {
mysql_data_seek($rsMarca, 0);
$row_rsMarca = mysql_fetch_assoc($rsMarca);
}
?>
</select></td>
</tr>
<tr>
<td align="right" valign="middle" class="texto_gris">Colección</td>
<td align="left" valign="middle" class="texto_gris">
<select name="lst_coleccion" id="lst_coleccion" title="<?php echo $row_rsColeccion['coleccion']; ?>">
<?php
do {
?>
<option value="<?php echo $row_rsColeccion['coleccion']?>"><?php echo $row_rsColeccion['coleccion']?></option>
<?php
}while ($row_rsColeccion = mysql_fetch_assoc($rsColeccion));
$rows = mysql_num_rows($rsColeccion);
if($rows > 0) {
mysql_data_seek($rsColeccion, 0);
$row_rsColeccion = mysql_fetch_assoc($rsColeccion);
}
?>
</select></td>
</tr>
<tr>
<td align="right" valign="middle" class="texto_gris">Precio entre</td>
<td align="left" valign="middle" class="texto_gris">
<select name="lst_precio1" id="lst_precio1">
<option>50</option>
<option selected="selected">100</option>
<option>150</option>
<option>200</option>
<option>250</option>
<option>300</option>
<option>400</option>
<option>500</option>
<option>1000</option>
<option>5000</option>
</select>
&nbsp;y&nbsp;
<label for="lst_precio2"></label>
<select name="lst_precio2" id="lst_precio2">
<option>50</option>
<option>100</option>
<option>150</option>
<option selected="selected">200</option>
<option>250</option>
<option>300</option>
<option>400</option>
<option>500</option>
<option>1000</option>
<option>5000</option>
</select>&nbsp;€</td>
</tr>
</table>
<label for="lst_marca"></label>
<br />
<input name="button" type="image" id="button" src="imagenes/boton_buscar.png" />
</form>

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #14 (permalink)  
Antiguo 23/05/2011, 13:11
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

hola,
pero cuando tu deseas cambiar el valor de la lista 2, que otra cosa tu deseas que haga?

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #15 (permalink)  
Antiguo 23/05/2011, 13:40
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

gracias por intentarlo pero me sigue haciendo lo mismo.

lista1=marcas
lista2=colecciones

cuando elijo una opcion en la lista de marcas quiero que se refresque la pagina, que se quede el valor elegido, y que en la lista de colecciones aparezcan las colecciones de la marca elegida.
cuando elijo una coleccion en la lista de colecciones quiero que no haga nada.
despues eligo el precio y le doy al boton de buscar.

parece que todo va bien menos lo de la lista de marcas, que al refrescar la pagina no se queda el valor elegido, sino el de pordefecto. me kaguen...pues no veo komo hacerlo. no me funciona de ninguna manera.
  #16 (permalink)  
Antiguo 23/05/2011, 14:19
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Mensaje Respuesta: buscador avanzado

Este el problema de siempre. Los selects dependientes.

Yo creo que lo mejor sería hacerlo con AJAX porque te evitas el refresco de la página y te quitas el problema de que se te deselecciona el resultado.

Si quieres seguir haciendo de la manera tradicional, tendrás que guardar que valor eligió el usuario (enviando el valor mediante el formulario) y en el php tendrás que comparar el valor elegido por el usuario con las filas devueltas por la consulta sql y poner como selected el que coincida. Esta última forma me parece mucho más complicada.
  #17 (permalink)  
Antiguo 23/05/2011, 14:20
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

hola, posteame el codigo completo, todo, hasta donde tu tienes las consultas, la funcion de javascript

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #18 (permalink)  
Antiguo 23/05/2011, 14:54
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

buenas, una vez mas
aqui te pongo un ejemplo funcionando 100%

BD de Prueba

Código PHP:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- 
Base de datos: `productos`
--

-- --------------------------------------------------------

--
-- 
Estructura de tabla para la tabla `colecciones`
--

CREATE TABLE `colecciones` (
  `
idvarchar(10NOT NULL,
  `
id_marcavarchar(10NOT NULL,
  `
coleccionvarchar(20NOT NULL
ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- 
Volcar la base de datos para la tabla `colecciones`
--

INSERT INTO `colecciones` (`id`, `id_marca`, `coleccion`) VALUES
('1''Reloj''Rolex'),
(
'2''Reloj''Seiko'),
(
'3''Cadena''De Plata'),
(
'4''Cadena''De Oro');

-- --------------------------------------------------------

--
-- 
Estructura de tabla para la tabla `marca`
--

CREATE TABLE `marca` (
  `
idint(2NOT NULL,
  `
marcavarchar(20NOT NULL,
  `
otravarchar(20NOT NULL,
  
PRIMARY KEY  (`id`)
ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- 
Volcar la base de datos para la tabla `marca`
--

INSERT INTO `marca` (`id`, `marca`, `otra`) VALUES
(1'Reloj'''),
(
2'Cadena'''); 
Código PHP:
<?php


        $conexion 
mysql_connect("localhost""root""rodno123");
        
mysql_select_db("productos"$conexion);

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script type="text/javascript">
function FiltrarMarca(marca)
   {
           var x=document.forms.Form;
           x.action="index.php?marca="+marca;
          x.submit();
          
   }

</script>
</head>
<form method="post" name="Form" enctype="text/plain">

Marca<select size="1" id="Select_Marca" name="Select_Marca" onchange="return FiltrarMarca(Select_Marca.value);">
<?php
$sql
="Select marca from marca";
$result=mysql_query($sql$conexion);

     if (!isset(
$_GET['marca']))
     echo  
"<option >Debe selecionar una marca...</option>";
     
     while (
$row=mysql_fetch_array($result))
      {
        if(
$row['marca']==$_GET['marca'])

            echo  
"<option  value=".$row['marca']." selected>".$row['marca']."</option>";


                     else
                      echo   
"<option  value=".$row['marca']." >".$row['marca']."</option>";
      }
    
?>

</select>
<br />
Coleccion <select size="1" id="categoria">
<?php
if (isset($_GET['marca']))
{
$sql="Select coleccion from colecciones Where id_marca='".$_GET['marca']."'";
$result_2=mysql_query($sql$conexion);

     
     while (
$row=mysql_fetch_array($result_2))
      {
       

            echo  
"<option  value=".$row['coleccion'].">".$row['coleccion']."</option>";

      }
  }
  else
  echo  
"<option >Debe Seleccionar una marca</option>";
    
?>

</select>
</form>
</body>
</html>
saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #19 (permalink)  
Antiguo 23/05/2011, 15:03
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

este es el codigo de la pagina:

Código HTML:
<?php require_once('Connections/conexion.php'); ?>
<?php
if (!isset($_SESSION)) {
  session_start();
}

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_conexion, $conexion);
$query_rsMarca = "SELECT distinct categoria.marca FROM categoria ORDER BY marca ASC";
$rsMarca = mysql_query($query_rsMarca, $conexion) or die(mysql_error());
$row_rsMarca = mysql_fetch_assoc($rsMarca);
$totalRows_rsMarca = mysql_num_rows($rsMarca);

$lst_marca_rsColeccion = "-1";
if (isset($_GET['lst_marca'])) {
  $lst_marca_rsColeccion = $_GET['lst_marca'];
}
mysql_select_db($database_conexion, $conexion);
$query_rsColeccion = sprintf("SELECT distinct categoria.coleccion FROM categoria WHERE categoria.marca = %s ORDER BY coleccion ASC", GetSQLValueString($lst_marca_rsColeccion, "text"));
$rsColeccion = mysql_query($query_rsColeccion, $conexion) or die(mysql_error());
$row_rsColeccion = mysql_fetch_assoc($rsColeccion);
$totalRows_rsColeccion = mysql_num_rows($rsColeccion);
?>

<script language="JavaScript" type="text/javascript">
function AlmacenarVariable()
{
	var lst_marca=document.forms.avanzada;
	lst_marca.action="busqueda_avanzada.php";
	lst_marca.submit();
}
</script>

<!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=utf-8" />
<title>index.html</title>
<style type="text/css">
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
	text-align: center;
}
</style>
<link href="css/estilos.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="1000" height="845" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr align="center" valign="top">
    <td height="125" align="center" valign="top"td><?php include ("menu_cabecera.php");?></td>
  </tr>
  <tr align="center" valign="top">
    <td height="665"><table width="1000" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="140" height="665" align="center" valign="top"><table width="140" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><?php include ("menu_productos.php");?></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
        </table></td>
        <td width="720" align="center" valign="top">
        
          <table width="720" border="0" cellspacing="0" cellpadding="0">
            <tr><td>&nbsp;</td></tr>
          </table>
          <table width="680" border="0" cellspacing="2" cellpadding="0">
            <tr>
              <td height="25" align="center" valign="middle" background="imagenes/barra_gris_brillo_redondeada.png" class="titulos">
              Busqueda Avanzada</td>
            </tr>
          </table>
          <table width="676" border="0" cellpadding="0" cellspacing="0" class="borde_gris">
            <tr>
              <td height="150" align="center" valign="top"><table width="500" border="0" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="613">&nbsp;</td>
                </tr>
                <tr>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td height="217" align="left" valign="middle" class="texto_gris">
                  <form id="avanzada" name="avanzada" method="get" action="busqueda_avanzada_resultado.php">
                    <table width="500">
                      <tr>
                        <td width="80" align="right" valign="middle" class="texto_gris">Marca</td>
                        <td width="408" align="left" valign="middle" class="texto_gris">                      
                        <select name="lst_marca" id="lst_marca" onChange="return AlmacenarVariable(lst_marca.value)">
                        <?php
						do {
						?>
                        <option value="<?php echo $row_rsMarca['marca']; ?>" selected=""><?php echo $row_rsMarca['marca']; ?></option>
                        <?php
						} while ($row_rsMarca = mysql_fetch_assoc($rsMarca));
						$rows = mysql_num_rows($rsMarca);
						if($rows > 0) {
							mysql_data_seek($rsMarca, 0);
							$row_rsMarca = mysql_fetch_assoc($rsMarca);
						}						
						?>
                        </select></td>  
                      </tr>
                      <tr>
                        <td align="right" valign="middle" class="texto_gris">Colección</td>
                        <td align="left" valign="middle" class="texto_gris">
                        <select name="lst_coleccion" id="lst_coleccion" title="<?php echo $row_rsColeccion['coleccion']; ?>">
                        <?php
						do {
						?>
                        <option value="<?php echo $row_rsColeccion['coleccion']?>"><?php echo $row_rsColeccion['coleccion']?></option>
                        <?php
						}while ($row_rsColeccion = mysql_fetch_assoc($rsColeccion));
						$rows = mysql_num_rows($rsColeccion);
						if($rows > 0) {
							mysql_data_seek($rsColeccion, 0);
							$row_rsColeccion = mysql_fetch_assoc($rsColeccion);
						}
						?>
                        </select></td>
                      </tr>
                      <tr>
                        <td align="right" valign="middle" class="texto_gris">Precio entre</td>
                        <td align="left" valign="middle" class="texto_gris">
                        <select name="lst_precio1" id="lst_precio1">
                          <option>50</option>
                          <option selected="selected">100</option>
                          <option>150</option>
                          <option>200</option>
                          <option>250</option>
                          <option>300</option>
                          <option>400</option>
                          <option>500</option>
                          <option>1000</option>
                          <option>5000</option>
                        </select>
                        &nbsp;y&nbsp;
                        <label for="lst_precio2"></label>
                        <select name="lst_precio2" id="lst_precio2">
                          <option>50</option>
                          <option>100</option>
                          <option>150</option>
                          <option selected="selected">200</option>
                          <option>250</option>
                          <option>300</option>
                          <option>400</option>
                          <option>500</option>
                          <option>1000</option>
                          <option>5000</option>
                        </select>&nbsp;</td>
                      </tr>
                    </table>
                      <br />
                    <input name="button" type="image" id="button" src="imagenes/boton_buscar.png" />
                  </form></td>
                </tr>
              </table>
             </td>
            </tr>
        </table>
        <td width="140" align="center" valign="top"><table width="140" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><?php include ("menu_tienda.php");?></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
        </table></td>
      </tr>
    </table></td>
  </tr>
  <tr align="center" valign="top">
    <td td height="50">
      <table width="1000" border="0" cellspacing="0" cellpadding="0">
      <tr><td width="1000" height="50"><?php include ("menu_pie.php");?></td></tr>
      </table>
    </td>
  </tr>
</table>
<br />
</body>
</html>
<?php
mysql_free_result($rsMarca);

mysql_free_result($rsColeccion);
?> 
espero que veas alguna solucion porque yo no se como seguir.

pd: creo que con ajax no puedo hacerlo, porque implicaria que en la lista 1 me salgan todos los registros de la tabla categorias (saldrian marcas repetidas y no funcionaria bien ya que usa los id de cada campo)
  #20 (permalink)  
Antiguo 23/05/2011, 15:08
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: buscador avanzado

Todo lo que haces con PHP solo se puede hacer con AJAX + PHP, todo depende de lo que te interese más.
  #21 (permalink)  
Antiguo 24/05/2011, 05:01
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

rodno muchas gracias por la molestia. el codigo que me has puesto lo he adaptado a mi proyecto y me ha funcionado bien lo de las 2 listas. pero parece que tengo muy mala suerte porque ahora me da problemas el envio de las variables por GET hacia la pagina que me tiene que mostrar los resultados. el problema son los espacios en blanco en el nombre de marcas y colecciones y tambien algunos caracteres especiales de algunas colecciones.

asique nada, lo voy a dejar por imposible y me voy a quedar con el buscador que ya tenia y que funcionaba muy bien, que solo tenia para elegir la marca y los precios.

lo que me esta dejando asombrado es que en el este buscador viejo que ya tenia los espacios en blanco y caracteres especiales los envia perfectamente por metodo GET. no entiendo porque con el nuevo no me deja...pero bueno. de nuevo gracias por tu tiempo
  #22 (permalink)  
Antiguo 24/05/2011, 06:45
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: buscador avanzado

Hola,
lo unico malo que veo es que te des por vencido, eso de un programador no se puede esperar, porque si no, no vas a lograr lo que quieres hacer,

lo que puedes hacer es refrezcar un poco, y trabajr en otras cosas, y despues le entras fresco y tu veras que poco a poco vas aprendiendo y vas perfeccionando tu estilo, y lograras las metas que te traces, pero lo que no puede sucederte es que te des por vencido...

saludos y disculpa por la muela
rodno
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #23 (permalink)  
Antiguo 24/05/2011, 09:06
 
Fecha de Ingreso: enero-2011
Mensajes: 34
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: buscador avanzado

no me he dado por vencido. de momento lo que habia conseguido lo voy a dejar a buen recaudo y mas adelante a lo mejor lo vuelvo a intentar. de todas formas no soy programador, tengo algunas nociones pero como la cosa se me esta poniendo muy dificil pues no puedo hacer otra cosa que dejarlo y mas adelante quizas volver a probar o interntarlo hacer de otra forma...pero gracias por la ayuda prestada

Etiquetas: avanzado, buscadores
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 00:35.