Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com calendario


Rafaelflm

Pergunta

boa tarde a todos, sou novo aqui assim como no php,

eu estou fazendo um calendario, e surgiu a duvida, como faço pra o calendario imprimir o dia 1 relacionado ao seu dia da semana ex::

D S T Q Q S S

1 2 3 4 5 6

ta vendo o dia primeiro começa na terça, então o for de dias começa e imprimir na segunda, não consigo fazer isso, segue meu codigo abaixo.

grato

<?

$dia = array ("D","S","T","Q", "Q", "S", "S");

$numero_mes = 01;

$numero_ano = 2010;

$num_dias_do_mes = cal_days_in_month(CAL_GREGORIAN,$numero_mes , $numero_ano);

$diasemana = date("w", mktime(0,0,0,$numero_mes, 1 ,$numero_ano) );

?>

<html>

<body>

<table border="1">

<?

$cols = 6;

$linhas = 6;

for ($i=0; $i <= $cols; $i++) {

if ( $i >= 0 || $i <= 6 ) {

print("<td bgcolorp;".$bgcolor."><b>".$dia[$i]."</b></td> ");

}

}

print("<tr>");

for ($dias = 1; $dias <= $num_dias_do_mes; $dias++) {

if ($dias % 7 == 1 ) {

print("<tr>");

}

if ( $j >= 0 || $j <= 35 ) {

print("<td> ".$dias."</td>");

}

}

?>

</table>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Bom dia, Rafaelflm!

Acho que você está cometendo um pequeno erro, está faltando um argumento:

$diasem = date('w', mktime(0, 0, 0, $mes, $dia, $ano));

Como é para calendário, deixe o valor dia sempre com 1;

Abraços.

Bom dia, obrigado pela dica, isso já está arrumado, agora ficou só o problema de imprimir o dia primeiro em baixo do dia da semana correto, que ainda não consegui

Link para o comentário
Compartilhar em outros sites

  • 0

Olá!

Acho que você já criou uma Tabela com os sete dias da semana.

Caso isso já foi feito, use um laço, que pode ser o while, de forma que só precisa achar o primeiro dia,

o restante é só continuar e parar sempre no w=6, para continuar em outra linha.

Mas aqui no site tem vários modelos de calendários.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0
Bom dia, Rafaelflm!

Acho que você está cometendo um pequeno erro, está faltando um argumento:

$diasem = date('w', mktime(0, 0, 0, $mes, $dia, $ano));

Como é para calendário, deixe o valor dia sempre com 1;

Abraços.

Bom dia, obrigado pela dica, isso já está arrumado, agora ficou só o problema de imprimir o dia primeiro em baixo do dia da semana correto, que ainda não consegui

esse é o problema, não estou sabendo fazer por exemplo: dia 1 de novembro de 2010 começa na segunda feira, e não to conseguindo que o 1 fique em baixo do S de segunda feira.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa Tarde, Rafael.

Veja se código que fiz te ajuda a ter uma idéia de como fazer.

É claro que você vai precisar melhorar com javascript e css e o que você achar melhor.

Mas acho que como ponto de partida está muito bom.

Abraços.

<HTML>

<HEAD>

<TITLE>::.Calendário.::</TITLE>

<STYLE>

