Foros del Web » Programando para Internet » PHP »

Aviso de disponibilidad

Estas en el tema de Aviso de disponibilidad en el foro de PHP en Foros del Web. Hola a todos; Trabajo con PHP/Mysql Tengo un buscador de productos con unos 200 campos/parámetros de búsqueda (altura, color...), y quiero ofrecer a los usuarios ...
  #1 (permalink)  
Antiguo 20/06/2005, 05:27
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Aviso de disponibilidad [RESUELTO]

Hola a todos;

Trabajo con PHP/Mysql

Tengo un buscador de productos con unos 200 campos/parámetros de búsqueda (altura, color...), y quiero ofrecer a los usuarios la posibilidad de que, en caso de que al buscar no se encuentre ningún producto, indiquen su dirección de email y en el momento de que haya u producto que contenga las características que ese usuario especificó, enviarle un aviso.

Pero no se me ocurre cómo hacerlo con tantos parámetros de búsqueda.

La idea básica que tengo de hacerlo (si a ustedes se les ocurre otra mejor díganmela), es guardar en una DB los parámetros de búsqueda que ese usuario puso*. Posteriormente cada vez que inserte un nuevo producto comprobar si algún usuario tiene unos parámetros de búsqueda que coincidan con los datos del prouducto**.

(*) Primer problema: ¿Cómo guardo esos datos? teniendo en cuenta que luego tendré que tomarlos de cada usuario para comprobar si los parámetros corresponden.

(**) Segundo problema: ¿Como compruebo que los datos corresponden?

Confío en sus conocimientos...
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.

Última edición por ferent; 05/07/2005 a las 03:40
  #2 (permalink)  
Antiguo 20/06/2005, 12:18
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Señores... un poquito de por favor... seguro que alguien hizo algo parecido...
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #3 (permalink)  
Antiguo 20/06/2005, 12:54
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Mensajes: 753
Antigüedad: 12 años, 7 meses
Puntos: 4
explicate un poco mas eso de 200 campos o parametros para busqueda, pk me parece exagerado, talvez el error no este en como lo queres hacer, sino la estructura de la bd, explicate un poco mejor pk son como 200 campos ok
  #4 (permalink)  
Antiguo 20/06/2005, 13:17
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Bueno, tiré para lo alto, son unos 70 , es un buscador tipo:
http://mobile.de/cgi-bin/searchPubli...=pkw&sprache=3

a los campos me refiero a que cada opción ocupa un campo en mi DB.

Por favor, si no me entendieron díganmelo...
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #5 (permalink)  
Antiguo 20/06/2005, 14:03
 
Fecha de Ingreso: enero-2004
Ubicación:
Mensajes: 108
Antigüedad: 13 años, 10 meses
Puntos: 0
pues si parecen muchos criterios, pero lo harias con where, donde, where c1 = X and c2 = y, and c3 = 5

pero si me parecen muchos, tal vez hay cosas ahi que no son tan necesarias, y las puedes ofrecer en subconsultas.
  #6 (permalink)  
Antiguo 21/06/2005, 02:23
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Vale, pero digamos que si un usuairo solicita que se le avise cuando una oferta corresponda con sus criterios, ¿cómo debería guardar sus criterios en mi db para luego hacer un where c1 = X and c2 = X...?
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #7 (permalink)  
Antiguo 21/06/2005, 05:26
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... osease que quieres guardar la query que el usuario empleó y que no obtubo resultados para estarla ejecutando cada cierto tiempo hasta que haya resultados??; de ser así puñes simplemente guarda la query en un VACHAR... pero creo no queda claro lo que pretendes... bueno eso sí... no queda claro tu problema ...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 21/06/2005, 05:44
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
vale, guardo la consulta en un varchar, por ej.: color=gris and ancho>=500 and elevalunas=true...
el problema está a la hora de introducir un producto, cómo hago para saber aquellos que corresponden al 100% con esas características. ¿Tengo que ir pasando ese producto por cada una de las query de la gente? estamos hablando entonces de cientos de querys (por no decir miles) cada vez que se inserta un producto.

Ahí está el problema. ¿Como lo hago?
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #9 (permalink)  
Antiguo 21/06/2005, 10:47
 
Fecha de Ingreso: enero-2004
Ubicación:
Mensajes: 108
Antigüedad: 13 años, 10 meses
Puntos: 0
creo que lo estas viendo al reves, si se trata de una especie de bometin, es porque cada cierto tiempo lo envias, entonces debes programar una rutina que se este ejecutando cada cierto tiempo, la cual ejecuta esas consultas que guardaste para enviar los resultados correctos.
  #10 (permalink)  
