Ir para conteúdo

POWERED BY:

Arquivado

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

fekz

Problema: Relacionando tabelas...

Recommended Posts

Galera, to com um problemão...

Tenho 2 tabelas, e vou botar as estruturas pra vocês:

 

Tabela opções:

numero (auto_inc)
idenq   // Id da enquete, pra mostrar apenas as opções desta enquete atual.
opcoes // Valor da opção da enquete X

Tabela enquete:

id (auto_inc)
pergunta // Pergunta da enquete
quantidade // Quantidade de opções pra serem criadas dinamicamente

Ou seja, eu quero botar uma quantidade, exemplo: 5!

A enquete de id 8, por exemplo, vai criar uma enquete com 5 opções, e cada opção teria que ser relacionada ao campo opcoes da tabela opções.

 

ex:

Enquete id = 9

Qual a sua cor preferida?

Quantidade = 3

 

Tabela opções:

idenq = 9

opcao 1 = azul

opcao 2 = rosa

opcao 3 = verde

 

Olhem como está renderizando:

http://www.palmeiras24horas.site90.com/teste.php
Ele está fazendo corretamente, porém invés de colocar a opção ao lado, cliquem no link pra ver oq acontece.

 

Segue o código do script:

$sql = "SELECT * FROM enquete E JOIN opcoes O ON E.id = O.idenq WHERE E.id=8";
$resultado = mysql_query($sql);
while ($linha = mysql_fetch_array($resultado)){
$titulo = $linha["titulo"];
$pergunta = $linha["pergunta"];
$idenq = $linha["id"];
$opcoes = $linha["quantidade"];
$numero = $linha["numero"];
$opcao = $linha["opcao"];
print " " . $idenq . " " . $numero . " " . $opcao;
echo "<ul>
<li class=\"first\"><span>$titulo</span></li>
<li><p class=\"right\">$pergunta</p>";
echo "<div class=\"formenq\">
<form class=\"formularioenquete\" method=\"post\" action=\"mostraresenq.php\">";

	for($i=0; $i < $opcoes; $i++)
	{
		echo "<input type=\"radio\" name=\"enquete\" value=\"a\" />$opcao";
	}
?>

Estou tentando de tudo quanto é jeito mas não encontro a solução. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se rodares a tua consulta no MYSQL, acho que vai perceber que todas as linhas retornam todos os atributos, o que faz a montagem da tua página estar errada.

Para manter mais ou menos a mesma estrutura, tente algo assim:

<?php
$sql = "SELECT * FROM enquete E JOIN opcoes O ON E.id = O.idenq WHERE E.id=8";
$resultado = mysql_query($sql);

echo "<div class=\"formenq\"><form class=\"formularioenquete\" method=\"post\" action=\"mostraresenq.php\">";

$x = 0;
while ($linha = mysql_fetch_array($resultado)) {
	$titulo = $linha["titulo"];
	$pergunta = $linha["pergunta"];
	$idenq = $linha["id"];
	$opcoes = $linha["quantidade"];
	$numero = $linha["numero"];
	$opcao = $linha["opcao"];
	
	if ($x == 0) {
		print " " . $idenq . " " . $numero . " " . $opcao;
	
		echo "<ul>
			<li class=\"first\"><span>$titulo</span></li>
			<li><p class=\"right\">$pergunta</p>";
	}
			
	echo "<input type=\"radio\" name=\"enquete\" value=\"a\" />$opcao";
	
	if (++$x == $opcoes) echo "</ul">;
}
echo '</form></div>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, maravilha, isso eu acho que deu certo, obrigado.

 

Porém, na minha página principal:

http://www.palmeiras24horas.site90.com

 

Ele lista as 2 últimas enquetes, e como eu estou pondo:

$sql = "SELECT * FROM enquete E JOIN opcoes O ON E.id = O.idenq WHERE E.id=8";
Ele só vai mostrar uma enquete, a do ID atual... Precisava fazer com que pegasse as últimas duas, e cada uma seria um id, no caso o 7 e o 8... e ai... ferro?

 

auhuhauhaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criei este tópico:

http://forum.imasters.com.br/index.php?showtopic=330589

 

e botaram RESOLVIDO.. porém não está resolvido...

Resolvido parcialmente:

<?php
$sql = "SELECT * FROM enquete E JOIN opcoes O ON E.id = O.idenq WHERE E.id=8";
$resultado = mysql_query($sql);

echo "<div class=\"formenq\"><form class=\"formularioenquete\" method=\"post\" action=\"mostraresenq.php\">";

$x = 0;
while ($linha = mysql_fetch_array($resultado)) {
	$titulo = $linha["titulo"];
	$pergunta = $linha["pergunta"];
	$idenq = $linha["id"];
	$opcoes = $linha["quantidade"];
	$numero = $linha["numero"];
	$opcao = $linha["opcao"];
	
	if ($x == 0) {
		print " " . $idenq . " " . $numero . " " . $opcao;
	
		echo "<ul>
			<li class=\"first\"><span>$titulo</span></li>
			<li><p class=\"right\">$pergunta</p>";
	}
			
	echo "<input type=\"radio\" name=\"enquete\" value=\"a\" />$opcao";
	
	if (++$x == $opcoes) echo "</ul">;
}
echo '</form></div>';
?>

Acontece que:

 

Opa, maravilha, isso eu acho que deu certo, obrigado.

 

Porém, na minha página principal:

http://www.palmeiras24horas.site90.com

 

Ele lista as 2 últimas enquetes, e como eu estou pondo:

$sql = "SELECT * FROM enquete E JOIN opcoes O ON E.id = O.idenq WHERE E.id=8";
Ele só vai mostrar uma enquete, a do ID atual... Precisava fazer com que pegasse as últimas duas, e cada uma seria um id, no caso o 7 e o 8... e ai... ferro?

 

auhuhauhaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um select ordenado pelo código decrescente pelo id e exibe apenas os 2 ultimos.

 

 

ex:

 

Select * from noticia order by id desc limit 2

acho que isso deve resolver....

Compartilhar este post


Link para o post
Compartilhar em outros sites
Criei este tópico:

http://forum.imasters.com.br/index.php?showtopic=330589

 

e botaram RESOLVIDO.. porém não está resolvido...

Resolvido parcialmente...

Você deveria ter solicitado ao Moderador da área que o tópico fosse reaberto, mas deixa como está.

 

Tal ação serve para que o assunto de um tópico não acabe duplicado, ou seja, para que não sejam criados vários tópicos, do mesmo usuário, tratando do mesmo assunto. ;)

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um select ordenado pelo código decrescente pelo id e exibe apenas os 2 ultimos.

 

 

