Array
(
)

Duvida em criar function retornaDataMes($data)

PHP
Samuel Diogo
   - 31 ago 2012

Pessoal!
Crei uma classe chamada conteudoBLL, nesta classe eu quero criar método / função que retorne por extenso o mês de acordo com o valor que minha data recebe...
Bom, vamos ao meu código pronto:
#Códigoclass conteudoBLL{
function retornaDataMes($data) {
$data = explode("/",$data);
switch($data[1]) {
case "1":{$data[1]="Janeiro";break;}
case "2":{$data[1]="Fevereiro";break;}
case "3":{$data[1]="Março";break;}
case "4":{$data[1]="Abril";break;}
case "5":{$data[1]="Maio";break;}
case "6":{$data[1]="Junho";break;}
case "7":{$data[1]="Julho";break;}
case "8":{$data[1]="Agosto";break;}
case "9":{$data[1]="Setembro";break;}
case "10":{$data[1]="Outubro";break;}
case "11":{$data[1]="Novembro";break;}
case "12":{$data[1]="Dezembro";break;}
}

}

}

$objConteudoBLL = new conteudoBLL();


Citação:
PS.: sou novo em php, tenho quase certeza que há algo de errado ai encima!

em uma página que eu queira usar o método ou função acima, eu estou escrevendo isto:
#Código require_once "bll/conteudobll.php";
echo'tem que ser aqui porra, que merda esse codigo nao funcionar arrr' . $data[1] = $objConteudoBLL->retornaDataMes($row['data_noticia']);


Bom, como podem ver, eu devo está errando em alguma coisa...
o lance é que se eu cologo a função explode e loop while dentro da página que eu quero usar, tudo funciona direitinho...
Desde já agradeço a ajuda de todos!

Samuel Diogo
   - 31 ago 2012

Pois é pessoal... fazendo umas pesquisas aqui no google, eu achei este link que resolveu problema! porém sem trabalhar com switch case.. bom se alguém souber como fazer o mesmo que o link abaixo faz só que desta vez com switch case poste aeh! e vamos aumentar nosso grau de conhecimento!!!! rsrsrsrrsrs

#Códigofunction data_extenso ($data = false)
{
if ($data)
{
$mes = date('m', strtotime($data));
}
else
{
$mes = date('m');
$data = date('Y-m-d');
}
$meses = array
(
'01' => 'Janeiro',
'02' => 'Fevereiro',
'03' => 'Março',
'04' => 'Abril',
'05' => 'Maio',
'06' => 'Junho',
'07' => 'Julho',
'08' => 'Agosto',
'09' => 'Setembro',
'10' => 'Outubro',
'11' => 'Novembro',
'12' => 'Dezembro'
);
$dias = array
(
0 => 'Domingo',
1 => 'Segunda-feira',
2 => 'Terça-feira',
3 => 'Quarta-feira',
4 => 'Quinta-feira',
5 => 'Sexta-feira',
6 => 'Sábado'
);
return $dias[date('w', strtotime($data))] . ', ' . date('d', strtotime($data)) . ' de ' . $meses[$mes] . ' de ' . date('Y', strtotime($data));
}


segue link:
http://www.zatecus.com/blog-php-exibindo-uma-data-por-extenso-post.html

Desde já agradeço a todos!!

Best Regards,
Samuel Diogo

Bruno Betioli
   - 02 out 2012

Só tem uma coisa faltando em sua classe

#Código
class conteudoBLL{
function retornaDataMes($data) {
$data = explode("/",$data);
switch($data[1]) {
case "1":{$data[1]="Janeiro";break;}
case "2":{$data[1]="Fevereiro";break;}
case "3":{$data[1]="Março";break;}
case "4":{$data[1]="Abril";break;}
case "5":{$data[1]="Maio";break;}
case "6":{$data[1]="Junho";break;}
case "7":{$data[1]="Julho";break;}
case "8":{$data[1]="Agosto";break;}
case "9":{$data[1]="Setembro";break;}
case "10":{$data[1]="Outubro";break;}
case "11":{$data[1]="Novembro";break;}
case "12":{$data[1]="Dezembro";break;}
}
return $data[1];
}

}


Note que coloquei um return na função logo depois do switch.

E no código onde vc vai mostrar o resultado:

#Código
require_once "bll/conteudobll.php";
$objConteudoBLL = new conteudoBLL();
echo'tem que ser aqui porra, que merda esse codigo nao funcionar arrr'.$objConteudoBLL->retornaDataMes($row['data_noticia']);


Vê aí se deu certo. Vou ver um jeito de usar o segundo com switch.

Bruno Betioli
   - 02 out 2012

adicione este bloco de código a sua classe:

#Códigofunction data_extenso ($data = false)
{
if ($data)
{
$dia = date('w', strtotime($data));
$data = explode("-", $data);
}
else
{
$dia = date('w');
$data = date('Y-m-d');
$data = explode("-", $data);
}
switch($data[1]) {
case "1":{$data[1]="Janeiro";break;}
case "2":{$data[1]="Fevereiro";break;}
case "3":{$data[1]="Março";break;}
case "4":{$data[1]="Abril";break;}
case "5":{$data[1]="Maio";break;}
case "6":{$data[1]="Junho";break;}
case "7":{$data[1]="Julho";break;}
case "8":{$data[1]="Agosto";break;}
case "9":{$data[1]="Setembro";break;}
case "10":{$data[1]="Outubro";break;}
case "11":{$data[1]="Novembro";break;}
case "12":{$data[1]="Dezembro";break;}
}

switch($dia){
case "0": {$dia = 'Domingo'; break;}
case "1": {$dia = 'Segunda-feira'; break;}
case "2": {$dia = 'Terça-feira'; break;}
case "3": {$dia = 'Quarta-feira'; break;}
case "4": {$dia = 'Quinta-feira'; break;}
case "5": {$dia = 'Sexta-feira'; break;}
case "6": {$dia = 'Sábado'; break;}
}
return $dia . ', ' . $data[2] . ' de ' . $data[1] . ' de ' . $data[0];
}


e para mostrar o resultado, seguindo aquele seu exemplo rsrsrs:

#Códigorequire_once "bll/conteudobll.php";
$objConteudoBLL = new conteudoBLL();
echo'tem que ser aqui porra, que merda esse codigo nao funcionar arrr '.$objConteudoBLL->data_extenso($row['data_noticia']);


O caso é que, se a data estiver salva no banco com o formato dd/mm/yyyy, você terá que alterar para o formato yyyy-mm-dd, que é o padrao que a função strtotime do php reconhece. Tive esse problema no banco, para alterar, tive que fazer um script para capturar todas as datas do banco, transformá-las para o formato yyyy-mm-dd, mostrá-las em um input text e corrigir manualmente as poucas datas que ainda ficaram erradas. Criei um loop para salvar todas com o novo formato e, só então, alterei o campo da data no banco de varchar para date. Coisa de quem está iniciando rsrsrs. Qualquer coisa dá um grito.

Samuel Diogo
   - 02 out 2012

Boa Bruno!!
Testei aqui e funfou que uma beleza! obrigado por compartilhar!

sds,
Samuel Diogo