Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Junior de Lima

Contador duplica dois ultimos digitos

Recommended Posts

Bom dia,

 

Sou iniciante em PHP, e estou com o seguinte problema:

 

Tenho um contador que exibia 6 digitos. E agora inseri mais um digito, só que sempre nos 2 ultimos digitos vem duplicado:

 

Esse é o código:

<?php//POUPADAS DE 2009 até 10 MARÇO$toneladasPoupadas = 924396;//razão de 1 Tonelada a cada 212.5 segundos//$toneladasPorDia = 406.5;// Atualizado em 10/03/2009// razão de 1 TONELADA por min = 0,2819$toneladasPorDia = 406.36;$dataFinal = strtotime("now");$dataInicial = strtotime("2013-11-01");$numDias = ($dataFinal - $dataInicial) / 86400;$contmin = 212.5;$toneladasPoupadas += round($toneladasPorDia * $numDias);while (strlen($toneladasPoupadas) < 7) {	$toneladasPoupadas = '0'.$toneladasPoupadas;}$display1 = substr($toneladasPoupadas,0,1);$display2 = substr($toneladasPoupadas,1,1);$display3 = substr($toneladasPoupadas,2,1);$display4 = substr($toneladasPoupadas,3,1);$display5 = substr($toneladasPoupadas,4,1);$display6 = substr($toneladasPoupadas,5,1);$display7 = substr($toneladasPoupadas,6,1);$mes= nomeMes(date('m'));$PTG= nomeMes(date('m'));$ESP= nomeMesEsp(date('m'));$ENG = date('d')." ".date('F');$ano = date('Y');$dados = "&display1=$display1&display2=$display2&display3=$display3&display4=$display4&display5=$display5&display6=$display6&display7=&display7&ano=$ano&mes=$mes&iENG=$ENG&iPTG=$PTG&iESP=$ESP";print $dados;?>

Esse é o projeto:

http://limastudioweb.com.br/projetos/ventos/highres.php

 

Peço que me ajudem.

 

Por favor pessoal, alguem me ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

/*
O cálculo de toneladas de CO2 evitadas não está correto também, ara fazer o cálculo correto deve fazer o seguinte:

1. Total de energia que foi gerado até 31 de dezembro de 2006
140.000 [MWh] x 0,349 = 48.860 Toneladas CO2

2. Total da energia gerada até hoje em 2007.
204.746 [MWh] x 0,349 = 71.456 Toneladas CO2

3. Total de energia até hoje:
2006 + 2007 = 120.316 Toneladas CO2  

4. Esse valor deve atualizar se automaticamente somando 1 tonelada a cada 212,5 segundos.

*/

function nomeMes ($mes_num) {
	
	switch ($mes_num) {
			
		case 01:
		case '01':
			$mes = "Janeiro";
		break;
		case 02:
		case '02':
			$mes = "Fevereiro";
		break;
		case 03:
		case '03':
			$mes = "Março";
		break;
		case 04:
		case '04':
			$mes = "Abril";
		break;
		case 05:
		case '05':
			$mes = "Maio";
		break;
		case 06:
		case '06':
			$mes = "Junho";
		break;
		case 07:
		case '07':
			$mes = "Julho";
		break;
		case 08:
		case '08':
			$mes = "Agosto";
		break;
		case 09:
		case '09':
			$mes = "Setembro";
		break;
		case 10:
		case '10':
			$mes = "Outubro";
		break;
		case 11:
		case '11':
			$mes = "Novembro";
		break;
		case 12:
		case '12':
			$mes = "Dezembro";
		break;
			
	}
	$mes = date('d')." ".$mes;
	return $mes;
	
	
}

function nomeMesEsp ($mes_num) {
	
	switch ($mes_num) {
				
 		case 01:
		case '01':
			$mes = "Enero";
		break;
		case 02:
		case '02':
			$mes = "Febrero";
		break;
		case 03:
		case '03':
			$mes = "Marzo";
		break;
		case 04:
		case '04':
			$mes = "Abril";
		break;
		case 05:
		case '05':
			$mes = "Mayo";
		break;
		case 06:
		case '06':
			$mes = "Junio";
		break;
		case 07:
		case '07':
			$mes = "Julio";
		break;
		case 08:
		case '08':
			$mes = "Agosto";
		break;
		case 09:
		case '09':
			$mes = "Septiembre";
		break;
		case 10:
		case '10':
			$mes = "Octubre";
		break;
		case 11:
		case '11':
			$mes = "Noviembre";
		break;
		case 12:
		case '12':
			$mes = "Diciembre";
		break;
			
	}
	$mes = date('d')." ".$mes;
	return $mes;
	
	
}

//POUPADAS DE 2013 até 01 NOV
$toneladasPoupadas = 924396;

//razão de 1 Tonelada a cada 212.5 segundos
//$toneladasPorDia = 406.5;

// Atualizado em 10/03/2009
// razão de 1 TONELADA por min = 0,2819
$toneladasPorDia = 406.36;
$toneladasPorHora = 16.93;
$toneladaQuatroMin = 1.13;

$dataFinal = strtotime("now");
$dataInicial = strtotime("2013-11-01");

$numDias = ($dataFinal - $dataInicial) / 240;

$toneladasPoupadas += round($toneladaQuatroMin * $numDias);

while (strlen($toneladasPoupadas) < 7) {
	$toneladasPoupadas = '0'.$toneladasPoupadas;
}

$display1 = substr($toneladasPoupadas,0,1);
$display2 = substr($toneladasPoupadas,1,1);
$display3 = substr($toneladasPoupadas,2,1);
$display4 = substr($toneladasPoupadas,3,1);
$display5 = substr($toneladasPoupadas,4,1);
$display6 = substr($toneladasPoupadas,5,1);
$display7 = substr($toneladasPoupadas,6,1);

$mes= nomeMes(date('m'));
$PTG= nomeMes(date('m'));
$ESP= nomeMesEsp(date('m'));
$ENG = date('d')." ".date('F');

$ano = date('Y');

$dados = "&display1=$display1&display2=$display2&display3=$display3&display4=$display4&display5=$display5&display6=$display6&display7=$display7&ano=$ano&mes=$mes&iENG=$ENG&iPTG=$PTG&iESP=$ESP";

print $dados;

?>

Esse é o código completo.

 

Estou quebrando a cabeça, pra resolver isso :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem deixa eu ver se entendi, os dois últimos dígitos estão sendo recebidos em $display6, $display7 e estão duplicados correto? Se sim, eu testei aqui e realmente algumas vezes ele duplicou e outras não. Então pensei que pude-se ser algo nos procedimentos com a data. Então rescrevi aqui, com algumas observações para você analisar. Testa ai veja se o caminho é esse mesmo:

 

<?php


/*
O cálculo de toneladas de CO2 evitadas não está correto também, ara fazer o cálculo correto deve fazer o seguinte:

1. Total de energia que foi gerado até 31 de dezembro de 2006
140.000 [MWh] x 0,349 = 48.860 Toneladas CO2

2. Total da energia gerada até hoje em 2007.
204.746 [MWh] x 0,349 = 71.456 Toneladas CO2

3. Total de energia até hoje:
2006 + 2007 = 120.316 Toneladas CO2  

4. Esse valor deve atualizar se automaticamente somando 1 tonelada a cada 212,5 segundos.

*/

function nomeMes ($mes_num) {
	
	switch ($mes_num) {
			
		case 01:
		case '01':
			$mes = "Janeiro";
		break;
		case 02:
		case '02':
			$mes = "Fevereiro";
		break;
		case 03:
		case '03':
			$mes = "Março";
		break;
		case 04:
		case '04':
			$mes = "Abril";
		break;
		case 05:
		case '05':
			$mes = "Maio";
		break;
		case 06:
		case '06':
			$mes = "Junho";
		break;
		case 07:
		case '07':
			$mes = "Julho";
		break;
		case 08:
		case '08':
			$mes = "Agosto";
		break;
		case 09:
		case '09':
			$mes = "Setembro";
		break;
		case 10:
		case '10':
			$mes = "Outubro";
		break;
		case 11:
		case '11':
			$mes = "Novembro";
		break;
		case 12:
		case '12':
			$mes = "Dezembro";
		break;
			
	}
	$mes = date('d')." ".$mes;
	return $mes;
	
	
}

