# Examen - El debate del día

En este examen se debe crear un programa para que los visitantes puedan plantear debates diarios (un sólo debate por día con dos respuestas posibles) y votar cada respuesta.

## El debate del día - Tabla

Sólo se utilizará una tabla que contenga, al menos, los siguientes campos:

- la fecha,
- la pregunta,
- la primera respuesta,
- el número de votos de la primera respuesta,
- la segunda respuesta,
- el número de votos de la segunda respuesta.

## El debate del día - Calendario

Para generar el calendario, se puede utilizar esta función, que requiere dos argumentos:

- el primer argumento es la fecha en formato aaaa-mm-dd,
- si el segundo argumento es la cadena 'anyadir', los días sin debate tienen un enlace a anyadir1.php para poder editarlos, y si es la cadena 'leer', los días con debate tienen un enlace a index.php para poder ver el debate de ese día.

    <?php
    function calendario ($fecha, $opciones)
    {
        global $db, $dbDebates;

        $opcion1 = 'anyadir';
        $opcion2 = 'leer';

        date_default_timezone_set('Europe/Madrid');
        if (!ctype_digit(substr($fecha, 5, 2))||!ctype_digit(substr($fecha, 8, 2))
            ||!ctype_digit(substr($fecha, 0, 4))) {
            $fecha = date('Y-m-d');
        } elseif (!checkdate((int)substr($fecha, 5, 2), (int)substr($fecha, 8, 2),
                        (int)substr($fecha, 0, 4))) {
            $fecha = date('Y-m-d');
        }
        $diaInicial = substr($fecha, 8, 2);
        $mes     = substr($fecha, 5, 2);
        $anyo    = substr($fecha, 0, 4);

        $esBisiesto = (($anyo%400 == 0) || (($anyo%100 != 0) && ($anyo%4 == 0)))
                        ? '1' : '0';
        $duraMeses = ($esBisiesto) ?
            array ( 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31) :
            array ( 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31);
        $meses = array('', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo',
                            'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre',
                            'Noviembre', 'Diciembre');

        if ($diaInicial > $duraMeses[(int)($mes)-1]) {
            $fechaAnt = date('Y-m-d', mktime(0, 0, 0, $mes-1, $duraMeses[(int)($mes)-1], $anyo));
        } else {
            $fechaAnt = date('Y-m-d', mktime(0, 0, 0, $mes-1, $diaInicial, $anyo));
        }
        $diaAnt  = substr($fechaAnt, 8, 2);
        $mesAnt  = substr($fechaAnt, 5, 2);
        $anyoAnt = substr($fechaAnt, 0, 4);

        if ($diaInicial > $duraMeses[(int)($mes)+1]) {
            $fechaSig = date('Y-m-d', mktime(0, 0, 0, $mes+1, $duraMeses[(int)($mes)+1], $anyo));
        } else {
            $fechaSig = date('Y-m-d', mktime(0, 0, 0, $mes+1, $diaInicial, $anyo));
        }
        $diaSig  = substr($fechaSig, 8, 2);
        $mesSig  = substr($fechaSig, 5, 2);
        $anyoSig = substr($fechaSig, 0, 4);

        $jd = gregoriantojd($mes, 1, $anyo);
        $dia = (jddayofweek($jd, 0)+6)%7;
        $dias = array ('L', 'M', 'X','J','V','S','D');
        $diaSemana = $dias[$dia];

        print "<div class=\"calendario\">\n  <table border=\"1\" class=\"calendario\" >\n";
        if ($opciones==$opcion1) {
            print "    <caption><a href=\"anyadir1.php?fecha=$fechaAnt\">&lt;&lt;</a> ".
                $meses[(int)($mes)]." de $anyo <a href=\"anyadir1.php?fecha="
                ."$fechaSig\">&gt;&gt;</a>
        </caption>\n";
        } else {
            print "    <caption><a href=\"index.php?fecha=$fechaAnt\">&lt;&lt;</a> "
                .$meses[(int)($mes)]." de $anyo <a href=\"index.php?fecha="
                ."$fechaSig\">&gt;&gt;</a></caption>\n";
        }
        print "    <tr>\n      <th>L</th>\n      <th>M</th>\n      <th>X</th>
          <th>J</th>\n      <th>V</th>\n      <th>S</th>\n      <th>D</th>\n    </tr>\n";
        for ($n=0; $n<=5; $n++) {
            $num_inicio = 1-$dia+$n*7;
            if ($num_inicio <= $duraMeses[(int)($mes)]) {
                print "    <tr>\n";
                for ($i=0; $i<7; $i++) {
                    $num = $num_inicio + $i;
                    if ($num > 0 && $num <= $duraMeses[(int)($mes)]) {
                        if ($opciones==$opcion1) {
                            $consulta = "SELECT COUNT(*) FROM $dbDebates WHERE "
                                ."fecha='$anyo-$mes-".sprintf("%02d", $num)."'";
                            $result = $db->query($consulta);
                            if (!$result) {
                                print "      <td>$num</td>\n";
                            } elseif ($result->fetchColumn()>0) {
                                print "      <td>$num</td>\n";
                            } else {
                                print "      <td class=\"enlace\"><a href=\"anyadir1.php"
                                ."?fecha=$anyo-$mes-".sprintf("%02d", $num)
                                ."\">$num</a></td>\n";
                            }
                        } elseif ($opciones==$opcion2) {
                            $consulta = "SELECT COUNT(*) FROM $dbDebates WHERE "
                                ."fecha='$anyo-$mes-".sprintf("%02d", $num)."'";
                            $result = $db->query($consulta);
                            if (!$result) {
                                print "      <td>$num</td>\n";
                            } elseif ($result->fetchColumn()>0) {
                                print "      <td class=\"enlace\"><a "
                                  ."href=\"index.php?fecha=$anyo-$mes-"
                                  .sprintf("%02d", $num)."\">$num</a></td>\n";
                            } else {
                                print "      <td>$num</td>\n";
                            }
                        }
                    } else {
                        print "      <td></td>\n";
                    }
                }
                print "    </tr>\n";
            }
        }
        print "  </table>\n</div>\n\n";
    }
    ?>

Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.