Ir para conteúdo

POWERED BY:

Arquivado

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

sr.silva

Sistema simples de votação

Recommended Posts

Pessoal!

 

Seguinte, tô trabalhando com duas funções em uma determinada classe.

 

A lógica no negócio é a seguinte:

 

- O usuário, se cadastra para poder participar de uma votação online.

 

- Ao finalizar o cadastro, aparece um link para que ele possa escolhar as opções da votação.

 

- Preciso também, validar os cadastros para não permitir que o usuário possa votar + de 1 vez.

 

Abaixo, coloco os código que consegui chegar:

 

Função ADD

function add($nome, $email, $votou)
	{
		$bd = new bancodedados();
		$bd->consulta("insert into votacao set nome = '$nome', email = '$email', votou = '$votou' ");
	}

 

Chamada das FUNÇÃO

<?
if (isset($_POST['enviar']))
{
	 //Classe Votacao
	$obVotacao  = new Votacao();

	//Chama função ADD 
	$obVotacao->add($_POST['nome'], $_POST['email'], 1);
	
	echo "<script>alert('Dados enviado com sucesso');</script>";
	redireciona("index.php?pagina=votacao");
}
?>

Como podem ver, acho que cheguei até um pouquinho longe( http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif meu conhecimento é bastante restrito!! )

 

Só que, preciso finalizar essa idéia e não sei como fazer.

 

Uma idéia simples que tá me dando dor de cabeça.

 

Agradeço a todos !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

 

Você pode usar varias formas de validação, vou lhe sugerir duas:

 

Cookie (que permite o cara apagar ou nao estar com eles ativados)

Banco de Dados - Criar uma tabela onde será armazenado os votos.

 

Voce na funcao add faz algo tipo:

 

"SELECT id FROM votacao WHERE nome = '$nome' AND email = '$email'";

 

se tiver, ele jah votou, se nao, vota.

 

Uma sugestao. Em vez de colocar o nome e o e-mail do cara, pq nao colocar o ID da tabela que ficam os cadastros? Use o conceito de banco de dados relacionais.

 

Outra sugestão:

Armazene o ID da pergunta, se não o usuário só vai poder votar uma vez =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço sua resposta!

 

Mas teria como me ajudar a criar os códigos.

 

Como pode ver, não sei muito sobre PHP...

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu nao sei o que o seu consulta e sobre a questao das melhorias no banco de dados é algo bem complexo para responder num topico, o ideal seria voce procurar sobre banco de dados relacionais para aprender a modelar corretamente.

 

PHP
function Add($nome,$email,$tipo)

{

// tendo por base jah ter uma conexao com a variavel $con

$sql = mysql_query("select id from votacao WHERE nome = '$nome' AND email = '$email'",$con);

$numResultados = mysql_num_rows($sql);

if ($numResultados > 0) { echo "voce jah votou"; }

else {

       $bd->consulta("insert into votacao set nome = '$nome', email = '$email', votou = '$votou' ");

}

}

 

como disse, se o cara for votar em outra pergunta nao conseguirá, por isso seria ideal colocar o idPergunta

 

tipo:

 

perguntas:

id

pergunta

 

respostas:

id

perguntas_id /* eh a pergunta a qual se refere */

resposta

 

voto:

id

respostas_id /* nao preciso dizer a qual pergunta se refere, pq sei se ler a tabela respostas */

nome

email

 

 

este conceito de banco de dados eh importantissimo, e vale a leitura.

 

Depois voce faz uns selects mais elaborados e retorna tudo junto =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Micael!

 

Mais só terá uma pergunta, com várias opções...

 

Estive consultando outros amigos e chegamos a isso:

 

LINHA 29:  global $jaVotou = false; //propriedade da classe

	function add($nome, $cpf)
	{ .... }
	
	function verificaCadastro($nome, $cpf)
	{
		$bd = new bancodedados();
		$bd->consulta("SQL");	

		if ($bd->ress) 
		{
			$this->jaVotou = true;
			$rs = mysql_fetch_assoc($bd->ress);
		}

	}

onde aqui eu faço essa verificação;

 