function nomeMesEsp ($mes_num) {
	
	switch ($mes_num) {
				
 		case 01:
		case '01':
			$mes = "Enero";
		break;
		case 02:
		case '02':
			$mes = "Febrero";
		break;
		case 03:
		case '03':
			$mes = "Marzo";
		break;
		case 04:
		case '04':
			$mes = "Abril";
		break;
		case 05:
		case '05':
			$mes = "Mayo";
		break;
		case 06:
		case '06':
			$mes = "Junio";
		break;
		case 07:
		case '07':
			$mes = "Julio";
		break;
		case 08:
		case '08':
			$mes = "Agosto";
		break;
		case 09:
		case '09':
			$mes = "Septiembre";
		break;
		case 10:
		case '10':
			$mes = "Octubre";
		break;
		case 11:
		case '11':
			$mes = "Noviembre";
		break;
		case 12:
		case '12':
			$mes = "Diciembre";
		break;
			
	}
	$mes = date('d')." ".$mes;
	return $mes;
	
	
}

//POUPADAS DE 2013 até 01 NOV
$toneladasPoupadas = 924396;

//razão de 1 Tonelada a cada 212.5 segundos
//$toneladasPorDia = 406.5;

// Atualizado em 10/03/2009
// razão de 1 TONELADA por min = 0,2819
$toneladasPorDia = 406.36;
$toneladasPorHora = 16.93;
$toneladaQuatroMin = 1.13;

//$dataFinal = strtotime("now");
//$dataInicial = strtotime("2013-11-01");

header( 'Content-Type: text/html; Charset=UTF-8' );
date_default_timezone_set( 'America/Sao_Paulo' );
     
$dataFinal    = new DateTime(date("now"));
$dataInicial  = new DateTime("2013-11-01");  

 $dias = $dataFinal->diff($dataInicial); 
 $numDias = (int)$dias->format('%a');
 
//$numDias = ($dataFinal - $dataInicial) / 240;
echo $numDias . ' Dias </br>';

$toneladasPoupadas += round($toneladaQuatroMin * $numDias);

/*
 * Pelo que entendo isso era para colocar 0 a esquerda e 
 * completar os 7 dígitos
 */

//echo 'saida teste = '. $toneladasPoupadas .'</br>';
//while (strlen($toneladasPoupadas) < 7) 
//{
//	$toneladasPoupadas = '0'.$toneladasPoupadas;
//}

$toneladasPoupadas = str_pad($toneladasPoupadas,7,"0",STR_PAD_LEFT);
echo 'saida teste = '. $toneladasPoupadas .'</br>';


$display1 = substr($toneladasPoupadas,0,1);
$display2 = substr($toneladasPoupadas,1,1);
$display3 = substr($toneladasPoupadas,2,1);
$display4 = substr($toneladasPoupadas,3,1);
$display5 = substr($toneladasPoupadas,4,1);
$display6 = substr($toneladasPoupadas,5,1);
$display7 = substr($toneladasPoupadas,6,1);

//Poderia organizar melhor os $dados trabalhando com um array
preg_match_all('/[\d]/', $toneladasPoupadas, $m);
var_dump($m);

$mes= nomeMes(date('m'));
$PTG= nomeMes(date('m'));
$ESP= nomeMesEsp(date('m'));
$ENG = date('d')." ".date('F');

$ano = date('Y');

$dados = "&display1=$display1&display2=$display2&display3=$display3&display4=$display4&display5=$display5&display6=$display6&display7=$display7&ano=$ano&mes=$mes&iENG=$ENG&iPTG=$PTG&iESP=$ESP";

print $dados;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o caminho :)

 

Mas ainda não muda o ultimo digito :/ (no caso tem que aumetar 1 a cada 4 minutos)

 

Minha suspeitas aumentaram que possa ser o problema no flash.

Pois, tive que adicionar um digito na animação.

 

O jeito que exibe é como se eu tivesse copiado o 6º digito e colado no 7º. Mas não foi isso :/