table{

font-family:Verdana;

font-size:11pt;

text-align:center;

</STYLE>

</HEAD>

<BODY> <BR> <BR> <BR> <BR>

<?php

//Caso queira importar as variáveis abaixo de outra página, retire o comentário abaixo:

//import_request_variables("gP");

$mes=11; //Aqui você pode substituir pela váriavel do Mês;

$dia=1; //Aqui recomendo não mexer, pois o calendário não é algo que ele mude;

$ano=2010; //Aqui você pode substituir pela váriavel do Ano;

$passa =0; /*Essa variável ela tem a finalidade de controlar os dias da semana,

Apenas para quebra de linha;*/

$final = 6; //Apenas para achar um parâmetro de raciocínio, verifique que a cada seis quebra a linha;

$diames = date('t', mktime(0, 0, 0, $mes, $dia, $ano));

$nomemes=array("ini","Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");

PRINT"

<table border='1' width='500pt' align='center'>

<tr>

<td colspan=7>$nomemes[$mes]&nbsp; &nbsp; - &nbsp; &nbsp; $ano</td>

</tr>

<tr>

<td>D<BR>o<BR>m</td>

<td>S<BR>e<BR>g</td>

<td>T<BR>e<BR>r</td>

<td>Q<BR>u<BR>a</td>

<td>Q<BR>u<BR>i</td>

<td>S<BR>e<BR>x</td>

<td>S<BR>a<BR>b</td>

</tr>

<tr>";

WHILE ($passa <= $final)

{

$dia1 = date('w', mktime(0, 0, 0, $mes, $dia, $ano));

IF($dia1==$passa)

{

IF (($passa==6) AND ($dia==$diames))

{PRINT"<td>$dia</td></tr>"; }

ELSEIF(($passa==6) AND ($dia < $diames))

{$passa =0; IF($dia < $diames){PRINT"<td>$dia</td></tr><tr>";$dia++; } }

ELSE

{$passa++; IF($dia < $diames){ PRINT"<td>$dia</td>";$dia++;}}

}

ELSE{PRINT"<td>&nbsp;</td>"; $passa++;}

}

IF (($passa!=6) AND ($dia!=$diames))

{PRINT"</tr>";}

PRINT"

</table>";

?>

</BODY>

</HTML>

Link para o comentário
Compartilhar em outros sites

  • 0
Boa Tarde, Rafael.

Veja se código que fiz te ajuda a ter uma idéia de como fazer.

É claro que você vai precisar melhorar com javascript e css e o que você achar melhor.

Mas acho que como ponto de partida está muito bom.

Abraços.

<HTML>

<HEAD>

<TITLE>::.Calendário.::</TITLE>

<STYLE>

table{

font-family:Verdana;

font-size:11pt;

text-align:center;

</STYLE>

</HEAD>

<BODY> <BR> <BR> <BR> <BR>

<?php

//Caso queira importar as variáveis abaixo de outra página, retire o comentário abaixo:

//import_request_variables("gP");

$mes=11; //Aqui você pode substituir pela váriavel do Mês;

$dia=1; //Aqui recomendo não mexer, pois o calendário não é algo que ele mude;

$ano=2010; //Aqui você pode substituir pela váriavel do Ano;

$passa =0; /*Essa variável ela tem a finalidade de controlar os dias da semana,

Apenas para quebra de linha;*/

$final = 6; //Apenas para achar um parâmetro de raciocínio, verifique que a cada seis quebra a linha;

$diames = date('t', mktime(0, 0, 0, $mes, $dia, $ano));

$nomemes=array("ini","Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");

PRINT"

<table border='1' width='500pt' align='center'>

<tr>

<td colspan=7>$nomemes[$mes]&nbsp; &nbsp; - &nbsp; &nbsp; $ano</td>

</tr>

<tr>

<td>D<BR>o<BR>m</td>

<td>S<BR>e<BR>g</td>

<td>T<BR>e<BR>r</td>

<td>Q<BR>u<BR>a</td>

<td>Q<BR>u<BR>i</td>

<td>S<BR>e<BR>x</td>

<td>S<BR>a<BR>b</td>

</tr>

<tr>";

WHILE ($passa <= $final)

{

$dia1 = date('w', mktime(0, 0, 0, $mes, $dia, $ano));

IF($dia1==$passa)

{

IF (($passa==6) AND ($dia==$diames))

{PRINT"<td>$dia</td></tr>"; }

ELSEIF(($passa==6) AND ($dia < $diames))

{$passa =0; IF($dia < $diames){PRINT"<td>$dia</td></tr><tr>";$dia++; } }

ELSE

{$passa++; IF($dia < $diames){ PRINT"<td>$dia</td>";$dia++;}}

}

ELSE{PRINT"<td>&nbsp;</td>"; $passa++;}

}

IF (($passa!=6) AND ($dia!=$diames))

{PRINT"</tr>";}

PRINT"

</table>";

?>

</BODY>

</HTML>

Bom dia endor, muito obrigado, agora ficou bem claro, obrigado mesmo; =D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...