sr.silva 1 Denunciar post Postado Novembro 1, 2007 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
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 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
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 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
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 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
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 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
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 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
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 ei..amigo!! não funcionou! tá permitindo cadastro repetido... Compartilhar este post Link para o post Compartilhar em outros sites
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 heheh..como faço isso!! Compartilhar este post Link para o post Compartilhar em outros sites
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 hm echo "votou"; echo "nao votou"? coloca coisas que te identifiquem se ta funcionando ou nao Compartilhar este post Link para o post Compartilhar em outros sites
sr.silva 1 Denunciar post Postado Novembro 1, 2007 //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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 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
Micael Vianna 0 Denunciar post Postado Novembro 1, 2007 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
sr.silva 1 Denunciar post Postado Novembro 1, 2007 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