Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
fala galera!
to precisando de uma luz para um esquema meu aqui.
seguinte:
tenho uma tabela de dentistas assim:
codigo dentista intervalo
1 fulano 30
2 ciclano 10
3 beltrano 15
o que preciso é gerar na tela uma listagem de 8 as 20hs e nos minutos pegar o intervalo de cada dentista.
ao meu ver acho que a solução é o for(), mas não consigo montar a estrutura correta, alguém tem ideias ai? ficaria tipo assim na tela:
dentista 1
8:00
8:30
9:00
9:30
...... 20:00
dentista 2
8:00
8:10
8:20
8:30
8:40
8:50
9:00
.... 20:00
dentista 3
8:00
8:15
8:30
8:45
9:00
.....20:00
pensei em algo assim: (mas deu errado kkkk)
......
$inter = $obj_dentista_agenda -> intervalo;
for( $h = 8 ; $h <= 20 ; $h ++){
for($m = 0; $m <= $inter; $m+ =$inter){
echo $h . ' : '.$m;
}
}sem ser orientado não tem uma forma? Ainda não cheguei nesse nivel, kkk
Mais fácil trabalhar com DateTime, segue os EXEMPLOS
$add_minutos = 15;
$hora = new DateTime('08:00');
$hora->add(new DateInterval('PT' . $add_minutos . 'M'));
echo $hora->format('H:i'); //08:15
Mas segue com strtotime
$timestamp = strtotime('08:00 + 15 minute');
echo date('H:i:s', $timestamp); //08:15
Agora só montar uma função para fazer o que você quer!
fala Williams,
cara consegui até fazer o script e local, funciona que uma maravilha, mas quando upo para o servidor, não roda.
saberia me dizer o que pode ser?
uso local o php 5.6 e o do servidor é 5.3, mas já alterei para 5.6 o do servidor tambem e não funciona.
Não gera erros. simplismente não printa os horarios. segue o script.
$startHour = '2016-09-29 07:30';
$endHour = '2016-09-29 20:00';
$minutes = 30;
$aindaPossuiIntervalo = true;
$ultimoIntervalo = null;
while($aindaPossuiIntervalo){
$time = (is_object($ultimoIntervalo)) ? $ultimoIntervalo : new DateTime($startHour);
$time->add(new DateInterval('PT' . $minutes . 'M'));
$ultimoIntervalo = $time;
print $time->format('H:i');
if(new DateTime($time->format('Y-m-d H:i:s')) >= new DateTime($endHour)){
$aindaPossuiIntervalo = false;
}
}Habilite os erros
ini_set('display_errors', true);
error_reporting(E_ALL);
http://php.net/manual/pt_BR/function.error-reporting.php
Se tiver usando autoload, coloque \ barra invertida antes das classes nativas
new \DateInterval
new \DateTime
habilitando deu o erro:
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for 'BRT/-3.0/no DST' instead' in /home/l2cnetco/public_html/software/conectivos/agenda.php:17 Stack trace: #0 /home/l2cnetco/public_html/software/conectivos/agenda.php(17): DateTime->__construct('2016-09-26 08:0...') #1 {main} thrown in /home/l2cnetco/public_html/software/conectivos/agenda.php on line 17
saberia me dizer o motivo?
Basta ler o erro:
It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
Sim ESerra,
mas pergunto se o problema é programação ou na configuração do servidor, pois o pessoal do datacenter fala que é meu codigo e pelo que vi não é.
Sim, o problema é o no seu script, a solução inclusive consta no próprio erro.
You are required to use the date.timezone setting or the date_default_timezone_set() function
brow, todos aqui t ajudando na solução
adiciona a hora default que voce precisa
creio q esse sistema como é para consultorio aqui do br
coloca o gmt relacionado a região
bjs
Valeu galera!
como sempre o forum todo sendo prestativo!
Resolvi assim:
Na minha index adicionei o seguinte comando no inicial. Visto que no arquivo php.ini não poderia mexer.
if( ! ini_get('date.timezone') )
{
date_default_timezone_set('America/Sao_Paulo');
}
use dateinterval