Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, tenho um calendário que gostaria de transformar em agenda simples, mas não estou conseguindo.
Tenho um db que contem o evento que vai acontecer no dia tal e gostaria que no calendário está data ficasse marcada.
Tentei usar um while dentro do segundo for:
$pegaPaciente = Registry::get( 'dbsistema' )->sql("SELECT * FROM agenda");
if(empty($dias[$pos2])){
echo "<td><center>-</center></td>";
}else{
while($mostraPaciente = mysql_fetch_array($pegaPaciente)){
if($dias[$pos2]==$dia){
echo "<td class='hoje'>{$dias[$pos2]}</td>";
}elseif($dias[$pos2]==$mostraPaciente['dia']){
echo "<td class='agendado'>{$dias[$pos2]}</td>";
}else{
echo "<td>{$dias[$pos2]}</td>";
}
}
}
Este é o original.
echo "<table cellspacing='1' class='tabelaAgenda'>";
echo "<thead><tr><td colspan='7'>$mes2/$ano</td></tr></thead>";
echo "<tbody><tr><td>Domingo</td><td>Segunda</td><td>Terça</td><td>Quarta</td><td>Quinta</td><td>Sexta</td><td>Sábado</td></tr></tbody>";
for($linha = 0; $linha < 6; $linha++){
echo "<tr>";
for($coluna = 0; $coluna < 7; $coluna++){
$pos2 = $cont - $pos;
if(empty($dias[$pos2])){
echo "<td><center>-</center></td>";
}else{
if($dias[$pos2]==$dia){
echo "<td class='hoje'>{$dias[$pos2]}</td>";
}else{
echo "<td>{$dias[$pos2]}</td>";
}
}
$cont++;
}//Fim do for
echo "</tr>";
}//Fim do for
echo "</table>";
Nâo consegui imaginar a forma correta, fico grato se alguem me der uma dica.
Ok depois eu passa para htm então.
No while ele repete 3 vezes a data apartir do while, porque tenho no db 3 eventos marcado.
se puder acessar o link, achu que vai entender melhor:
dentro da sua tabela possui qntos registros?
ela tem esse monte de de 1 2 3 4 ... q estão se repetindo ??
Possuiu 3 que são os que estão em azul mais claro 11,19,28.
sei la kra seu while parece estar errado dentro você está usando o $dias ao invés do $mostraPaciente
acho q só por esse código ta meio difícil de descobrir
A ta segue o code inteiro, até consegui chegar em outro resultado. Acesse o link acima denovo.
require "../includes/mysql.php";
$ano = date("Y");
$cont = 0;
$dia = date("d");
$dias = array();
$mes = date("m");
$totalDias = date("t");
$primeiroDia = date("D", mktime(0, 0, 0, $mes, 1, $ano));
for($d = 0; $d < $totalDias; $d++)$dias[$d] = array_push($dias, $d+1);
switch($primeiroDia){
case "Sun":
$pos = 0;
break;
case "Mon":
$pos = 1;
break;
case "Tue":
$pos = 2;
break;
case "Wed":
$pos = 3;
break;
case "Thu":
$pos = 4;
break;
case "Fri":
$pos = 5;
break;
case "Sat":
$pos = 6;
break;switch($mes){
case 1:
$mes2 = "Janeiro";
break;
case 2:
$mes2 = "Fevereiro";
break;
case 3:
$mes2 = "Março";
break;
case 4:
$mes2 = "Abril";
break;
case 5:
$mes2 = "Maio";
break;
case 6:
$mes2 = "Junho";
break;
case 7:
$mes2 = "Julho";
break;
case 8:
$mes2 = "Agosto";
break;
case 9:
$mes2 = "Setembro";
break;
case 10:
$mes2 = "Outubro";
break;
case 11:
$mes2 = "Novembro";
break;
case 12:
$mes2 = "Dezembro";
break;echo "<table cellspacing='1' class='tabelaAgenda'>";
echo "<thead><tr><td colspan='7'>$mes2/$ano</td></tr></thead>";
echo "<tbody><tr><td>Domingo</td><td>Segunda</td><td>Terça</td><td>Quarta</td><td>Quinta</td><td>Sexta</td><td>Sábado</td></tr></tbody>";
for($linha = 0; $linha < 6; $linha++){
echo "<tr>";
for($coluna = 0; $coluna < 7; $coluna++){
$pos2 = $cont - $pos;
if(empty($dias[$pos2])){
echo "<td><center>-</center></td>";
}elseif($dias[$pos2]==$dia){
echo "<td class='hoje'>{$dias[$pos2]}</td>";
}else{
$pegaPaciente = Registry::get( 'dbsistema' )->sql("SELECT * FROM agenda");
while($mostraPaciente = mysql_fetch_array($pegaPaciente)){
if($dias[$pos2]==$mostraPaciente['dia']){
echo "<td class='agendado'>{$dias[$pos2]}</td>";
}
}
echo "<td>{$dias[$pos2]}</td>";
}
$cont++;
}//Fim do for
echo "</tr>";
}//Fim do for
echo "</table>";bom um dos problemas q vi é qao entrar no while ele cria uma coluna a mais
esse select serve pra verficiar se existe o dia agendado certo ?
pq você nao faz a consulta fora la no começo e armazena os valores em um array.
ai ficaria
com mais um else no sistema onde ele tem if(in_array($dias[$pos2],$arrayDiasAgendados)
se sim ele coloca outra <td>...
<?
require "../includes/mysql.php";
$ano = date("Y");
$cont = 0;
$dia = date("d");
$dias = array();
$mes = date("m");
$totalDias = date("t");
$primeiroDia = date("D", mktime(0, 0, 0, $mes, 1, $ano));
$pegaPaciente = Registry::get( 'dbsistema' )->sql("SELECT * FROM agenda");
$mostraPaciente = mysql_fetch_array($pegaPaciente);
$arrDiasAgendados = Array();
foreach($mostraPaciente as $paciente)$arrDiasAgendados[] = $mostraPaciente['dia'];
}
for($d = 0; $d < $totalDias; $d++)$dias[$d] = array_push($dias, $d+1);
switch($primeiroDia){
case "Sun":
$pos = 0;
break;
case "Mon":
$pos = 1;
break;
case "Tue":
$pos = 2;
break;
case "Wed":
$pos = 3;
break;
case "Thu":
$pos = 4;
break;
case "Fri":
$pos = 5;
break;
case "Sat":
$pos = 6;
break;switch($mes){
case 1:
$mes2 = "Janeiro";
break;
case 2:
$mes2 = "Fevereiro";
break;
case 3:
$mes2 = "Março";
break;
case 4:
$mes2 = "Abril";
break;
case 5:
$mes2 = "Maio";
break;
case 6:
$mes2 = "Junho";
break;
case 7:
$mes2 = "Julho";
break;
case 8:
$mes2 = "Agosto";
break;
case 9:
$mes2 = "Setembro";
break;
case 10:
$mes2 = "Outubro";
break;
case 11:
$mes2 = "Novembro";
break;
case 12:
$mes2 = "Dezembro";
break;echo "<table cellspacing='1' class='tabelaAgenda'>";
echo "<thead><tr><td colspan='7'>$mes2/$ano</td></tr></thead>";
echo "<tbody><tr><td>Domingo</td><td>Segunda</td><td>Terça</td><td>Quarta</td><td>Quinta</td><td>Sexta</td><td>Sábado</td></tr></tbody>";
for($linha = 0; $linha < 6; $linha++){
echo "<tr>";
for($coluna = 0; $coluna < 7; $coluna++)
{
$pos2 = $cont - $pos;
if(empty($dias[$pos2]))
{
echo "<td><center>-</center></td>";
}
elseif($dias[$pos2]==$dia)
{
echo "<td class='hoje'>{$dias[$pos2]}</td>";
}
elseif(in_array($dias[$pos2],$arrDiasAgendados))
{
echo "<td class='agendado'>{$dias[$pos2]}</td>";
}
else
{
echo "<td>{$dias[$pos2]}</td>";
}
$cont++;
}//Fim do for
echo "</tr>";
}//Fim do for
echo "</table>";
?>Isso cara simplesmente funcionou. Maravilha, valeu mesmo pela ajuda lambrusco.
abc :joia:
Bom pra começar a maneira correta seria você fazer o html sem esse monte de echo né.
qual o problema do seu while? da algum erro ?