Jump to content


Photo

Loop Dentro Do Loop


  • Faça o login para participar
3 replies to this topic

#1 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 01/06/2011, 15:08

Boa tarde,

Tenho duas tabelas questao e questao_resposta -> vinculada com questaoID da primeira - essas tabela são para um banco de questão da escola, como funciona:

cadastra-se a questão e depois os itens da questão na tabela questao_resposta, assim

Questão -> Traduza para o português as palavras abaixo

Itens -> Car
Shoes
House ...etc

Na hora de montar o teste o professor lista as questões e num checkbox marca as questões e clica para gerar o teste, ai é que vem o problema que não estou conseguindo resolver.
Uso este código:
<?php

//conecta e seleciona banco de dados

$conexao=mysql_connect("localhost", "root", "") or die("Conexão falhou");

mysql_select_db("advento",$conexao) or die("Erro selecionando banco");

$teste = $_POST["teste"]; // Recupero os checkboxes marcados
$cont = count($teste); // conto quantos checkboxes

for($i=0; $i<$cont; $i++){ //loop para recuperar do MYSQL cada checkbox marcado
$query = "SELECT * FROM questao, questao_resposta WHERE questao.questaoID = '$teste[$i]' AND questao.questaoID = questao_resposta.questaoID";
$result = mysql_query($query);
$ln = mysql_fetch_array($result);
echo $i+ 1;
echo " - ".$ln["questao"]."</br><br/>".$ln["itemA"]."<br/><br/>"; //Nesta linha sai a questao e os itens mas os itens saem um só e podem ser n itens. como fazer um loop somente para os itens
}


// Fechando a conexao

mysql_close($conexao);


?>

Simplificando a visuliazação fica assim:

1 -Questao 1

item1 ..........> não aparece os outros itens desta questão

2 - Questão 2

item1 ..........> não aparece os outros itens desta questão

etc

Será que expliquei direito ???

Obrigado

#2 Fábio Web Arts

Fábio Web Arts

    Web IN Arts

  • Usuários
  • 299 posts
  • Sexo:Masculino
  • Localidade:No Saco De Magé
  • Interesses:Tudo que for da área de Informática

Posted 01/06/2011, 16:11

isso e mole eu ja tive o mesmo problema akie esta:

esse que eu fiz akie foi para uma prova:

<?
$i=1;
while($reg_quest = mysql_fetch_object($qry_quest)){
$qry_resp = $mysql->sql_query("SELECT * FROM `respostas` WHERE `id_prova` = '".$_GET['id']."' AND `id_quest` = '".$reg_quest->id."'");
?>
<td colspan="3">
<strong>
<font color="#333333" size="2" face="Arial, Helvetica, sans-serif">
<?
echo "<br><strong>Questao ".$i.":</strong> ".$reg_quest->nome."\n<input type=\"hidden\" name=\"perg[".$i."]\" value=\"".$reg_quest->id."\" /><br><br>\n";
?>
</font>
</strong>
</td>
</tr>
<tr>
<td>
<p>
<?
$j=1;
while($reg_resp = mysql_fetch_object($qry_resp)){
echo "<input type=\"radio\" name=\"resp[".$i."]\" value=\"".$reg_resp->id."\" />\n<strong>Resposta ".$j."-".$i.":</strong> ".$reg_resp->nome."<br>\n";
$j++;
}
?>
</p>
</td>
</tr>
<?
$i++;
}
?>

Edição feita por: Fábio Web Arts, 01/06/2011, 16:11.


#3 kleryson

kleryson

    Mestre

  • Usuários
  • 687 posts
  • Sexo:Masculino

Posted 01/06/2011, 16:15

Bom faz o sequinte vamos separar em duas querys...

SQL 1 : Buscar as questões

SELECT * FROM questao WHERE id = $teste[$i]
[SQL]

SQL2 : Buscar as multiplas escolhas da questão acima:
[SQL]
SELECT * FROM questao_resposta WHERE questaoid= {$id da questao}


Agora no sistema:
<?php

//conecta e seleciona banco de dados

$conexao=mysql_connect("localhost", "root", "") or die("Conexão falhou");

mysql_select_db("advento",$conexao) or die("Erro selecionando banco");

$teste = $_POST["teste"]; // Recupero os checkboxes marcados
$cont = count($teste); // conto quantos checkboxes

for($i=0; $i<$cont; $i++){ //loop para recuperar do MYSQL cada checkbox marcado
$query = mysql_query("SELECT * FROM questao WHERE questaoID = '$teste[$i]'");
while ($resultQuestao = mysql_fetch_assoc($query)){
     echo "Questão: ".$resultQuestao['questao']."<br/><Br/>";
     
     $queryResposta = mysql_query("SELECT * FROM questao_resposta WHERE questaoid=".$resultQuestao['questaoId']);
     while ( $resultadoResposta = mysql_fetch_assoc($queryResposta)){
         echo $resutladoResposta['resposta']."<br/>";
     }
}


}


// Fechando a conexao

mysql_close($conexao);


?>

(y)??

#4 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 02/06/2011, 09:48

Agradeço a todos pela ajuda ...

Fabio sua solução eu guardei para estudos ... muito obrigado

Kleryson utilizei a sua ... ficou perfeito ... muito obrigado

Ficou assim:

<?php

//conecta e seleciona banco de dados

$conexao=mysql_connect("localhost", "root", "") or die("Conexão falhou");

mysql_select_db("advento",$conexao) or die("Erro selecionando banco");

$teste = $_POST["teste"]; // Recupero os checkboxes marcados
$cont = count($teste); // conto quantos checkboxes

for($i=0; $i<$cont; $i++){ //loop para recuperar do MYSQL cada checkbox marcado
$query = mysql_query("SELECT * FROM questao WHERE questaoID = '$teste[$i]'");
while ($resultQuestao = mysql_fetch_assoc($query)){
     echo "Questão: ".$resultQuestao['questao']."<br/><Br/>";
     
     $queryResposta = mysql_query("SELECT * FROM questao_resposta WHERE questaoID=".$resultQuestao['questaoID']);
     while ( $resultadoResposta = mysql_fetch_assoc($queryResposta)){
         echo $resultadoResposta['itemA']."<br/>";
     }
}


}


// Fechando a conexao

mysql_close($conexao);


?>

Problema resolvido ... mais uma vez obrigado

Edição feita por: sfonseca45, 02/06/2011, 09:51.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq