Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/12/2005, 19:35
Avatar de hieloverde
hieloverde
 
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Pregunta Separación de registros iguales: PHP Mysql

Hola a todos,

Se que cuando se ve un post tan largo como este no dan ni ganas de leerlo, pero para lo siguiente me gustarían mucho las opiniones de los más phperos posibles o de cualquiera que pueda dar una idea, solo necesito un empujón con la lógica. Del código yo me encargo. Es que ya llevo varios días encerrado en el problema, no pido todo hecho, solo un pequeño aventón.

Estoy haciendo un pequeño selector de registros (canciones para ser mas exacto) en PHP y Mysql. De una lista de categorías se tienen que seleccionar las canciones correspondientes, pero la selección tiene que empezar con aquellas que contengan menos canciones.

Las categorías están contenidas en un array secuencial, asi:

Código PHP:
/* Estas son las categorias */
$categoria[0]='POP'/* Tiene 10 canciones */
$categoria[1]='BALADA'/* Tiene 25 canciones */
$categoria[2]='RANCHERO';/* Tiene 5 canciones */
$categoria[3]='BANDA'/* Tiene 6 canciones */ 
Como pueden apreciar las categorías no están ordenadas por el numero de melodías sino por el orden que el usuario le da en un principio, para ordenarlas hago un conteo de las canciones que tiene cada una y los almaceno en otro array llamado $conteo respetando los índices y luego ordeno el array por valores usando la función asort() para que una vez echa la selección de las canciones pueda volver a ordenarlas y mostrarlas en pantalla como debe ser:

El orden por número de canciones quedaria así:

Código PHP:
/* Estas son las categorias ordenadas por el numero de canciones */
$conteo[2]=5/* RANCHERO */
$conteo[3]=6/* BANDA */
$conteo[0]=10/* POP */
$conteo[1]=25/* BALADA */ 
Entonces basándome en los índices reordenados por numero hago la selección de las canciones, 2,3,0,1. Esto lo hago sin problemas, el problema real comienza al implementar una separación de interprete, esto es para que el mismo interprete de una cancion no pueda ser seleccionado sino hasta que pasen un numero determinado de canciones de otros interpretes distintos, por ejemplo 10 o sea el interprete no se puede seleccionar hasta que pasen 10 canciones como mínimo.

Y como la selección la hago dependiendo el numero de canciones de cada categoría y no en el orden en que se van a mostrar en pantalla (como quiere el usuario) pues no se como controlar la separación de los interpretes. Probé almacenado los interpretes en una tabla aparte conforme se van seleccionando y usando en la consulta para seleccionar la canción la cláusula “NOT IN” pero no me funciono por que el orden en que se eligen las canciones no es como se van a mostrar al final, entonces nunca va a quedar la separación correctamente. Se entiende?

Espero que alguien me pueda dar alguna idea de cómo se puede implementar la lógica para separar los interpretes, si algo no quedo entendible háganme saber que parte no es clara y lo vuelvo a explicar.

Saludos y de antemano 1000 gracias.
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico