Ir para conteúdo

POWERED BY:

Arquivado

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

Guilherme Oderdenge

Enquete em PHP

Recommended Posts

Salve, querido fórum!

 

Procurei a internet inteira e não achei nenhum tutorial/script que solucionasse o meu problema: uma enquete em ajax+php só que, ao invez de textos, usem imagens.

 

No caso, são 2 imagens, e dependendo da imagem que o visitante clicar, o voto é computado para tal.

 

Espero que eu tenha sido claro.

O primeiro plano é achar ela em PHP (o que eu não consegui) e o segundo é aplicá-la em AJAX (mas isso farei em outra área).

 

Conseguem me indicar algo?

 

Se possível, detalhem o máximo possível para ficar claro pra mim.

 

Desde já, grato.

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi

se sabe fazer uma enquete com textos, qual é a dificuldade de usar imagem?

 

O primeiro plano é achar ela em PHP (o que eu não consegui)

Salve o path da imagem em algum lugar: BD ou arquivo.

Depois é só recuperar o path e mostrar na enquete

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi de por a lógica de colocá-la em imagem, uma vez que é carregada de um banco de dados.

 

Eu tentei cadastrar algo com o "<img>", mas não vai. :T

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara .. você vai salvar o path em um campo varchar .. ou blob?

.. e bem simples .. utilize o FILES pra mandar .

salvo o caminho dela .. voce indica ela com o php

 

 

exemplo:

$img = mysql_query("select * from tabela balblalbalba");
$imagen = mysql_fetch_array($img);
print'<img src=\"local_onde_salva_as_fotos/'.$imagen['campo_da_imagen'].'\">';

depois o resto e simples .. você faz o ajax sobre evento onclick .. porem você vai ter que botar um ID na imagen pra ele gravar qual delas

foi selecionada .. des de então você grava na tabela o numero de votos .. e pra exibir o resultado você faz um count onde teve mais votos

em tal imagen :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer que as opções da enquete sejam imagens em vez de texto, é isso?

Então, em vez de exibir um texto, basta mostra uma tag img.

 

não entendi o que é esse "não vai"

se você não explicar exatamenteo que ocorre, não temos como ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, Andrei. Estou usando tudo em varchar e, infelizmente, não entendi como proceder com a sua explicação.

Para ser mais específico, só entendi que tenho que carregar uma imagem.

 

Tens algum detalhe a mais para me ajudar?

 

Desde já, grato.

Abraço!

 

- Edit

 

@Beraldo

 

O que acontece é carregar o código (<img src=) ao invés de exibir a imagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que rolo amigo ..

cara explica melhor .. você quer exibir a tag & a imagen ? sua 'tag' seria <img src="">

.. ?

 

o ajax seria + / - assim

<script type="text/javascript">
function xmlhttp()
{

       if (window.XMLHttpRequest)
       {
               return new XMLHttpRequest();
       }

       var versao = ['Microsoft.XMLHttp', 'Msxml2.XMLHttp', 'Msxml2.XMLHttp.6.0', 'Msxml2.XMLHttp.5.0', 'Msxml2.XMLHttp.4.0', 'Msxml2.XMLHttp.3.0','Msxml2.DOMdocument.3.0'];
       for (var i = 0; i < versao.length; i++)
       {
               try
               {
                       return new ActiveXObject(versao[i]);
               }
               catch(e)
               {
                       alert("Seu navegador não possui recursos para o uso do AJAX!");
               }
       }
       return null;
}

function votar(){
 ajax = xmlhttp();
 img = document.getElementById("imagen").value;
  if (ajax)
  {
          ajax.open('get','paginadevoto.php?votoid='+img, true);
          ajax.onreadystatechange = voto;
          ajax.send(null);
  }
}

function voto(){
if (ajax.readyState==4){
if (ajax.status==200){
document.getElementById('div , span  .. id de onde vai botar o resultado').innerHTML = ajax.responseText;
}
}
}
</script>
<img src="..exibe a foto se quiser .." id="vem do banco um id ou valor que você ponha fixo" onclick="votar()">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Andrey.

 

Obrigado novamente pela ajuda, mas então... eu gostaria de exibir SOMENTE a imagem.

 

Obrigado pelo código ajax, mas como eu poderia adaptá-lo a enquete? Simplesmente faz com que ele seja uma função do botão "Enviar"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim .. cara se você não entende de js .. pode esquecer , o ajax e praticamente todo baseado nele rs ..

mais enfim .. ja usou $_GET ? se ja . so aprender como o js faz pra pegar valor de campos o resto e mole

 

posta teu codigo todo ai .. que eu vejo pra você .. a sorte e que to inspirado hoje rsrs .. bora lá ! :joia:

 

cade o codigo ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Andrey, desculpa a demora!

 

O código é esse:

<?
require './config/config.php';

$link = mysql_connect($dbhost, $dbuser, $dbpass);
$result = mysql_db_query($dbname, "SELECT * FROM enquete", $link);
$data = mysql_fetch_array($result);
?>
<div id="enquete">
<div id="corpo">
<form id="form1" name="form1" action="add_voto.php" method="post" style="margin-top:0px; margin-bottom:0px;">
<table width="150" border="0" cellspacing="0" cellpadding="0">
 <tr>
   <td><div id="pergunta" class="pergunta"><b><?=$data[pergunta]?></b></div></td>
 </tr>
 <tr>
   <td>
<?
// Aparecer respostas: //
// ------- Resposta 1 ----------//
   if($data[resp1]){ $resposta1 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='0'>
   $data[resp1]</div>";
echo "$resposta1";
} else {
echo ""; } 
// ------- Resposta 2 ----------//
if($data[resp2]){ $resposta2 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='1'>
   $data[resp2]</div>";
echo "$resposta2";
} else {
echo ""; } 
// ------- Resposta 3 ----------//
if($data[resp3]){ $resposta3 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='2'>
   $data[resp3]</div>";
echo "$resposta3";
} else {
echo ""; } 
// ------- Resposta 4 ----------//
if($data[resp4]){ $resposta4 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='3'>
   $data[resp4]</div>";
echo "$resposta4";
} else {
echo ""; } 
// ------- Resposta 5 ----------//
if($data[resp5]){ $resposta5 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='4'>
   $data[resp5]</div>";
echo "$resposta5";
} else {
echo ""; } 
?>
   </td>
 </tr>
 <tr>
   <td>
<?
// Determina se a pessoa já votou
// Está programado para 1 voto a cada 1 hora. Para mudar edite o arquivo
if ($_COOKIE['votacaoenquete'] == votado ){
echo "<div style='margin:5px 0px 3px 0px; padding:5px 0px 0px 5px;' class='votado'>Seu voto já foi cadastrado! Obrigado.</div>";
}
else { ?>
<input name="votar" value="Votar" onClick="Spry.Utils.submitForm('form1', updateResponseDiv, {method:'post', url:'add_voto.php'});" type="button" style="width:80px; height:20px; margin-left:5px;" class="form">
<? } ?>    </td>
 </tr>
 <tr>
   <td><div id="result-3"><a href="javascript:void(0);" onClick="Spry.Utils.submitForm('form1', updateResponseDiv, {method:'post', url:'resultado.php'});" class="link"></a></div></td>
 </tr>
</table>
</form>
</div>
</div>

 

E eu queria que ele exibisse o resultado automaticamente, ou seja, sem a necessidade de clicar em algum botão do tipo "Exibir resultado", sacous? Eu queria que assim, embaixo de cada imagem, aparece o resultado respectivamente.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

O.o .. quando carregar a pagina mostrar o total dos votos ?

 

ai mano .. bota teu SQL da tabela ai pra eu ver os campos .. senão nao tem como ajudar .. sem saber aonde você ta contando

o voto da imagen

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

 

CREATE TABLE `enquete` (
 `id` int(10) unsigned NOT NULL auto_increment,
 `pergunta` varchar(150) default NULL,
 `resp1` varchar(80) default NULL,
 `resp2` varchar(80) default NULL,
 `resp3` varchar(80) default NULL,
 `resp4` varchar(80) default NULL,
 `resp5` varchar(80) default NULL,
 `resultado` text,
 PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
require './config/config.php';

$link = mysql_connect($dbhost, $dbuser, $dbpass);
$result = mysql_db_query($dbname, "SELECT * FROM enquete", $link);
$data = mysql_fetch_array($result);
?>
<div id="enquete">
<div id="corpo">
<form id="form1" name="form1" action="add_voto.php" method="post" style="margin-top:0px; margin-bottom:0px;">
<table width="150" border="0" cellspacing="0" cellpadding="0">
 <tr>
   <td><div id="pergunta" class="pergunta"><b><?=$data[pergunta]?></b></div></td>
 </tr>
 <tr>
   <td>
   <?php
     $count = mysql_db_query("select count(`resp1`) from `enquete` ");               //assim pra todos .. 1 query pra cada
     $contagem1 = mysql_fetch_array($count); // um fetch pra cada
   ?>
<?php
// Aparecer respostas: //
// ------- Resposta 1 ----------//
   if($data[resp1]){ $resposta1 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='0'>
   $data[resp1]</div>";
       echo "$resposta1";
       echo 'Total DE Votos '.$contagem1[0].'';         // assim pra todos
       } else {
       echo ""; }
// ------- Resposta 2 ----------//
       if($data[resp2]){ $resposta2 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='1'>
   $data[resp2]</div>";
       echo "$resposta2";
       } else {
       echo ""; }
// ------- Resposta 3 ----------//
       if($data[resp3]){ $resposta3 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='2'>
   $data[resp3]</div>";
       echo "$resposta3";
       } else {
       echo ""; }
// ------- Resposta 4 ----------//
       if($data[resp4]){ $resposta4 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='3'>
   $data[resp4]</div>";
       echo "$resposta4";
       } else {
       echo ""; }
// ------- Resposta 5 ----------//
       if($data[resp5]){ $resposta5 = "<div id='result-1' class='resp'><input type='radio' name='reponse' value='4'>
   $data[resp5]</div>";
       echo "$resposta5";
       } else {
       echo ""; }
?>
   </td>
 </tr>
 <tr>
   <td>
<?php
// Determina se a pessoa já votou
// Está programado para 1 voto a cada 1 hora. Para mudar edite o arquivo
if ($_COOKIE['votacaoenquete'] == votado ){
echo "<div style='margin:5px 0px 3px 0px; padding:5px 0px 0px 5px;' class='votado'>Seu voto já foi cadastrado! Obrigado.</div>";
}
else { ?>
<input name="votar" value="Votar" onclick="Spry.Utils.submitForm('form1', updateResponseDiv, {method:'post', url:'add_voto.php'});" type="button" style="width:80px; height:20px; margin-left:5px;" class="form">
<?php } ?>    </td>
 </tr>
 <tr>
   <td><div id="result-3"><a href="javascript:void(0);" onclick="Spry.Utils.submitForm('form1', updateResponseDiv, {method:'post', url:'resultado.php'});" class="link"></a></div></td>
 </tr>
</table>
</form>
</div>
</div>

executa ai . ve no que da ..

exato beraldo .. olha esses resp ai e meio inutil e pior .. porque ?

seguinte você tem os campos pra resposta porque não 1 campo pra resposta e as imagens com valores diferentes

 

ex : respostas

imagen 1 = grava la 1

imagen 2 = grava la 2

 

dai fica bem mais facil e melhor ..

você faz a count por where ..

 

select count(*) from `enquete` where `respostas` = '1'

assim pra os 5 tipos .. ou seja . serão 5 querys pra cada contagem ..

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

usem aspas para delimitar strings

se habilitar error_reporting com E_ALL nesse código aparecerá vários E_NOTICE's...

sim .. mais emfim Kaminari .. você tem as duas opçoes de fazer isso .. uma facil e melhor

a outra por um caminho mais dificil e pior pra problemas futuros como nosso amigo 'Beraldo' disse ..

 

 

Eu : sugiro fazer oque Beraldo disse .. remodele o banco .. pra facilitar os counts e qualquer outro tipo de situação futura , mesmo envolvendo

o banco !

 

Abraços ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Beraldo e Andrey.

 

Seguinte, existem 5 opções porque eu botei assim, mas o máximo vão ser duas opções, porque não quero que, na hora de edição, seja posto mais de duas opções, sacaram?

 

E esse é o código genérico, sem a tag imagem.

 

E com relação as alterações que fizeste, Andrey, eu notei, mas não entendi. E ai?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara e a coisa mais simples

suponha que eu tenho o meu sistema ...

meu banco seria assim

CREATE TABLE `enquete` (
 `id` int(10) unsigned NOT NULL auto_increment,
 `pergunta` varchar(150) default NULL,
 `resposta` varchar(80) default NULL,
 `idimg` varchar(80) default NULL,
 `resultado` text,
 PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

 

pergunta = pergunta la ..

resposta = a imagen

idimg = gravava um numero pra eu identificar aquela imagen

resultado ?? você quer que faz o count e da update ali ?

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.