osk 0 Denunciar post Postado Julho 7, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
lambrusco 3 Denunciar post Postado Julho 7, 2011 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 ? Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Julho 7, 2011 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: http://sistema.clinicagapo.com.br/agenda/ Compartilhar este post Link para o post Compartilhar em outros sites
lambrusco 3 Denunciar post Postado Julho 7, 2011 dentro da sua tabela possui qntos registros? ela tem esse monte de de 1 2 3 4 ... q estão se repetindo ?? Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Julho 7, 2011 Possuiu 3 que são os que estão em azul mais claro 11,19,28. Compartilhar este post Link para o post Compartilhar em outros sites
lambrusco 3 Denunciar post Postado Julho 7, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Julho 7, 2011 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; }//Fim do switch 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; }//Fim do switch 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>"; Compartilhar este post Link para o post Compartilhar em outros sites
lambrusco 3 Denunciar post Postado Julho 7, 2011 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; }//Fim do switch 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; }//Fim do switch 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>"; ?> Compartilhar este post Link para o post Compartilhar em outros sites
osk 0 Denunciar post Postado Julho 7, 2011 Isso cara simplesmente funcionou. Maravilha, valeu mesmo pela ajuda lambrusco. abc :joia: Compartilhar este post Link para o post Compartilhar em outros sites