//Chama função Verifica Cadastro	
	$obVotacao->verificaCadastro(parametros....);

	if($jaVotou)
	{
		echo "Obrigado pela sua participação";
	}	
	else	
	{
	
	//Chama função ADD 
	$obVotacao->add(parametros....);
	
	echo "<script>alert('Dados enviado com sucesso');</script>";
	redireciona("index.php?pagina=votacao");

Só que ao executar, aparece um erro na linha destacada...

 

 

Parse error: syntax error, unexpected T_GLOBAL, expecting T_FUNCTION in class_votacao.php on line 29

 

 

LINHA 29:  global $jaVotou = false; //propriedade da classe

O que poderá ser??

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmmm

se voce quer definir uma variavel na classe como global, voce coloca var $nomeDaVariavel.

 

Se quer pegar uma variavel global na funcao:

$variavel = $GLOBALS['variavel']

 

eu gosto sempre de prever futuras manutencoes, vai que o cara queira mudar a pergunta depois? aih tem que apagar os registros, muita mão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim amigo, só que eu faço referencia a essa variavel em um outro arquivo..

fazendo isso sera que funciona??

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao entendi bruno

 

tipo

nesse outro arquivo voce chama essa variavel e depois declara ela?

se voce quer pegar essa variavel de outro arquivo dentro de uma funcao tem que usar GLOBALS

 

explica melhor aih o que voce quis dizer que nao entendi

Compartilhar este post


Link para o post
Compartilhar em outros sites

e tipo assim.

 

Eu crio a variavel $jaVotou dentro da classe Votação( class_votacao.php).

 

Na página que preciso fazer a validação ( votacao.php , por exemplo ) eu faco a condição na variavel $jaVotou.

 

Só que aparece esse erro, que não deixa funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara

 

Uma variavel dentro da classe nao pode ser acessada de fora da classe.

 

O que tu pode fazer é:

 

class seila {

var $variavel

 

function getVariavel()

{

return $this->variavel;

}

}

 

e fora chamar assim:

 

echo $class->getVariavel();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu colocar o código, pra vocês olharem.

 

class_votacao.php

var $jaVotou;
	
	function getJaVotou()
	{
		$jaVotou = false;	
		return $this->jaVotou;
	}


	function add($nome)
	{
		$bd = new bancodedados();
		$bd->consulta("insert into votacao set nome = '$nome' ");
	}
	
	
	function verificaCadastro($nome)
	{
		
		$bd = new bancodedados();
		$bd->consulta("select nome, cpf from votacao where nome = '$nome' ");	

		if ($bd->ress) 
		{
			$jaVotou = true;
			$rs = mysql_fetch_assoc($bd->ress);
		}

	}

 

votacao.php

<?
if (isset($_POST['enviar']))
{
	//Classe Votacao
	$obVotacao  = new Votacao();

	//Chama função Verifica Cadastro	
	$obVotacao->verificaCadastro( .... );

	if($obVotacao->getJaVotou();)
	{
		echo "Obrigado pela sua participação";
	}	
	else	
	{
	
	//Chama função ADD 
	$obVotacao->add( ..... );
	
	echo "<script>alert('Dados enviado com sucesso');</script>";
	redireciona("index.php?pagina=votacao");
	
	}
}

?>

Ainda não está funcionando... :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

 

Quando você da o get, voce seta ele como falso, entao sempre vai ser falso o.O

 

votação:

PHP
var $jaVotou;

   

    function getJaVotou()

    {

        return $this->jaVotou;

    }

 

 

    function add($nome)

    {

         

        $bd = new bancodedados();

        $bd->consulta("insert into votacao set nome = '$nome' ");

    }

   

   

    function verificaCadastro($nome)

    {

       

        $bd = new bancodedados();

        $bd->consulta("select nome, cpf from votacao where nome = '$nome' ");    

 

        if ($bd->ress)

        {

            $this->jaVotou = true;

        }

        else

        {

            $this->jaVotou = false;

        }

    }

 

 

no seu arquivo voce chama a funcao verificaCadastro.

 

Depois tu faz o teu if la =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara

verifica esse if se ta retornando certinho

 

PHP
function verificaCadastro($nome)

    {

       

        $bd = new bancodedados();

        $bd->consulta("select nome, cpf from votacao where nome = '$nome' ");    

 

        if ($bd->ress)

        {

            $this->jaVotou = true;

        }

        else

        {

            $this->jaVotou = false;

        }

    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

//Editado

 

Desculpe coloquei as frases erradas..

 

Na verdade tá vindo com registro sim!!

 

Agora porque não valida a variável..é que tá pegando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o negócio meu amigo, e saber como verifico o retorno da função

 

validaCadastro

 

Porque assim, teremos condições de finalizar esse bloco "simples".

 

>>>>	if($obVotacao->validaCadastro())
	{
		echo "Obrigado pela sua participação";
	}	
	else	
	{
	
	//Chama função ADD 
	$obVotacao->add($_POST['nome'], $_POST['empresa'], $_POST['email'], $_POST['cpf'], 1);
	
	echo "<script>alert('Dados enviado com sucesso');</script>";
	redireciona("index.php?pagina=votacao");
	
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah, nao eh assim, voce tem que usar a variavel do voto

PHP
if($obVotacao->getJaVotou())

    {

        echo "Obrigado pela sua participação";

    }    

    else    

    {

   

    //Chama função ADD

    $obVotacao->add($_POST['nome'], $_POST['empresa'], $_POST['email'], $_POST['cpf'], 1);

   

    echo "<script>alert('Dados enviado com sucesso');</script>";

    redireciona("index.php?pagina=votacao");

   

    }

 

se voce olhar a logica erh a seguinte:

 

verifica se jah votou e seta na variavel

verifica se a variavel jahvotou eh true, se for da aviso, se nao, vota

Compartilhar este post


Link para o post
Compartilhar em outros sites

num teria que SETAR o valor da variavel $jaVotou???

 

Pois eu fiz o que voce, colocou agora e não funcionou...

 

Agora, quando eu mandei escrever...tá retornando os registros corretos...

 

 

Rapaz...sei que pra você deve tá complicado ajudar..uma coisa simples dessa, enrolando desde manhã!!

 

Hehehe, mas tá complicado meu amigo...tá complicado....

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.