Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos, parece simples, porém complicado. Tou querendo montar um Array com dados contidos em uma tabela do database MySQL.
Quero Montar o seguinte Array:
$enquete[1] = array('Em que região você mora?',array('Norte', 'Nordeste', 'Centro-Oeste', 'Sudeste', 'Sul'));
Desejo que a PERGUNTA e as RESPOSTAS do Array acima referente a uma enquete venham diretamente do MYSQL, para que o Array acima seja montado automaticamente ao eu cadastrar as PERGUNTAS e RESPOSTAS no banco de dasdos MySQL.
Desdejá agradeço a ajuda dos amigos do fórum
Abrassss
Alex Dias
Você poderia fazer algo como isso:
$sql = mysql_query('SELECT pergunta,resposta FROM sua_tabela');
while($res = mysql_fetch_assoc($sql)){
$dados[] = array('pergunta' => $res['pergunta'], 'resposta' => $res['resposta']);
}
// ja ta tudo no array $dados, para varre-lo faça algo como
foreach($dados as $info){
echo $info['pergunta'];
echo $info['resposta'];
}
Não testei, mas seria algo assim :)Desconsidere essa opção... ficaria muito complicado registrar os votos...
O que eu faço é criar 3 tabelas:
Uma para as enquetes
Uma para as opções...
Outra para os votos...
As opções estariam relacionadas a uma enquete por uma foreign key e os votos estariam relacionados a uma opção do msm modo...
Amigo, dê uma olhada nesse link: http://forum.imasters.com.br/index.php?/topic/373553-enquete-estilo-site-codigo-fonte/page__view__findpost__p__1439465
Tem um exemplo completo de uma enquete.
>
Como está a estrutura das tabelas? Como tentou fazer?
Carlos Eduardo
Olá Carlos Eduardo, tentei fazer assim:
//CONECTA COM O BANCO DE DADOS
require_once("conecta.php");
//SQL
$sql = "SELECT * FROM pergunta_resposta WHERE STATUS='Ativada' ORDER BY PERGUNTA";// CHAMA OS DADOS DA TABELA
while ($linha=mysql_fetch_array($resultado)) {
$id_pergunta = $linha["ID_PERGUNTA"];
$pergunta = $linha["PERGUNTA"];
$resposta_a = $linha["RESPOSTA_A"];
$resposta_b = $linha["RESPOSTA_B"];
$resposta_c = $linha["RESPOSTA_C"];
$resposta_d = $linha["RESPOSTA_D"];
$resposta_e = $linha["RESPOSTA_E"];
$status = $linha["STATUS"];
$enquete[1] = array($pergunta,array($resposta_a, $resposta_b, $resposta_c, $resposta_d, $resposta_e));
Desejo apenas montar o Array abaixo apartir do banco de Dados MySQL:
$enquete[1] = array('Em que região do Brasil você está?',array('Norte', 'Nordeste', 'Centro-Oeste', 'Sudeste', 'Sul'));
Segue a ENQUETE COMPLETA,apenas um arquivo, meu objetivo é apenas evitar de tá escrevendo no código as PERGUNTAS E RESPOSTAS, gostaria que as mesmas viessem diretamente do MySQL.
<?php
/ Sistema de enquete com PHP e MySQL by limiteinfinito.com.br /
$enquete[1] = array('Em que região do Brasil você está?',array('Norte', 'Nordeste', 'Centro-Oeste', 'Sudeste', 'Sul'));
$padrao = 1; // Definir uma enquete para ser padrão
$cookie_time = 30; // Tempo de expiração do cookie em dias
$config['host'] = 'localhost';
$config['user'] = 'root';
$config['password'] = '007';
$config['db'] = 'enquete';
/ Fim da edição /
if (isset($_POST['ref']) && is_numeric($_POST['ref'])) {
$id_poll = $_POST['ref'];
}
elseif (isset($_GET['p']) && is_numeric($_GET['p'])) {
$id_poll = $_GET['p'];
$poll = $id_poll;
}
elseif (!isset($id_poll) && !isset($_POST['ref']) && !isset($_GET['p'])) {
$id_poll = $padrao;
}
if (!array_key_exists($id_poll,$enquete)) {
$id_poll = $padrao;
}
$pergunta = array_shift($enquete[$id_poll]);
$opcoes = array_pop($enquete[$id_poll]);
$votou = $_POST['ref'];
$n_poll = count($opcoes);
$ip_user = $_SERVER['REMOTE_ADDR'];
$this_page = htmlentities($_SERVER['PHP_SELF']);
mysql_connect($config['host'],$config['user'],$config['password']) or die('Erro: '.mysql_error());
mysql_select_db($config['db']) or die('Erro: '.mysql_error());
function mostra_resultado() {
global $pergunta, $opcoes, $n_poll, $id_poll;
$txt .= '<div class="poll">';
$txt .= $pergunta.'<br><br>';
$sql = mysql_query('SELECT * FROM enquete WHERE id_enquete="'.$id_poll.'"') or die(mysql_error());
$total = mysql_num_rows($sql);
$txt .= '<table class="poll" border="0" cellpadding="0" cellspacing="0" width="98%">';
$i = 0;
while ($i <= $n_poll-1) {
$sql = mysql_query('SELECT * FROM enquete WHERE id_enquete="'.$id_poll.'" and id_opcao="'.($i+1).'"') or die(mysql_error());
$votos = mysql_num_rows($sql);
$porcentagem = @round($votos*100/$total,1);
$resultado[$i]['porcentagem'] = $porcentagem;
$resultado[$i]['opcao'] = $opcoes[$i];
$i++;
if ($i > 10) die();
}
$i = 0;
while ($i <= $n_poll-1) {
rsort($resultado);
$txt .= '<tr><td width="100%">'.$resultado[$i]['opcao'].'</td></tr>';
$txt .= '<tr><td width="100%" valign="top" height="20"><img style="border:solid 1px #2C5787;" src="poll_bar.gif" width="'.$resultado[$i]['porcentagem'].'%" height="12"> '.$resultado[$i]['porcentagem'].'%<br></td></tr>';
$i++;
if ($i > 10) die();
}
$txt .= '</table><br>';
$txt .= '<center>Total de votos: '.$total.'</center>';
$txt .= '</div>';
return $txt;
}
function mostra_enquete() {
global $pergunta, $opcoes, $n_poll, $id_poll, $this_page;
?>
<script>
function checa(nform) {
marcado = -1
for (i=0; i<nform.opcao.length; i++) {
if (nform.opcao[i].checked) {
marcado = i
resposta = nform.opcao[i].value
}
}
if (marcado == -1) {
alert("Selecione uma resposta.");
nform.opcao[0].focus();
return false;
} else
return true;
}
</script>
<?
$txt .= '<div class="poll">';
$txt .= $pergunta.'<br><br>';
$txt .= '<table class="poll" border="0" cellpadding="0" cellspacing="0" width="98%">';
$txt .= '<form method="POST" action="'.$this_page.'" name="poll" onSubmit="return checa(this);">';
$i = 0;
while ($i <= $n_poll-1) {
$txt .= '<tr><td width="100%" valign="top" height="20"><input type="radio" name="opcao" value="'.($i+1).'">'.$opcoes[$i].'</td></tr>';
$i++;
if ($i > 10) die();
}
$txt .= '</table>';
$txt .= '<input type="hidden" name="ref" value="'.$id_poll.'"><center><br><input class="poll" type="submit" value="Votar" name="B1"></center></form>';
$txt .= '<center><a href="'.$this_page.'?p='.$id_poll.'" rel="nofollow">Mostrar resultado</a></center>';
$txt .= '</div>';
return $txt;
}
$sql = mysql_query('SELECT * FROM enquete WHERE ip="'.$ip_user.'" AND id_enquete="'.$id_poll.'"') or die(mysql_error());
if (mysql_num_rows($sql)>=1 || isset($poll) || isset($_COOKIE[$id_poll])) {
echo mostra_resultado();
}
elseif ($votou >= 1 && isset($_POST[opcao])) {
@setcookie('poll'.$id_poll, $id_poll, time()+60*60*24*$cookie_time);
mysql_query('INSERT INTO enquete VALUES("'.$id_poll.'","'.$_POST[opcao].'","'.$ip_user.'")')or die(mysql_error());
echo mostra_resultado();
} echo mostra_enquete();
}
?>Troque isto
$enquete[1]
Por isto
$enquete[]
Veja se resolve.
Carlos Eduardo
>
Troque isto
$enquete[1]
Por isto
$enquete[]
Veja se resolve.
Carlos Eduardo
Olá Carlos Eduardo, amigo não resolveu! Obigado pela dica.
Faz o seguinte. Depois do while, coloca este código.
echo '<pre>';
print_r($enquete);
Poste aqui a saída.
Carlos Eduardo
>
Faz o seguinte. Depois do while, coloca este código.
echo '<pre>';
print_r($enquete);
Poste aqui a saída.
Carlos Eduardo
Amigo, nada ainda, não funfou!
Mais uma vez obrigado.
Alex, era para você postar oque o var_dump() retornou, para termos idéia de como o teu script está se comportando.
Não tinha 'oque funcionar ainda'. Não tem código milagroso.. ainda é necessário fazer um debug no teu script, e ver onde deve mecher.
Posta oque apareceu, depois que você colocou o var_dump, como o Carlos indicou.
Mesmo assim, em #5, o João postou uma enquete completa e funcionando..
Como está a estrutura das tabelas? Como tentou fazer?
Carlos Eduardo