Holas.
He de confesaros que nunca me gustó como quedó finalmente el script del Top TrenSim, le veía y le sigo viendo una forma de trabajar rara, pero es que el script que usamos para la librería de descargas, el paFileDB, no es que sea un santo. Voy a tratar de explicaros como funciona más o menos:
Cabe decir que cuando realicé este script, disponía de menos conocimientos sobre este lenguaje de los que dispongo ahora, pero ahora tengo poco tiempo para dedicarlo a modificar scripts. Evidentemente, obviaré el resto de código que interesa poco o nada a los contertulios.
- Código: Seleccionar todo
SELECT cat_id, cat_name FROM pafiledb_cat WHERE cat_parent='0' ORDER BY cat_order ASC
Mediante esa consulta SQL, se obtiene las categorías que se mostrarán en el sistema. Como podeis ver, aquí encuentra explicación de porqué no se muestra los objetos de la categoría
Objetos para rutas: la consulta selecciona las categorías que dependan del nivel 0 (cat_parent='0' ), y no de las subcategorías que existan (como es el caso de los objetos, que en la categoría padre no tiene nada pero si en categorías hijo).
Ahora entramos en un bucle que se repetirá por cada una de las categorías que hayamos obtenido antes.
- Código: Seleccionar todo
SELECT file_id, file_name, file_creator, file_posticon, file_dls, file_rating, file_totalvotes, file_time FROM pafiledb_files WHERE file_catid='".$fila['cat_id']."' ORDER BY file_dls DESC
Mediante esa consulta, obtenemos el archivo más descargado de la categoría determinada por el bucle.
- Código: Seleccionar todo
SELECT file_id, file_name, file_creator, file_posticon, file_dls, file_rating, file_totalvotes, file_time FROM pafiledb_files WHERE file_catid='".$fila['cat_id']."' ORDER BY (file_rating/file_totalvotes) DESC
Y mediante esta consulta obtenemos el archivo más valorado, usando como criterio de ordenación la suma de puntuaciones (file_rating) dividida por los votos efectuados (file_totalvotes) y para la categoría actual del bucle. El criterio de ordenación (ORDER BY (file_rating/file_totalvotes)) está copiado del paFileDB en su opción de ordenar por votos.
Una vez obtenidos ambos datos, el script compara: si la ID (número único que identifica a cada archivo) del archivo más descargado es igual a la del más valorado, muestra sólo uno de los dos (como son el mismo da igual), pero si son distintas, muestra cada uno por separado.
Esto es todo amigos. Por supuesto que si alguien tiene alguna sugerencia, será bienvenida.
Saludos.