ex:

 

Select * from noticia order by id desc limit 2

acho que isso deve resolver....

Não cara, não adianta fazer isso. Como eu expliquei, o id tem que ser = o id da enquete atual, porém como tem 2, ficou essa confusão na minha cabeça....

 

Isso funcionaria, mas eu preciso puxar somente onde id=id_atual_da_enquete...

 

Se for só pra aparecer, eu sei que é limit 2...

 

Alguém me ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesclei os dois topicos e retirei o resolvido

 

da proxima vez voce faz duas coisas:

 

Primeiro nao diga que deu certo sem estar com a resolução completa como ocorreu neste caso que foi colocado o resolvido provavlemente por esta frase

 

Opa, maravilha, isso eu acho que deu certo, obrigado.

E segundo e mais importante nao duplique topicos com o mesmo assunto sob hipotese alguma, neste caso bastaria solicitar no proprio topico que o resolvido fosse retirado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesclei os dois topicos e retirei o resolvido

 

da proxima vez voce faz duas coisas:

 

Primeiro nao diga que deu certo sem estar com a resolução completa como ocorreu neste caso que foi colocado o resolvido provavlemente por esta frase

 

Opa, maravilha, isso eu acho que deu certo, obrigado.

E segundo e mais importante nao duplique topicos com o mesmo assunto sob hipotese alguma, neste caso bastaria solicitar no proprio topico que o resolvido fosse retirado

 

Obrigado, e desculpe! Da próxima seguirei os passos corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa um OR, que o SELECT vai lhe retornar os 2.

$sql = "SELECT * FROM enquete E JOIN opcoes O ON E.id = O.idenq WHERE (E.id=8) OR (E.id=7)";
É essa a dúvida ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa um OR, que o SELECT vai lhe retornar os 2.

$sql = "SELECT * FROM enquete E JOIN opcoes O ON E.id = O.idenq WHERE (E.id=8) OR (E.id=7)";
É essa a dúvida ?
você leu meu post?

Qual é a dúvida agora? está dando algum erro? qual ?

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.