/* Arquivo de funções * */ require_once("ajax/config.php"); require_once ("libs/xajax/xajax.inc.php"); // Já deixo as bibliotecas do XAJAX disponíveis para toda a minha aplicação /** * Função que conecta ao banco de dados * */ function conecta_bd() { $conexao = mysql_connect(DB_HOST,DB_USUARIO,DB_SENHA) or die(mysql_error()); mysql_select_db(DB_BANCO); return $conexao; } /** * Função que grava um voto da enquete no banco de dados * */ function registraVoto($id_opcao, $retorna_resultados=true, $id_enquete=false, $id_html="") { $conexao = conecta_bd(); $objResponse = new xajaxResponse(); // Para executar esse comando o usuário do MySQL precisa ter permissão de LOCK TABLES mysql_query("LOCK TABLES enquetes READ, opcoes_enquetes WRITE"); $strSQL = "UPDATE opcoes_enquetes SET opcoes_num_votos = opcoes_num_votos+1 WHERE opcoes_id=".intval($id_opcao); // O intval é questão de segurança mysql_query($strSQL); if($retorna_resultados) $objResponse->addAssign($id_html,"innerHTML",retornaResultadoEnquete($id_enquete)); // Envia um alerta com o resultado da operação via AJAX if(mysql_affected_rows() == 0) $objResponse->addAlert("Houve erros durante o processamento do seu voto. Desculpe-nos o transtorno."); else { $_SESSION["_ja_votou"] = true; $objResponse->addAlert("Obrigado pela sua participação!"); } mysql_query("UNLOCK TABLES"); return $objResponse; } /** * Função que retorna os resultados de uma enquete em HTML * */ function retornaResultadoEnquete($id_enquete) { $conexao = conecta_bd(); // Pega daos da enquete $strSQL = "SELECT * FROM enquetes WHERE id=".intval($id_enquete); $query = mysql_query($strSQL); if(mysql_num_rows($query) == 0) return false; else { $resultado = ""; $enquete = mysql_fetch_array($query); $resultado .= "".$enquete["enquete_titulo"].""; // Conta o total de votos $strQuery = "SELECT SUM(opcoes_num_votos) AS 'total_votos' FROM opcoes_enquetes WHERE enquetes_id=".$enquete["id"]; $query = mysql_query($strQuery); $row = mysql_fetch_array($query); $total_votos = $row["total_votos"]; // Pega opções de resposta $strQuery = "SELECT * FROM opcoes_enquetes WHERE enquetes_id=".$enquete["id"]." ORDER BY opcoes_num_votos DESC"; $query = mysql_query($strQuery); // monta a tabelinha com a estatística de perguntas respondidas, por porcentagem de votos. $resultado .= "
| ".$opcao["opcoes_titulo"]." | ".number_format((($opcao["opcoes_num_votos"]/$total_votos)*100),1,",",".")."% - ".$opcao[opcoes_num_votos]." votos |
Total de votos recebidos: $total_votos |