entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

-1voto

Cuadro eliminatorias pdf

Hola,

Tengo que crear un cuadro de eliminatorias de este estilo:
enter image description here

Estoy creando una página web con php y quisiera crear un pdf con un cuadro similar a ese, estoy usando la libreria fpdf. La cuestión es que no he visto nada por ahí para poder modificar a mi antojo y usar. No se si sería recomendable usar otra libreria.

El cuadro se genera según el número de competidores que le lleguen, hay distintas categorias de competición y cada categoría tiene un cuadro con sus competidores, pero todas se exportan al mismo pdf. La cuestión es si me podeis dar alguna indicanción de como empezar a generar los cuadros de forma dinámica, ya que puede ser que haya 8 competidores, 16 competidores, etc o casos en los que haya competidores impares y se tenga que restructurar el cuadro. Estoy un poco perdido y agradecería cualquier ayuda.

Muchas gracias por vuestro tiempo!

3 Respuestas

0voto

Nebur Puntos1140

Me respondo a mi mismo porque creo que al final dí con la solución válida para mi caso, por si a alguien le sirve:

*2N - P**
Donde N es el numero de jugadores totales y P la potencia de 2 superior mas cercana al numero de competidores. Y para calcular el numero de eliminatorias calculo el logaritmo en base 2 de P y lo redondeo al numero entero mas cercano.

1voto

carlossevi Puntos63580

La verdad es que si no tienes nada de código todavía escrito, es difícil que alguien te vaya a responder a una pregunta tan extensa, ya que según lo enuncias la cosa puede complicarse bastante.

No sé si hay alguna librería que encaje más y simplifique las cosas, pero yo he utilizado FPDF y aunque se vuelve farragosa te da la bastante libertad para "dibujar" lo que pretendes. Yo utilizaría fundamentalmente:

  • GetX() y GetY() para poder conocer durante el script dónde tienes situado el puntero.
  • SetX(), SetY() y SetXY() para establecer el puntero antes de dibujar una Cell().
  • Line() para dibujar todas las líneas de uniones.
  • Image() para adornar el cuadro (por ejemplo, el dibujo de la copa).

En primer lugar necesitarás escribir un algoritmo que recorra el número de participantes y dibuje las celdas correspondientes en las coordenadas que vaya calculando.

Por el momento no voy a profundizar más en la solución hasta que vayas diciendo en qué punto necesitas ayuda.

0voto

Leonardo-Tadei comentado

Estoy de acuerdo con @carlossevi,

tal vez te sirva armar el cuadro en HTML desde PHP, para familiarizarte con el algoritmo, y luego pasarlo a PDF. De esta manera separás el problema algorítmico de generar la llave del problema de generar un PDF.

0voto

Nebur comentado

Gracias a ambos por las respuestas. No he puesto nada de código porque aún estaba en fase "de pensar como hacerlo" ;). Por ahora he decidido hacerlo con fpdf y estoy en fase de crear el algoritmo para ir dibujando las celdas, si tengo alguna duda con el código ya lo posteare aquí a ver si podeis echarme una mano. Muchas gracias.

0voto

Nebur Puntos1140

Hola de nuevo,

Tengo un problema a la hora de generar el algoritmo. No se bien que "fórmulas matemáticas" usar para saber cuantas eliminatorias habria en la primera ronda, cuantas en la segunda, etc. Me explico:

Imaginemos que tengo 17 competidores, en la primera ronda habría 8 eliminatorias (4 de cada lado, con un total de 16 competidores, como se ve en la imagen del primer post), pero en la segunda ronda habría que meter ese competidor que libró la primera ronda.
Si los competidores siempre fueran una potencia de 2 no habria problema porque no habria competidores que libraran rondas ni nada. El tema es que no se cuantos competidores habrá y por lo tanto tengo que tener una fórmula matemática para calcular de forma dinámica cuantas rondas habrá y cuantos competidores en cada ronda. Tendría que ser una formula que valiera para todos los casos, tanto para uno como el de la imagen del primer post, como para el de la imagen de este post (pasando por todos los posibles casos)
enter image description here

Espero haberme explicado más o menos bien y a ver si alguien puede darme unas indicaciones de como sería esa fórmula mas o menos.

Muchas gracias.

0voto

Peter comentado

  • Estas publicando esto como una respuesta a la pregunta principal y no lo es.
  • Solo tu eres notificado de la respuesta a tu propia pregunta.
  • Para dudas nuevas, crea preguntas nuevas.

Crea una pregunta nueva y borro esta respuesta.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta