Upload de archivos al servidor - Página datoseventos.php

El archivo 'datoseventos.php' tiene por objetivo permitir la registración de comidas para una determinada fecha, su eliminación y finalmente la recuperación de las comidas para que se muestren en el calendario.

datoseventos.php
<?php

header('Content-Type: application/json');

require("conexion.php");

$conexion = retornarConexion();

switch ($_GET['accion']) {
    case 'listar':
        $datos = mysqli_query($conexion, "select codigo as id,
                                                 titulo as title,
                                                 inicio as start,
                                                 fin as end
                                             from eventoscomida");
        $resultado = mysqli_fetch_all($datos, MYSQLI_ASSOC);
        echo json_encode($resultado);
        break;

    case 'agregar':
        $archi = $_FILES['Archivo']['name'];
        $ext = pathinfo($archi, PATHINFO_EXTENSION);
        if ($ext == 'jpg') {
            $fechahora = $_POST['FechaInicio'] . ' ' . $_POST['HoraInicio'];
            $respuesta = mysqli_query($conexion, "insert into eventoscomida(titulo,inicio,fin) values('$_POST[Titulo]','$fechahora',date_add('$fechahora', interval 15 minute))");
            $valor = mysqli_insert_id($conexion);
            move_uploaded_file($_FILES['Archivo']['tmp_name'], 'fotos/' . $valor . '.' . $ext);
            echo json_encode($respuesta);
        } else
            echo "error";
        break;

    case 'borrar':
        $respuesta = mysqli_query($conexion, "delete from eventoscomida where codigo=$_GET[codigo]");
        echo json_encode($respuesta);
        break;
}

Desde la página 'index.html' se inicializa la propiedad 'events' del calendario:

     events: 'datoseventos.php?accion=listar',

Luego significa que se llamará a la página 'datoseventos.php' pasando como parámetro GET la cadena 'listar'. Luego se ejecuta el primer case del switch:

    case 'listar':
        $datos = mysqli_query($conexion, "select codigo as id,
                                                 titulo as title,
                                                 inicio as start,
                                                 fin as end
                                             from eventoscomida");
        $resultado = mysqli_fetch_all($datos, MYSQLI_ASSOC);
        echo json_encode($resultado);
        break;

Como vemos procedemos a recuperar el código, título, feha y hora de inicio y fin del evento de la tabla 'eventoscomida'.

Cuando desde la página 'index.html' se presiona el botón de agregar una comida se ejecutará el case de 'agregar':

    case 'agregar':
        $archi = $_FILES['Archivo']['name'];
        $ext = pathinfo($archi, PATHINFO_EXTENSION);
        if ($ext == 'jpg') {
            $fechahora = $_POST['FechaInicio'] . ' ' . $_POST['HoraInicio'];
            $respuesta = mysqli_query($conexion, "insert into eventoscomida(titulo,inicio,fin) values('$_POST[Titulo]','$fechahora',date_add('$fechahora', interval 15 minute))");
            $valor = mysqli_insert_id($conexion);
            move_uploaded_file($_FILES['Archivo']['tmp_name'], 'fotos/' . $valor . '.' . $ext);
            echo json_encode($respuesta);
        } else
            echo "error";
        break;

Lo primero que hacemos es recupear la extensión del archivo subido al servidor y proceder a ver si es de tipo 'jpg':

        $archi = $_FILES['Archivo']['name'];
        $ext = pathinfo($archi, PATHINFO_EXTENSION);
        if ($ext == 'jpg') {

En caso afirmativo procedemos mediante la función 'move_uploaded_file' a almacenarlo en la subcarpeta 'fotos' y le damos como nombre el 'id' que se genera automáticamente en la tabla 'eventoscomida'.

Finalmente cuando se borra una comida del calendario se ejecuta el bloque:

    case 'borrar':
        $respuesta = mysqli_query($conexion, "delete from eventoscomida where codigo=$_GET[codigo]");
        echo json_encode($respuesta);
        break;

Tengamos en cuenta que tenemos un tercer archivo que nos retorna la conexión a la base de datos.

conexion.php
<?php

function retornarConexion() {
    $server="localhost";
    $usuario="root";
    $clave="";
    $base="base1";
    $con=mysqli_connect($server,$usuario,$clave,$base) or die("problemas") ;
    mysqli_set_charset($con,'utf8'); 
    return $con;
}