Ir para conteúdo

POWERED BY:

Arquivado

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

Mayc0n

[Resolvido] Erro...PHP

Recommended Posts

E ai Galera...

 

Seguinte, vivo consultando coisas nos fóruns e estou na minha caminhada de aprendizado de PHP, a maioria dos problemas que aparecem sempre acabo resolvendo fuçando, lendo uma coisa aqui, outra ali.. mas tem coisas que eu não acho em lugar nenhum e não faço idéia de como resolver.

Esse por exemplo:

 

Peguei um script pronto de guia comercial e ele tem milhares de erros que eu estou resolvendo e aprendendo, tem um erro nesse código:

 

<?php



// ###########################  head  ###################################
// head: função que configura a página e inicializa a tabela
//
function head() 
{
	include("enquete/config.php");
	echo "<BODY bgcolor='$bgcolor' link='#CCCC00'";
	echo "vlink='#CCCC00'";
	echo "alink='#CCCC00'>";
	echo "<table style='BORDER-RIGHT: white 1px solid; BORDER-TOP: white 1px solid; BORDER-LEFT: white 1px solid; BORDER-BOTTOM: white 1px solid;' cellspacing='2' cellpadding='4' width='100%' border='0'>
		<tr><td class=TextoCinzaEscuro >
		<table width='135' border='0' cellpadding='0' cellspacing='0'>
		<tr>
		<td class=TextoCinzaEscuro>";
} // head

// ###########################  foot  ###################################
// foot: função que finaliza a tabela
//
function foot () 
{
	echo "</td></tr></table></td></tr></table>";
} // foot

// ###########################  record  #################################
// record: grava o endereço ip no arquivo $ip_file
//
function record($REMOTE_ADDR) 
{
	include("enquete/config.php");

	// abre o arquivo para escrita após a última linha.
	$fp=fopen("enquete/$ip_file", "a+"); 
	
	// envia para o arquivo o ip e a hora
	fputs ($fp,$REMOTE_ADDR."][".time()."\n");
	fclose($fp); // fecha o arquivo
} // record

// ###########################  chech  #################################
// check: função que checa se o ip já está gravado
//
function check($REMOTE_ADDR) 
{
	include("enquete/config.php");
	global $valid;
	$ip=$REMOTE_ADDR;
	$data=file("enquete/$ip_file");
	$now=time();
	foreach ($data as $record) 
	{
		$subdata=explode("][",$record);
		if ($now < ($subdata[1]+3600*$timeout)) 
		{
			if ($ip == $subdata[0]) 
			{
				$valid=0;
				break;
			}
		}
	}
}// check 

// ###########################  save  ##################################
// save: função que computa o voto
//
function save($opcao)
{
	global $opcao;
	include("enquete/config.php");
	$data=file("enquete/$datafile");
	$subdata=explode("][",$data[$opcao]);
	$subdata[2]+=1;
	$data[$opcao]=implode("][", $subdata);
	$data[$opcao]=$data[$opcao]."\n";
	$fp=fopen("enquete/$datafile","w+");
	$a=0;

	do {
		fputs($fp,$data[$a]);
		$a++;
	} while($a<count($data));

	fclose($fp);
}// fim save

// ###########################  form  ##################################
// form: função que cria a tabela para votação
//
function form($PHP_SELF)
{
	include("enquete/config.php");

	head(); //inicializa a tabela

	echo "<form method='post' action='#enquete'><p align='center'>";
	$data=file("enquete/$datafile");
	$question=$data[0];
	$nb_options=count($data)-1;
	echo "<b>$question</b></p><br>";

	for($nb=1;$nb <= $nb_options; $nb++)
	{
		$option=explode("][","$data[$nb]");
		echo "<input type='radio' name='opcao' value='$nb'> ";
		echo "$option[0]<br>";
	}

	echo "<input type='hidden' name='save' value='yes'>";
	echo "<p align='right'><INPUT type=image height=16 width=38  src='sctem_arquivos/Ok.gif' border=0 name=imageField2></form>";
	echo "<a href=\"java script:MM_openBrWindow('vote.php?action=results','playervideo01','status=yes,width=510,height=390,top=111,left=10')\" class='TextoCinzaEscuro'>
		Confira os resultados</p>"; 
	foot();// fecha a tabela
}// form

