Jump to content
Sign in to follow this  
fabiomiguel3

Calendario com marcação de consultas

Recommended Posts

fabiomiguel3

Boas pessoal!

Não faço a minima ideia de como fazer um calendario para que as pessoas marquem consultas. como guardar os dados na db etc.

Alguem ja faz algo deste genero? Tou mesmo sem ideias...

Share this post


Link to post
Share on other sites
kareka

Precisas do código PHP ou da estrutura das tabelas da bd ?


<?php include("assinatura.txt"); ?>

Share this post


Link to post
Share on other sites
fabiomiguel3

Precisas do código PHP ou da estrutura das tabelas da bd ?

De preferencia as duas coisas para poder estudar como é feito

Share this post


Link to post
Share on other sites
kareka

Antes de mais precisas de uma tabela para guardar as consultas , com informação mais básica mas isso tu depois acrescentas:

ID_CONSULTA

ID_UTENTE

ID_MEDICO

DATA

ESPECIALIDADE

...

Convém teres mais uma tabela de médicos e de utentes para guardares as informações mais básicas.

De seguida , o código:

Tens aqui uma ideia de como criar o calendário , é código que tinha aqui "arquivado" e estou a tables mas acho que funciona  ;)

<div align="center"><?
$link = "PÁGINA QUE QUERES REDIRECIONAR AO CLICAR NO DIA";
  	// numero de colunas da tabela, será o número de dias semanais
  	$num_colunas_tabela = 7;
$nome_meses = array("","Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");
$data_actual = date("Y-m-d");
// determinar a data a apresentar e o número de celulas a preencher em branco
if(!isset($_GET['data'])) $data = date("Y-m-d");
else $data = $_GET['data'];

$data2 = explode("-",$data);
$primeiro_dia = $data2[0]."-".$data2[1]."-01";
$dia_semana_inicial = strftime("%w",strtotime($primeiro_dia));
$dias_mes = cal_days_in_month(CAL_GREGORIAN,intval($data2[1]),intval($data2[0]));

$mes = $data2[0]."-".$data2[1];

$data = date("Y-m-d");	
?>
<table width="170" align="center" bgcolor="#000000" border="0"  cellspacing="0" cellpadding="0" style="margin-top:20px; padding:2px;">
<tr>
    <td colspan="7" align="center" style="padding-bottom:3px; font-size:11px;">Calendário</td>
  </tr>
    <tr>
    <td width="32" align="center"><a href="<?=$param?>data=<?=($data2[1]==1?($data2[0]-1):$data2[0])."-".($data2[1]==1?"12"$data2[1]-1))?>"><img src="IMG PARA SETA ESQUERDA" width="16" height="16" alt="Left" border="0" align="absbottom"></a></td>
    <td colspan="5" align="center" class="bold"><?
$mes_id = intval($data2[1]);
echo $nome_meses[$mes_id]." de ".$data2[0];
?></td>
    <td width="32" align="center"><a href="<?=$param?>data=<?=($data2[1]==12?($data2[0]+1):$data2[0])."-".($data2[1]==12?"1"$data2[1]+1))?>"><img src="IMG PARA SETA DIREITA" width="16" height="16" alt="Right" border="0" align="absbottom"></a></td>
  </tr>
  <tr>
    <td colspan="7" height="5" class="short"></td>
  </tr>
  <tr>
    <td width="32" align="center" style="border-bottom:1px solid #cc3300;">Dom</td>
    <td width="32" align="center" style="border-bottom:1px solid #cc3300;">Seg</td>
    <td width="32" align="center" style="border-bottom:1px solid #cc3300;">Ter</td>
    <td width="32" align="center" style="border-bottom:1px solid #cc3300;">Qua</td>
    <td width="32" align="center" style="border-bottom:1px solid #cc3300;">Qui</td>
    <td width="32" align="center" style="border-bottom:1px solid #cc3300;">Sex</td>
    <td width="32" align="center" style="border-bottom:1px solid #cc3300;">Sab</td>
  </tr>
  <tr style="color:#FFF">
    <?
for($i=0; $i<$dia_semana_inicial; $i++) echo "<td class=bg_unset> </td>"; 

// para preencher as celulas com os dias do mês
$dia_mes = 1;
$coluna = $dia_semana_inicial + 1;
  	for($i = $dia_semana_inicial; $i < $dia_semana_inicial + $dias_mes; $i++) { 
	echo '<td width="32" align="center"><a href="' . $link . '?id='.$data2[0]."-".$data2[1]."-".$data2[2].'">'.$dia_mes.'</a></td>';
  		if($coluna % $num_colunas_tabela == 0) echo "</tr><tr>";
	$coluna++;
	$dia_mes++;
  	} 

// para preencher as celulas finais em branco
for($i = $coluna - 1; $i % $num_colunas_tabela != 0; $i++) echo "<td> </td>"; 
  ?>
  </tr>
  <tr>
    <td colspan="7" height="5" class="short"></td>
  </tr>
  <tr>
    <td colspan="7" height="5" class="short"></td>
  </tr>
</table></div>

Tive a dar uma olhada no código mas parece-me bem , qualquer coisa eu ando por aqui .

Depois , só tens que redireccionar para uma página com um formulário para preencher e enviar para a bd .

Não te esqueças que essa página recebe como parâmetro uma data .


<?php include("assinatura.txt"); ?>

Share this post


Link to post
Share on other sites
fabiomiguel3

Ora parece me bem. Mas o que eu quero é por exemplo clico num dia. E, ver que horas estão disponíveis. se tiver disponivel pronto marca percebes?

Share this post


Link to post
Share on other sites
kareka

Sim , já percebi .

Também não é complicado ..crias horas pré-definidas de atendimento como se vê nos consultórios do género 15h, 15h30, 16h, 16h30, por exemplo numa tabela de horários e associas à tabela de consultas .

Ao clicar num dia , envia na mesma a data por parâmetro e verificas quais as horas nesse dia que têm consulta (registo na bd) e escreves "ocupado" por exemplo, as que não tiverem escreves um link do género "marcar consulta" e (se houver utilizadores logados) até nem precisas de formulário , inseres automaticamente na tabela todos os dados necessários do utente, data e hora.

Não se resolvi bem o teu problema mas espero que ajude .


<?php include("assinatura.txt"); ?>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.