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ó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;}
			}
		
		}
	
	}
			
$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ódigo

function 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ódigo

function 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ódigo
require_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