// ###########################  results  ##################################
// results: função que imprime os resultados 
//
function results()
{
	include("enquete/config.php");

	head();
	
	$data=file("enquete/$datafile");
	$nb_answers=count($data);
	$votes=0;
	$a=1;

	do { // calcula o total de votos
		$subdata=explode("][",$data[$a]);
		$votes += $subdata[2];
		$a++;
	} while($a < $nb_answers);

	$a=1;
	$b="answerv";
	if($votes!=0)
		$v=100/$votes; //descobre o valor de 1 voto em %
	echo "<p class=TextoCinzaEscuro><b>$data[0]<br>Resultado da enquete.</b><br><br>";

	do {
		$subdata=explode("][",$data[$a]);
		$av = $subdata[2] * $v; // calcula a porcentagem de cada opção
		echo "$subdata[0] ";
		echo " - $subdata[2] votos<br>";
		echo "<img src='enquete/$subdata[1]' border='0' width='$av' height='15'>";
		printf(" %01.1f", $av); 
		echo"%<br>";
		$a++;
	} while ($a < $nb_answers);

	echo "<br>
		Já foram computados $votes votos";
	echo "<br>";
	foot(); //fecha a tabela
}// results

// ###########################  execução  ################################
// execução da página
//
check($REMOTE_ADDR);

if ($valid=="0")// se já votou, mostra somente os resultados
{ 
	results();
}
elseif ($action=="results") // se clicar para ver os resultados
{ 
	results(); 
}
elseif ($save=="yes" && $valid!="0") // se votou e o ip ainda não foi gravado
{ 
	save($opcao); // computa o voto
	record($REMOTE_ADDR); // grava o ip
	results(); // mostra os resultados
}
elseif ($action=="save" && !empty($valid)) // se enviou o voto, sem
							 // marcar uma opção
{ 
	results(); 
}
elseif ($action!="save" && $valid!="0") // se ainda não enviou o voto,
							// mas uma opção está marcada
{ 
	form($PHP_SELF); 
}

?>

 

 

 

 

Sei que o erro é nas linhas 172, 176, 182 e 186 pq a variável action não está definida, mas a pergunta é, como vou definir a variável action?

 

 

Espero que possam me ajudar...

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É provável que ela venha por GET ou POST.

Chame-à da forma correta, por exemplo por GET:

 

$_GET['action'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

É provável que ela venha por GET ou POST.

Chame-à da forma correta, por exemplo por GET:

 

CODE

$_GET['action'];

 

 

Isso é de uma enquete, ai eu colocando $_GET['action']; ele pegaria essa variavel de onde?

Compartilhar este post


Link para o post
Compartilhar em outros sites

$_GET 

variáveis passadas pelo endereço (requisição). Exemplo: http://www.site.com.br/?var=valor

 

$_POST

vindas de formulários enviados através do método post.

 

$_SESSION

variáveis de sessão (sessions)

Compartilhar este post


Link para o post
Compartilhar em outros sites

$_GET 
variáveis passadas pelo endereço (requisição). Exemplo: http://www.site.com.br/?var=valor

$_POST
vindas de formulários enviados através do método post.

$_SESSION
variáveis de sessão (sessions)

---------------------------------------------------------------------------------------------------------------

Beleza, acho que entendi como devo fazer, vou dar uma pesquisada sobre como fazer a enquete e entender todo o código e volto a postar aqui quando conseguir resolver..

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

error_reporting(0); no inicio do código resolveria, não?

Não, apenas esconderia os erros. http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, eu configurando o php.ini pra nao mostrar erros eles simplesmente nao aparecem, mas também não funciona o script.

 

e eu to pesquisando aqui e tentando até descobrir o problema acertar, o cara fica meio sem referencia, mas eu chego lá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me parece que esse script foi feito em uma versão mais antiga do PHP, isso teria alguma relação?

 

pois tem muitos erros no script acusando a mesma coisa, e não sei de onde partir pra resolver, alguém tem alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO:

 

$action e $save eram globais, faltava definir elas

 

bastou adicionar no código:

 

global $save;

global $action;

 

que ficou tudo certo.

 

Valeu a ajuda!

 

pesquisando e aprendendo...

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.