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

preciso de ajuda com datas


Dinho Moreno

Pergunta

Tenho esta função e esta apresentando erro

function getCalendar($vars){

global $database, $session;

$time = time();

$today = date('j',$time);

if(isset($vars['y'])){

$year = date("y", $time);

if ( strpos( $vars[ 'y' ], array( '/', '.', '\\', '%' ) ) === false && strlen( $vars[ 'y' ] ) == 2 ) {

$year = $vars[ 'y' ];

}

}else{

$year = date("y", $time);

}

if(isset($vars['m'])){

$month = date("m", $time);

if ( strpos( $vars[ 'm' ], array( '/', '.', '\\', '%' ) ) === false && strlen( $vars[ 'm' ] ) == 2 ) {

$month = $vars[ 'm' ];

}

}else{

$month = date("m", $time);

}

$cal_date = "&y= . $year . "&m=" . $month;

// Rebuild Query String

$query_str = NULL;

if(strlen($_SERVER['QUERY_STRING])){

$parts = explode("&", $_SERVER['QUERY_STRING']);

foreach($parts as $part){

$key = explode("=, $part);

if($key[0] != "y" && $key[0] != "Y" && $key[0] != "m" && $key[0] != "M"){

$query_str .= $part . "&";

}

}

}

$_SERVER['QUERY_STRING] = $query_str;

$prev_month = "?" . $_SERVER['QUERY_STRING'];

$prev_month .= 'y= . ($month-1 == 0 ? str_pad($year-1, 2, "0", STR_PAD_LEFT) : $year) . '&m=' . ($month-1 == 0 ? 12 : str_pad($month-1, 2, "0", STR_PAD_LEFT));

$next_month = NULL;

if($month != date("m", $time)){

$next_month .= "?" . $_SERVER['QUERY_STRING];

$next_month .= 'y=' . ($month+1 == 13 ? str_pad($year+1, 2, "0", STR_PAD_LEFT) : $year) . '&m=' . ($month+1 == 13 ? "01" : str_pad($month+1, 2, "0", STR_PAD_LEFT));

}

$prev_next = array('«'=>$prev_month, '»'=>$next_month);

$date = str_pad($year, 4, "20", STR_PAD_LEFT);

$dateyear = $date;

$date = $date . $month;

$query = "SELECT * FROM #__entries WHERE EXTRACT(YEAR FROM date)='" . $dateyear . "' AND EXTRACT(MONTH FROM date)='" . $month . "' AND access <= '$session->useraccess' ORDER BY date";

$month_data = $database->GetArray($query);

$days = array();

foreach($month_data as $day){

$arr = explode("-", $day['date']);

$arr2 = explode(":", $date['date']);

$arr3 = explode(" ", $arr2[0]);

$day_value = date("j", strtotime(0, 0, 0, $arr[1], $arr[2], $arr[0]));

$days[$day_value] = array('past.php?year=' . $year . '&month=' . $month. '&day=' . $day_value . $cal_date, 'entry_day');

}

if(isset($days[$today])){

array_push($days[$day_value], '<span style="font-weight: bold;">'.$today.'</span>');

}elseif($month == date("m", $time)){

$days[$today] = array(NULL, NULL, '<span style="font-weight: bold;">'.$today.'</span>');

}

return $this->generateCalendar($year, $month, $days, 3, NULL, 0, $prev_next);

}

o erro retornado é: Parse error: syntax error, unexpected T_STRING in C:\wamp\www\Journalness_4.1_Full\includes\calendar.class.php on line 78

Poderia ajuda a resolver com urgência?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Acabei de copiar/colar o teu script e exectutar a não retornou nenhum erro.

Estou utilizando a versão PHP 5.3.5 Wampserver: Esta retornando o erro acima. Estou começando com PHP e preciso de ajuda para entender esta linha

Erro retornado: Warning: strtotime() expects at most 2 parameters, 6 given in C:\wamp\www\Journalness_4.1_Full\includes\calendar.class.php on line 78

no campo do banco aparece a data : 2011-11-26 05:32:11.

Obrigado pela ajuda

Editado por Dinho Moreno
Link para o comentário
Compartilhar em outros sites

  • 0
Erro retornado: Warning: strtotime() expects at most 2 parameters, 6 given in C:\wamp\www\Journalness_4.1_Full\includes\calendar.class.php on line 78

no campo do banco aparece a data : 2011-11-26 05:32:11.

A função 'strtotime' requer, no máximo, 2 parâmetros (e no mínimo 1). Você passou 6 parâmetros.

Você deve passar uma string com um formato de data válido.

Link para o comentário
Compartilhar em outros sites

  • 0
Erro retornado: Warning: strtotime() expects at most 2 parameters, 6 given in C:\wamp\www\Journalness_4.1_Full\includes\calendar.class.php on line 78

no campo do banco aparece a data : 2011-11-26 05:32:11.

A função 'strtotime' requer, no máximo, 2 parâmetros (e no mínimo 1). Você passou 6 parâmetros.

Você deve passar uma string com um formato de data válido.

Qual função usar nesta rotina para passar os parametros (6)?

Link para o comentário
Compartilhar em outros sites

  • 0
O segundo parâmetro de date() deve ser um timestamp.

Para conseguir o timestamp de uma data GMT, use gmmktime().

a linha original era: $day_value = date("j", mktime(0, 0, 0, $arr[1], $arr[2], $arr[0]));

mais apresenta erro string inesperada. tirando $arr[2], funciona bem. creio que $arr[2], retorna o ano e preciso desta informação

como estou estudando php, não estou entendendo bem como utilizar mktime.

poderia passar um exemplo, por favor.

Link para o comentário
Compartilhar em outros sites

  • 0

Prefira gmmktime() ao invés de mktime().

Estas funções que retornam timestamp devem receber inteiros, que representam ano, dia, mes, etc...

Provavelmente você conseguiu tais informações de uma string, através de um explode, ou alguma expressão regular.

As informações presentes no array $arr são strings. O que você deve fazer é convertê-las para valores inteiros antes de submeter á função gmmktime().

Tente utilizando casts.

Nem vou postar exemplo, pois você acha vários na própria documentação da linguagem.

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,2k
    • Posts
      652k
×
×
  • Criar Novo...