Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/09/2015, 15:50
aldefe
 
Fecha de Ingreso: septiembre-2015
Ubicación: Valencia
Mensajes: 1
Antigüedad: 8 años, 7 meses
Puntos: 2
Sistema de elección de alumnos segun un criterio

Hola, buenas noches. Llevo un tiempo siguiendo esta comunidad. Me paso mucho por los subforos de php, jquery, android y java, y no he podido resistirme a publicar una duda. Sin embargo, antes de explicarme y de preguntar, quiero avisar de que, a ser posible, en vez de darme alguna solución, me dieseis alguna pista... me gusta resolver las cosas por mi cuenta

En fin, allá voy. Intentaré ser lo mas concreto posible.

Lo que me traigo entre manos es lo siguiente. Es una web en la que los usuarios que quieren se dan de alta dando una serie de datos, entre ellos una supuesta nota (nota de examen, no de otra cosa!). Luego, a esa nota se le aplica unos cálculos y se obtiene un nuevo valor (llamémosle... x). Además, también seleccionan de una lista una serie de clases por orden de preferencia a la que quieren matricularse. Imaginemos que hay tres clases, y por tanto pueden elegir un maximo de tres opciones. Lo que quiero hacer es que los que más alto tengan el x, entren primero en la clase que han elegido como primera opción. Cuando se hayan acabado las plazas o se haya mirado ya todas las primeras opciones de todos los usuarios, se pase a la segunda opción y se llenen las plazas que falta, y así con la tercera.

Creo que mi objetivo está más o menos claro. Estructuralmente, tengo una base de datos con una única tabla, alumnos, que contiene las filas nombre, nota, x, opción1, opción2, opción3, opciondefinitiva.
Después de mucho pensar, he llegado a esto:
Código PHP:
$cons_ordenar_alumnos_opcion1 mysqli_query("SELECT * FROM alumnos ORDER BY opcion1");
$i=0;
while(
$filtrado1 mysqli_fetch_array($cons_ordenar_alumnos_opcion1)) {
    
$i++;
    
$algo mysqli_query("UPDATE alumnos SET opciondefinitiva = '".$filtrado1['opcion1']."' WHERE nombre= '".$filtrado1['nombre']."'") or die (mysqli_error());

Pero claro. Esto hace lo que yo quiero, aunque sin tener en cuenta que solo pueden haber 3 tuplas con la misma opciondefinitiva. Y ahí me he quedado. Básicamente necesito alguna pista que me oriente. Tal vez sería bueno empezar por decirme si la respuesta está en añadir algo al código sql o al php. Había pensado en agrupar todas las tuplas en función de opcion1, ordenadas porx, algo así como
Código SQL:
Ver original
  1. SELECT * FROM alumnos GROUP BY opcion1 ORDER BY x ASC
.. y de alguna forma, pedir solo los 3 primeros resultados de cada grupo, algo así como:
Código SQL:
Ver original
  1. LIMIT 3
pero sin usar funciones agregadas creo que no puedo poner.
Código SQL:
Ver original
  1. GROUP BY

En fin, espero vuestras pistas. Si la solución es tan sencilla que es imposible dar pistas, pues nada... Pero si es posible orientarme hacia la respuesta, mejor. Gracias!

Última edición por aldefe; 15/09/2015 a las 15:53 Razón: Cambio del tipo de seguimiento