Weekly Booking

0

I'm developing a scheduling system and it's almost all right though a question arose I need to create an option for weekly scheduling if the user clicks on the weekly schedule he schedules all week at the time chosen by the client something like this: / p>

Cliente Jose Horário 13:00 as 14:00 Agendamento semanal ? sim !

Then the system would schedule for it:

segunda das 13:00 as 14:00 terça das 13:00 as 14:00 quarta das 13:00 as 14:00 quinta das 13:00 as 14:00 sexta das 13:00 as 14:00

Do not need to show the code just help me in the logic I think is enough already.

    
asked by anonymous 15.06.2015 / 16:40

1 answer

0

I worked with a schedule a few days, the logic is as follows:

Give the start date and end date option.

Make an appointment at the bank for appointments:

$sql = "SELECT * FROM agendamento WHERE data_inicio >= CURDATE();

Make a structure that assembles these weekly occurrences:

$eventos = Array();
foreach ($res as $row){

    if ($row['semanal'] == 1){

        $data_inicio = $row['data_inicio'];
        $data_fim = $row['data_fim'];

        // Calcule o intervalo das datas em dias
        $intervalo == IntervaloDias($data_inicio, $data_fim);

        // Data do evento (atual)
        $data = $data_inicio;
        for($i = 0; $i < $intervalo; $i++){
            $eventos[] = Array(
                'data_inicio' => $data,
                'data_fim' => $data,
                'hora_inicio' => $row['hora_inicio'],
                'hora_fim' => $row['hora_fim']
            );

            // Adicione um dia para próxima data
            $data = AddDia($data);
        }
    } else {
        // Outros tipos de evento
        $eventos[] = Array(
            'data_inicio' => $row['data_inicio'],
            'data_fim' => $row['data_fim'],
            'hora_inicio' => $row['hora_inicio'],
            'hora_fim' => $row['hora_fim']
        );
    }
}

If you do not want an end date, put in the code a date limitation, for example:

$maxdata = AddDia(Date(), 2*365); // Data máxima 2 anos

foreach ($res as $row){
    $data_inicio = $row['data_inicio'];
    $data_fim = empty($row['data_fim']) ? $maxdata : $row['data_fim'];

    // Calcule o intervalo das datas em dias
    $intervalo == IntervaloDias($data_inicio, $data_fim);

If you did not want the days of the weekend:

// Adicione um dia para próxima data
$data = AddDia($data);

if (date( "w", $data) == 6){ // Sábado
    $data = AddDia($data, 2); // Vai para segunda feira
}
    
15.06.2015 / 17:35