Ver Mensaje Individual
  #5  
Antiguo 13-11-2010
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Reputación: 20
fidel Va por buen camino
Utilizo algo muy similar que hice hace algunos años para gesitonar torneos internos, lo que pasa que no recuerdo bien los detalles de como lo hice, pero más o menos es así.

Primero hay que generar los partidos y luego ya se reparten en jornadas y campos.

Generar los partidos.

Pon en una tabla auxiliar (o un array) los equipos de 1ª de nombre PRIMERA y en otra tabla (o array) los equipos de 2ª de nombre SEGUNDA, y crea otra tabla auxilar llamada PARTIDOS con dos campos LOCAL, VISITANTE
Recorre con un bucle la tabla PRIMERA y dentro otro bucle para recorrer la tabla SEGUNDA y así vas formando los partidos que vas añadiendo a la tabla PARTIDOS con el equipo de 1ª como local y el de 2ª como visitante. Una vez terminados los bucles tendrás todos los partidos que hay que jugar. Si es a ida y vuelta se añaden los mimos partidos pero invirtiendo el orden de los equipos.

Ahora repartir todos los partidos de la tabla PARTIDOS en las distintas jornadas y campos, esto es un poco trabajoso pero no es dificil, es más dificil de explicar que de hacer. A ver si lo logro.

Necesitaremos otra tabla que puedes llamar JORPARTI con estos campos: JORNADA, FECHA, CAMPO, PARTIDO
Hay que ir recorriendo la tabla PARTIDOS tantas veces como sea necesario (con un bucle While condicionado) hasta que quede vacía (si vamos borrando los partidos que añadimos) o hasta que queden todos marcados como asiganados (si lo hacemos teniendo un campo que ponga asignado). Esto es complicado, sobre todo para explicarlo. Lo intento.

Pongo en una variable "jornada" el valor 1, cojo la fecha de la primera jornada en una variable "fecha" (lo tendrás en algún sitio) y el nº de campos para la primera jornada en otra variable "ncampos" (también lo tendrás en algún sitio), añado un registro en JORPARTI y relleno JORNADA con el valor de "jornada" ), CAMPO con el valor de "ncampos" , FECHA con la "fecha" y PARTIDO con el primer partido de la tabla PARTIDOS que estamos recorriendo, ahora hay que restar 1 al valor de "ncampos" con la condición que si se queda a 0 hay que volver a ponerle el valor máximo de campos existentes, y borrar el registro del partido que hemos añadido.
Después habrá que ir añadiendo en la misma jornada los demás partidos pero contralando que en ellos no haya un equipo que ya esté jugando.

Mejor te pongo un ejemplo porque me estoy liando.

Tabla PRIMERA con 3 registros (3 equipos): Racin, Real, Unión.
Tabla SEGUNDA con 3 registros (3 equipos): Uno, Dos, Tres.
Un bucle recorriendo la tabla PRIMERA y otro dentro recorriendo la tabla SEGUNDA nos da las parejas que vamos añadiendo a la tabla PARTIDOS
Racin Uno
Racin Dos
Racin Tres
Real Uno
Real Dos
Real Tres
Unión Uno
Unión Dos
Unión Tres

Con solo 2 campos para jugar

variables:
jornada:=1
fecha:=15-11-2010
ncampos:=2
partido:=Racin Uno (valor del primer registro)

Añado un registro en JORPARTI y relleno campos con el valor de las variables
JORNADA con variable jornada
FECHA con variable fecha
CAMPO con variable campo
PARTIDO con variable partido

Resto uno al valor de campo pongo un if que si se queda a 0 hay que asignarle el valor 2 (nº de campos que tengo) y sumar uno a jornada (jornada siguiente) y cambiar fecha con la fecha de la siguiente jornada
Borro el primer registro de partidos

Ahora un bucle sin fin hasta que se quede vacia la tabla partidos
Pongo en la variable partido el partido actual (sería Racin Dos)
Aquí hay que comprobar en la tabla JORPART que en esta misma jornada no esté ya alguno de estos dos equipos en otro partido, esto no es dificil de coprobar, en este caso veríamos que el Racin ya está por lo tanto deberíamos avanzar un registro en PARTIDOS coger el nuevo partido y hacer la misma comprobación hasta que ninguno de los dos equipos de este partido esté ya asignado a esa jornada y podamos añadir el partido en esa jornada, en cuyo caso ...

... resto uno al valor de campo pongo un if que si se queda a 0 hay que asignarle el valor 2 (nº de campos que tengo) y sumar uno a jornada (jornada siguiente) y cambiar fecha con la fecha de la siguiente jornada
y borro el registro de partidos (ahora no hace falta avanzar porque al borrar ya me he colocado en el siguiente partido)

Bueno, creo que me he explicado bastante mal, porque no es simple, y tendría que simplificar la explicación, pero espero que te sirva para darte una idea de como se puede hacer, aunque supongo que habrá otra formas y probablemente más fáciles.

A mano te prodría dibujar algo que se entendería mejor.

Un saludo.
Responder Con Cita