Ir para conteúdo

POWERED BY:

Arquivado

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

renatinhavip

Lógica de Enquete

Recommended Posts

Boa tarde!

 

Alguém sabe a lógica ou algum exemplo prático a partir da qual eu possa montar um sistema de enquete com múltipla escolha e página de resultados ordenando a partir dos mais votados?

 

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque o que irá ser votado no banco e sempre que alguém votar você adiciona + 1 (mais um) no resultado, e ai é só você fazer um select ordenando por votos que terá o mais votado, sem mais você consegue!

Compartilhar este post


Link para o post
Compartilhar em outros sites

VEu sugiro que crie uma tabela auxiliar enquetexopcoes, assim voce nao precisa de limitar o tanto de opçoes que a enquete vai ter e ainda pode definir se é radiobutton ou checkbox

 

eu faria assim a estrutura da tabela:

 

cd_enquete

opcao

votos

tipo (aqui você define um campo Númerico , se for 0 é checkbox se for 1 é radiobutton..

 

 

Na hora do sql você faz..

 

sql = "select * from TABELA where cd_enquete="&cd_enquete&" and tipo ="&tipo&" order by votos desc"

Ai no codigo você faria um IF pra determinar se é 0 ou 1, se for 0 você faz as opçoes com checkbox e o contrario se for 1... ;)

 

é só uma dica..pode aperfeiçoar

Compartilhar este post


Link para o post
Compartilhar em outros sites

VEu sugiro que crie uma tabela auxiliar enquetexopcoes, assim voce nao precisa de limitar o tanto de opçoes que a enquete vai ter e ainda pode definir se é radiobutton ou checkbox

 

eu faria assim a estrutura da tabela:

 

cd_enquete

opcao

votos

tipo (aqui você define um campo Númerico , se for 0 é checkbox se for 1 é radiobutton..

 

 

Na hora do sql você faz..

 

sql = "select * from TABELA where cd_enquete="&cd_enquete&" and tipo ="&tipo&" order by votos desc"

Ai no codigo você faria um IF pra determinar se é 0 ou 1, se for 0 você faz as opçoes com checkbox e o contrario se for 1... ;)

 

é só uma dica..pode aperfeiçoar

Bom... no form, as opções já estão como checkbox. Mas mesmo assim não deixa votar em mais de uma opção.

Não entendi. http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

imagine um form com varios checkbox´s, onde o user selecionado 3 por exemplo, você pode recupera-los da mesma forma e incluir no bd, a diferença que você pode limitar o user para apenas uma resposta , como um enquete normal, e depois pegar os dados e jogar num gráfico, que pode ser de barra ,linhas pizza para mostrar a porcentagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, estou usando este código:

 

<%
Set conn = Server.CreateObject("ADODB.Connection")
strConexao = "Provider=SQLOLEDB;Data Source=178.178.2.12;User Id=sa;Password=assistsqlotimo;Initial Catalog=Intranet;Connect Timeout=10"
Set RS = Server.CreateObject("ADODB.Recordset")
conn.open strConexao

rs.activeconnection = conn
rs.CursorLocation = 3
rs.CursorType = 0
rs.LockType = 1
rs.source = "select pergunta from tbl_pergunta"
rs.open()

'Seleciono as respostas
set rs1 = server.CreateObject("ADODB.Recordset")
rs1.activeconnection = conn
rs1.CursorLocation = 3
rs1.CursorType = 0
rs1.LockType = 1
rs1.source = "select id, respostas from tbl_respostas"
rs1.open()

%>
<html>
<head>
<title>Untitled Document</title>
<script language="javascript" type="text/javascript">
function checa(nform) {
	//validacao de radio buttons sem saber quantos sao
	marcado = -1
	for (i=0; i<nform.op.length; i++) {
		if (nform.op[i].checked) {
			marcado = i
			resposta = nform.op[i].value
		}
	}
	
	if (marcado == -1) {
		alert("Selecione uma opção.");
		nform.op[0].focus();
		return false;
	} else { //esse else so foi colocado para evitar que o form desse o submit
		return true; 
	} 
		return true;
}
</script>
</head>

<body>
<%= rs("pergunta")%>
<form action="default.asp" method="post" name="enquete" id="enquete" onSubmit="return checa(this);">
  <table width="100%" border="0" cellspacing="1" cellpadding="1">
  <% do while not rs1.eof %>
	<tr>
	  <td width="17%" align="right"><input name="op" type="checkbox" value="<%= rs1("id")%>" /></td>
	  <td width="83%" align="left"><span class="borda"><%= rs1("respostas")%></span></td>
	</tr>
	<% rs1.movenext()
	loop %>
	<tr>
	  <td colspan="2" align="right"><input name="Submit2" type="submit" class="botao" value="VOTAR" /></td>
	  </tr>
  </table>
</form>
<%
voto = request.form("op")
if not isempty(request.Form("Submit2")) then

set rs = server.CreateObject("ADODB.Recordset")
rs.activeconnection = conn
rs.CursorLocation = 3
rs.CursorType = 0
rs.LockType = 1
rs.source = "select id_respostas, votos from tbl_votos where id_respostas = "& voto &""
rs.open()
	if not rs.eof then
		insere = "update tbl_votos set votos = "& rs("votos") + 1 &" where id_respostas = "& voto &""
		conn.execute(insere)
		response.Write("<script>alert('Obrigado pela sua Participação.')</script>")
	else
		insere = "insert into tbl_votos (id_respostas, votos) values ("& voto &", 1)"
		conn.execute(insere)
		response.Write("<script>alert('Obrigado pela sua Participação.')</script>")
	end if

end if
%>
<div align="center"><a href="java script:abre('resultado.asp','Resultado','width=320,height=180')">Resultado</a></div>
</body>
</html>
<%
rs.close()
set rs = nothing
rs1.close()
set rs1 = nothing
conn.close()
set conn = nothing
%>

como posso adaptar para o user poder marcar mais de uma opção?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Terá que usar CheckBoxes no lugar dos RadioButtons e na sua SQL substitua o Update para usar uma clausula com IN e o seu INSERT deverá ser em loop. Dê uma olhada no tópico pendurado "Duvidas Frequentes" que tem algo sobre o uso de múltiplos checkboxes.

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.