Verifiquei o nome da layer e realmente está certa. :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver se entendi o calculo do script esta incorreto ? os número retornados nas variáveis $display estão errados? Pois não vejo duplicidade. Se o calculo esta correto no script, Creio que o problema seja no flash. Não analisei os cálculos em si, verifica isso se for o caso rescrevemos o script novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema da duplicidade :)

Era no flash mesmo!

 

O calculo está certo!

 

O problema agora é que preciso que ele se atualize a cada tonelada, no caso, a cada 212.5 seg.

Na minha programação antiga, as vezes atualizava e as vezes não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso estar errado, mas poderia encapsular todo processo do calculo em uma função (método) e executa-la a cada 212.5 segundos (aproximadamente 4 minutos). De modo que a cada execução da função você retornaria o novo valor para o contador. Minha única dúvida é como vai executar esta chamada da função pelo flash ( não manjo nada de flash rsrs) .

Compartilhar este post


Link para o post
Compartilhar em outros sites
104 Dias 
saida teste = 0924514
array(1) { [0]=> array(7) { [0]=> string(1) "0" [1]=> string(1) "9" [2]=> string(1) "2" [3]=> string(1) "4" [4]=> string(1) "5" [5]=> string(1) "1" [6]=> string(1) "4" } } &display1=0&display2=9&display3=2&display4=4&display5=5&display6=1&display7=4&ano=2014&mes=13 Fevereiro&iENG=13 February&iPTG=13 Fevereiro&iESP=13 Febrero

Aqui ta retornando assim....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso estar errado, mas poderia encapsular todo processo do calculo em uma função (método) e executa-la a cada 212.5 segundos (aproximadamente 4 minutos). De modo que a cada execução da função você retornaria o novo valor para o contador. Minha única dúvida é como vai executar esta chamada da função pelo flash ( não manjo nada de flash rsrs) .

 

Caso não consiga fazer a chamada pelo flash, tente usar AJAX para isso. Bom, eu acho que dá para fazer pelo flash, se não me engano já vi coisa parecida. ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, o caso do digito 6 eu arrumei.

 

Dentro do flash, tem esse action, que carrega as variaveis:

System.useCodepage=true;//INCIIO DO MEU CÓDIGOloadVariables("toneladas.php", "_root", "POST");function carregaVars() {	loadVariables("toneladas.php", "_root", "POST");}var teste = new LoadVars();teste.onLoad = function () {    _root;    this;    _root.varcidade = this.varcidade;    _root.varmax = this.varmax;    _root.varmin = this.varmin;    _root.varchuv = this.varchuv;    _root.icotemp = this.vartempo;    _root.vardata = this.vardata;    _root.varcidadeformatada = this.varcidadeformatada;};teste.load("previsao.php");playCC = setInterval(carregaVars, 100000);Stage.align = "LT";// prevent the Flash movie from resizing when the browser window changes size. Stage.scaleMode = "noScale";// create a listener objectstageListener = new Object();// add a methods for it to do certain things when the Stage is resized by our userstageListener.onResize = function() {expandTop();expandBodyText(); }Stage.addListener(stageListener);expandTop = function() {// expand the top banner/header/masthead - whatever you want to call it - to be as wide as the stagebannerBackground_mc._width = Stage.width;mc.bg._width = Stage.width;mc.bg._width = Stage.height;// then move our nice little "contact us" button so it stays right-aligned with the page} expandBodyText = function() {body_txt._height = Stage.height - body_txt._y - 10;myScrollBar.setSize(Stage.height - myScrollBar._y - 10);}// create a sound object so we can control it with actionscriptsound1 = new Sound();// NOTE: the following line picks up the identifier which we choose in the library option *linkage*sound1.attachSound("sound6");// the next line starts the sound at the very beginning with 999,999 loopssound1.start(0, 999999);/*display1 = "7";display2 = "2";display3 = "1";display4 = "3";display5 = "6";display6 = "8";display7 = "9";ano = "2007";mes = "Maio";*/_root.seguinteCheck = 0;

Acredito que possa ser no setInterval o problema.

Só não entendo como antes com 6 digitos estava funciondo corretamente, e agora não :/

 

 

 

Consegui fazer atualizar a cada 1 tonelada.

 

 

 

Só que agora o problema é que ele aumenta no penúltimo digito, e não no ultimo :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.