Mayc0n 0 Denunciar post Postado Abril 23, 2009 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
Marcio Leandro 0 Denunciar post Postado Abril 23, 2009 É 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
Mayc0n 0 Denunciar post Postado Abril 23, 2009 É 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
Marcio Leandro 0 Denunciar post Postado Abril 23, 2009 $_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
Mayc0n 0 Denunciar post Postado Abril 23, 2009 $_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
Ezequiel2 0 Denunciar post Postado Abril 23, 2009 error_reporting(0); no inicio do código resolveria, não? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 23, 2009 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
Mayc0n 0 Denunciar post Postado Abril 23, 2009 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
Mayc0n 0 Denunciar post Postado Abril 24, 2009 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
Mayc0n 0 Denunciar post Postado Abril 24, 2009 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