Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/09/2010, 18:34
LOD_Fredy
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Ayuda para crear algoritmo o una forma mas facil de realizar esto

Hola a todos y antes que nada gracias a quienes me han estado ayudando desde que empece a postear para pedir ayuda aqui.

Ahora vengo pidiendo ayuda para generar un algoritmo lo mas simplificado posible (poco codigo), el asunto es el siguiente:

En la pagina que estoy desarrollando, es posible realizar la busqueda de imagenes a partir de ciertos filtros, es aqui donde tengo el problema. Es facil realizar consultas a partir de ciertos campos (los filtros) que llena el usuario pero aqui el detalle es que por ejemplo puede elegir buscar la/s imagen/es a partir de 1 campo que puede ser cualquiera de los 6 que son en total, puede elegir si nos vamos en orden, 2 campos, empezando por el campo 1,2 o 1,3 o 1,4, etc. Puede elegir tambien alereves, empezando por campos 6,5 o 6,4 etc. Lo mismo pasa si eligen 3 y creo hay mas combinaciones, la verdad nisiquiera se cuantas combinaciones serian y pues se me hace algo complicado estar poniendo cada combinaciona mano, ojala alguien sepa de un algoritmo que permita hacer esto mas facil. Aqui dejo un ejemplo de lo que estoy haciendo (a mano) a ver si les queda mas claro:

Código:
//opcion=0 cuando no se seleccionado ningun filtro
	if($arr[0]=="" || $arr[1]=="" || $arr[2]=="" || $arr[3]=="" || $arr[4]=="" || $arr[5]=="")
		$opcion=0;

	//opcion = 1-6 cuando seleccionan 1 filtro cualquiera
	if($arr[0]!="" || $arr[1]=="" || $arr[2]="" || $arr[3]=="" || $arr[4]=="" || $arr[5]=="")
		$opcion=1;
	if($arr[0]=="" || $arr[1]!="" || $arr[2]=="" || $arr[3]=="" || $arr[4]=="" || $arr[5]=="")
		$opcion=2;
	if($arr[0]=="" || $arr[1]=="" || $arr[2]!="" || $arr[3]=="" || $arr[4]=="" || $arr[5]=="")
		$opcion=3;
	if($arr[0]=="" || $arr[1]=="" || $arr[2]=="" || $arr[3]!="" || $arr[4]=="" || $arr[5]=="")
		$opcion=4;
	if($arr[0]=="" || $arr[1]=="" || $arr[2]=="" || $arr[3]=="" || $arr[4]!="" || $arr[5]=="")
		$opcion=5;
	if($arr[0]=="" || $arr[1]=="" || $arr[2]=="" || $arr[3]=="" || $arr[4]=="" || $arr[5]!="")
		$opcion=6;
	
	//opcion = cuando seleccionan 2 filtros cualesquiera
	if($arr[0]!="" || $arr[1]!="" || $arr[2]=="" || $arr[3]=="" || $arr[4]=="" || $arr[5]=="")
		$opcion=7;
	if($arr[0]!="" || $arr[1]=="" || $arr[2]!="" || $arr[3]=="" || $arr[4]=="" || $arr[5]=="")
		$opcion=8;	
	if($arr[0]!="" || $arr[1]=="" || $arr[2]=="" || $arr[3]!="" || $arr[4]=="" || $arr[5]=="")
		$opcion=9;
	if($arr[0]!="" || $arr[1]=="" || $arr[2]=="" || $arr[3]=="" || $arr[4]!="" || $arr[5]=="")
		$opcion=10;
	if($arr[0]!="" || $arr[1]=="" || $arr[2]=="" || $arr[3]!="" || $arr[4]=="" || $arr[5]!="")
		$opcion=11;
	if($arr[0]=="" || $arr[1]=="" || $arr[2]=="" || $arr[3]=="" || $arr[4]!="" || $arr[5]!="")
		$opcion=7;
	if($arr[0]=="" || $arr[1]=="" || $arr[2]=="" || $arr[3]!="" || $arr[4]=="" || $arr[5]!="")
		$opcion=8;	
	if($arr[0]=="" || $arr[1]=="" || $arr[2]!="" || $arr[3]=="" || $arr[4]=="" || $arr[5]!="")
		$opcion=9;
	if($arr[0]=="" || $arr[1]!="" || $arr[2]=="" || $arr[3]=="" || $arr[4]=="" || $arr[5]!="")
		$opcion=10;
	if($arr[0]!="" || $arr[1]=="" || $arr[2]=="" || $arr[3]=="" || $arr[4]=="" || $arr[5]!="")
		$opcion=11;
El valor que tenga opcion lo paso a una funcion que es la que se encarga de realizar la consulta dependiendo del valor de opcion, asi es como se me ha ocurrido hacer esto por el momento. Aun no lo termino por cierto.

arr contiene el arreglo con los 6 filtros, al principio tenia variables unidimensionales.

Gracias y disculpen si tal vez pregunto algo muy sencillo pero ahorita no se me "prende el foco".