Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/12/2009, 06:43
Avatar de kanakis
kanakis
 
Fecha de Ingreso: octubre-2008
Mensajes: 69
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: where algo=any?

Nos vemos de nuevo gnzsoloyo :D

Creo que no me he explicado bien o no te he entendido del todo. El problema es que no sólo tengo los campos TIPO y CLASE, son muchos más en realidad (he puesto dos por simplificar).

Imagínate un formulario donde hay 10 campos de tipo List/Menu. Cada uno de estos campos tiene 4 o 5 valores posibles, pero uno de estos valores es "TODOS". Así pues, esta podría ser la selección hecha por el usuario en el FORM:

TIPO=> tipo1 ($tipo)
CLASE=>TODOS ($clase)
MARCA=>TODOS ($marca)
...
COLOR=>blanco ($color)

Es decir, el usuario quiere seleccionar los objetos blancos de tipo1 de cualquier clase y marca.

Para ello lo trataría genéricamente con la siguiente consulta:

Código:
SELECT * FROM TABLA WHERE TIPO='$tipo' 
AND CLASE='$clase' AND MARCA='$marca' AND ... 
AND COLOR='$color';
Traduciendo el valor de las variables tras el envío de estas con POST desde el formulario, la consulta quedaría así:

Código:
SELECT * FROM TABLA WHERE TIPO='tipo1' AND CLASE='CUALQUIERA' 
AND MARCA='CUALQUIERA' AND ... 
AND COLOR='blanco';
En color rojo resalto cuál es mi duda: dado que la consulta es un string fijo (ya que lo que varían son las variables, valga la redundancia), a veces será TIPO, otras CLASE, otras MARCA y otras COLOR los campos que tengan el valor "cualquiera". ¿Qué debe valer pues, el "value" correspondiente a "TODOS" en el formulario para que se realice la consulta correctamente?

Espero haberme explicado mejor ahora, y si ya me habías entendido... mis más sinceras disculpas, pero en ese caso no te he entendido yo a ti :S

Edito: según lo que dices, ¿sería válido hacer esto?

Código:
SELECT * FROM TABLA WHERE TIPO='tipo1' AND CLASE IS NOT NULL 
AND MARCA IS NOT NULL AND ... 
AND COLOR='blanco';

Última edición por kanakis; 10/12/2009 a las 06:48