Trazendo os dias de acordo com a data inicial, final e dia da semana.

Bom dia!

Gostaria de uma ajudinha, queria um código em PHP que traga os dias de acordo com a data inicial, data final e dia da semana. Essas informações já vem do banco.

Exemplo:

dia inicial = 12/12/2018
Dia final = 21/01/2019
Dia da semana = 2a e 4a

Ficaria assim:
12/12/2018 - 17/12/2018 - 19/12/2018 - 24/12/2018 - 26/12/2018 - 02/01/2019 - 07/01/2019 - 09/01/2019 - 14/01/2019 - 16/01/2019 - 21/01/2019

Alguém poderia me ajudar?! Obrigada.

Qual a estrutura da sua tabela?

Se entendi bem, você precisa de uma função que te retorne datas específicas dentro de um período.

Criei a função abaixo dentro dos critérios que você apresentou. Espero que te ajude:

[code]<?php
/*
$dtini (string) > Data inicial no formato “yyyy-mm-dd”
$dtfin (string) > Data final no formato “yyyy-mm-dd”
$dias_a_mostrar (string) > Dias da semana a mostrar, por exemplo: “1,2,7” para mostrar “domingos, segundas e sábados”
*/
function fn_datas_especificas($dtini, $dtfin, $dias_a_mostrar)
{
$dtini = new DateTime($dtini);
$dtfin = new DateTime($dtfin);
$dtfin = $dtfin->modify("+1 day");

$intervalo = DateInterval::createFromDateString("1 day");
$periodo = new DatePeriod($dtini, $intervalo, $dtfin);
$datas = "";

foreach ($periodo as $data)
{
    if(strpos($dias_a_mostrar, (string)($data->format("w") + 1)) !== false)
    {
        $datas .= $data->format("d-m-Y") . " - ";
    }
}

$datas = substr($datas, 0, -3);

return $datas;

}

echo fn_datas_especificas(“2018-12-12”, “2019-01-21”, “2,4”);
?>[/code]

Bem, como disse que as informações já estão no banco eu ia sugerir uma query para acessar apenas as datas requisitadas.

Mas vou deixar com o Sr Jônatas a conclusão desse tópico.