Antiguo 21/06/2005, 11:05
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Lo que pretendía era que nada más insertarse el vehículo se le enviase el informe al/los clientes que tubieran búsquedas coincidentes, ya que son productos que se venden muy rápidamente y es bueno que se le informe al instante.
De todas formas, pese a que tubiera que programar una rutina, eso no me soluciona el problea, creo... o si? de que forma?...
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #11 (permalink)  
Antiguo 28/06/2005, 07:02
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
entonces nada de nada señores? me doy por vencido?
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #12 (permalink)  
Antiguo 29/06/2005, 06:26
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
ferent, creo que lo he conseguido:

ferent, creo que lo he conseguido

Código PHP:
<?PHP

$result_query
=mysql_query("select Campos_a_recuperar from Tu_tabla"); //#1 Obtenemos todos los registros de la tabla de disponibles

 
while ($result=mysql_fetch_assoc($result_query))       //#2 Recorremos todos los registros obtenidos uno a uno.
  
{
    
$coinciden="si";
      while (list (
$clave$val) = each ($result))        //# Para cada registro recorremos los campos uno a uno.
       
{  
        if ( ( !empty(
$result[$clave]) ||               //# Si el campo obtenido del query NO esta vacio ...
               
!empty($_POST[$clave])                   //# ... O el campo recibido por post NO esta vacio ...
             
) &&
             ( 
$result[$clave]!=$_POST[$clave])         //# ... Y ambos campos son diferente ...
           
)
              
$coinciden="no";                          //# ... entonces no hay coincidencias.
       
}

       if (
$coinciden=="si")                            //# Si hubo coincidencias entonces...
       
{                                                //# ... muestra la información para que podamos cotejarla.
          
echo "<br><b>Coincide el registro... ";      
          echo 
"<br> \$_POST: ";
          
print_r ($_POST);                              //# Muestra el array $_POST
          
echo "<br> \$result: ";
          
print_r ($result);                             //# Muestra el array $result
       
}
  }
?>
Te explico un poco el script:

En una tabla (por ejemplo la llamaremos disponible) tienes las condiciones de busqueda que ha especificado cada cliente.
Logicamente cada cliente tendrá sus condiciones particulares, con lo que habrá registros en los que un mismo campo tengo o no un valor.
Al añadir un nuevo articulo, supongo que lo haras a traves de un formulario, eso lo envias luego via post a otro documento .php que será el que inserte el registro.
Antonces ahí mismo verificas se coinciden los criterios de los clientes que lo que has añadido.

Los pasos que realiza el script son:
.- Obtenemos los registros que tienes en tu tabla.
.- Recorremos uno a uno cada registro para ir mirando cada campo y comparandolo con lo obtenido desde el post.
.- Si en el registro y en el post existen un mismo campo que no esten vacio PERO con valor diferente, entonces ese registro NO nos vale.

Yo lo he probado con una tabla de 4 campos y me funciona.

Ya me diras como te ha ido.
  #13 (permalink)  
Antiguo 29/06/2005, 06:50
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Muchísimas gracias por tu dedicación, es admirable. Ahora mismo lo voy a probar.

Una pregunta mentras lo pruebo:
Código:
Logicamente cada cliente tendrá sus condiciones particulares, con lo que habrá registros en los que un mismo campo tengo o no un valor.
¿contemplaste la posiblidad de que no sólo haya en la DB campos un valor (true o flase), sino con varios valores, como colores?

Un saludo y ahora te cuento.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #14 (permalink)  
Antiguo 29/06/2005, 07:04
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Lo que hace es que si en la base de datos obtiene un campo con el nombre referenciaArticulo y en el post recibe una variable con el mismo nombre compara que el contenido sea igual.
O sea, compara que los campos con el mismo nombre tengan el mismo valor.
  #15 (permalink)  
Antiguo 30/06/2005, 02:47
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
¿me podrías especificar de qué forma guardaste las condiciones de búsqueda solicitadas por cada cliente? ¿todos en una misma columna separados por comas, o bien una columna para cada tipo de dato?

Gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #16 (permalink)  
Antiguo 30/06/2005, 04:40
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
vale, lo he entendido al cien por cien, las condiciones de búsqueda se guardan por columnas, y de modo que el nombre de cada columna coincida con el nombre del campo correspondiente del formulario de inserción del producto.

Así todo, como es lógico, tengo que adaptarlo a mis necesidades, como por ejemplo poder hacer una comparación de igualdad con comodines (como un like) ya que en el formulario tengo algún campo de texto donde el usuario puede escribir la marca del producto y a lo mejor es "Creative zen touch" y él sólo pone creative.

Pero el script está muy bien programado. Mi más sincera felicitación y agradecimiento.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #17 (permalink)  
Antiguo 05/07/2005, 02:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Me alegro mucho de que te resulte útil mi script.

Saludos.
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 01:06.