Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema com dois for (resolvido)


acborba

Pergunta

Pessoal estou com o seguinte problema:

Tenho 3 tabelas da seguinte forma: questionario possui n grupo que possui n perguntas.

O que eu quero fazer é um questionário dinâmico com essas 3 informações do banco.

<descricao>

<grupo1>

<pergunta1>

<pergunt2>...

<grupo2>

<pergunta3>

<pergunta4>...

A dificuldade é passar pelo grupo1 e mostrar as perguntas referentes, grupo2 e mostrar as perguntas referentes...

Aqui está umas das milhares de tentativas:

<? 
//pega id do questionário vindo da página anterior
$idquest=$_GET['idquest'];

//faz um select para imprimir o nome do questionário
$quest=mysql_query("SELECT descricao FROM questionario WHERE idquestionario='$idquest'");
$reg_quest=mysql_fetch_assoc($quest);


//faz um select na tabela grupo para pegar todos os grupos relacionado a um questionário
$grupo=mysql_query("SELECT grupo,idgrupo FROM grupo WHERE questionario_idquestionario='$idquest'" );
$qtd_grupo = mysql_num_rows($grupo);
$reg_grupo=mysql_fetch_assoc($grupo);
$idgrupo=$reg_grupo[idgrupo];

//faz um select na tabela pergunta para pegar todos as perguntas relacionadas a um grupo
$perg=mysql_query("SELECT pergunta FROM pergunta WHERE grupo_idGrupo='$idgrupo'");
$qtd_perg = mysql_num_rows($perg);
?>

<body>
<div id="logo">
    <h1><img src="images/logo.jpg" alt="logo" width="180" height="130" />Questionário da CPA </h1>
</div>
<p>&nbsp;</p>
<table width="100%" border="0" align="center">
              <tr>
                <td align="center" class="style1"><span class="style2"><? echo $reg_quest[descricao];?> //mostra o nome do questionário que está sendo respondido  </span></td>
              </tr>
</table>
<div id=geral>
<?
//listar todos os grupos e mostrar na tela
for ($x=1; $x<=$qtd_grupo; $x++)
{
    $reg_grupo=mysql_fetch_assoc($grupo);
?>

<table width="100%" border="0" align="center">
    <td><span class="style3">Grupo: <? echo $reg_grupo[grupo];?> </span></td>
  </tr>
</table>
<p> </p>

<?
//listar todas as perguntas referentes ao seu grupo e motrar na tela
for ($i=1; $i<=$qtd_perg; $i++)
{
$reg_perg=mysql_fetch_assoc($perg);
?>

<table width="100%" border="0">
  <tr>
    <td><? echo $i.' - '; echo $reg_perg[pergunta]; ?> </td>
  </tr>
</table>
<table width="200">
  <tr>
    <td><label>
      <input type="radio" name="opcao<? echo $i; ?>" value="radio" />
      Muito Safisfeito</label></td>
  </tr>
  <tr>
    <td><label>
      <input type="radio" name="opcao<? echo $i; ?>"  value="radio" />
      Satisfeito</label></td>
  </tr>
  <tr>
    <td><label>
      <input type="radio" name="opcao<? echo $i; ?>"  value="radio" />
      Pouco Satisfeito</label></td>
  </tr>
  <tr>
    <td><label>
      <input type="radio" name="opcao<? echo $i; ?>"  value="radio" />
      Insatisfeito</label></td>
  </tr>
  <tr>
    <td><label>
      <input type="radio" name="opcao<? echo $i; ?>"  value="radio" />
      Muito Insatisfeito</label></td>
  </tr>
    <tr>
    <td><label>
      <input type="radio" name="opcao<? echo $i; ?>"  value="radio" />
      Não Se Aplica</label></td>
  </tr>
</table>
<? 
} 
}
?>

Algum ser iluminado que posso me ajudar??

Editado por acborba
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Aqui fiz um pequeno teste para que possam entender melhor.

<?
$grupo = mysql_query("SELECT grupo,idgrupo FROM grupo WHERE questionario_idquestionario='$idquest' ORDER BY idgrupo" );
$qtd_grupo = mysql_num_rows($grupo);

$reg_grupo=mysql_fetch_assoc($grupo);
$idgrupo = $reg_grupo[idgrupo];

$perg = mysql_query("SELECT pergunta,idPergunta FROM pergunta WHERE grupo_idGrupo='$idgrupo'");
$qtd_perg = mysql_num_rows($perg);

for ($x=1; $x<=$qtd_grupo; $x++)
{
    $reg_grupo=mysql_fetch_assoc($grupo);
    echo $reg_grupo[grupo];
    echo $reg_grupo[idgrupo];
    echo "GRUPO".$x;
    echo "<br>";
    
    for($y=1; $y<=$qtd_perg; $y++)
    {
        $reg_perg=mysql_fetch_assoc($perg);
        echo $reg_perg[pergunta];
        echo $reg_perg[idPergunta];
        echo "PERGUNTA".$y;
        echo "<br>";
    }
}

Dando um echo em qtd_grupo=3 e qtd_perg=4, mas `biblioteca`=4 perguntas , `atendimento`=1 e `infra-estrutura`=0. Ele esta repetindo pra cada grupo 4 perguntas e em branco, e eliminando as primeiras perguntas e grupo assim:

Infra - Estrutura39GRUPO1

Em relação aos equipamentos de informática você acha que:102PERGUNTA1

Em relação aos ambiente de estudos você considera:98PERGUNTA2

Em relação ao atendimento você considera:97PERGUNTA3

Em relação ao acervo você considera:96PERGUNTA4

Atendimento40GRUPO2

PERGUNTA1

PERGUNTA2

PERGUNTA3

PERGUNTA4

GRUPO3

PERGUNTA1

PERGUNTA2

PERGUNTA3

PERGUNTA4

Sendo o correto assim:

Biblioteca id37 GRUPO1

Em relação aos equipamentos de informática você acha que:102PERGUNTA1

Em relação aos ambiente de estudos você considera:98PERGUNTA2

Em relação ao atendimento você considera:97PERGUNTA3

Em relação ao acervo você considera:96PERGUNTA4

Infra - Estrutura id39 GRUPO2 <não mostraria esse grupo, pois está sem perguntas>

<sem perguntas>

Atendimento id40 GRUPO3

Em relação ao atendimento você considera: 103 PERGUNTA1

Editado por acborba
Link para o comentário
Compartilhar em outros sites

  • 0

Problemas resolvido.

Erro não estava exatamente no for mas sim no posicionamento do select.

<? 
$idquest = $_GET['idquest'];

$quest = mysql_query("SELECT descricao FROM questionario WHERE idquestionario='$idquest'");
$reg_quest = mysql_fetch_assoc($quest);

?>

<body>
<form method="post" name="frm" action="questionario2.php">
<div id="logo">
    <h1><img src="images/logo.jpg" alt="logo" width="180" height="130" />Questionário da CPA </h1>
</div>
<p>&nbsp;</p>
<table width="100%" border="0" align="center">
              <tr>
                <td align="center" class="style1"><span class="style2"><? echo $reg_quest[descricao];?> </span></td>
              </tr>
</table>
<div id=geral>
<?
$grupo = mysql_query("SELECT grupo,idgrupo FROM grupo WHERE questionario_idquestionario='$idquest'" );
$qtd_grupo = mysql_num_rows($grupo);

for ($x=1; $x<=$qtd_grupo; $x++)
{

$reg_grupo=mysql_fetch_assoc($grupo);
$idgrupo = $reg_grupo[idgrupo];

?>

<table width="100%" border="0" align="center">
    <td><span class="style3">Grupo: <? echo $reg_grupo[grupo];?> </span></td>
  </tr>
</table>
<p> </p>
<?

$perg = mysql_query("SELECT pergunta,idPergunta FROM pergunta WHERE grupo_idGrupo='$idgrupo'");
$qtd_perg = mysql_num_rows($perg);

for ($i=1; $i<=$qtd_perg; $i++)
{
$reg_perg=mysql_fetch_assoc($perg);
?>
<table width="100%" border="0">
  <tr>
    <td><? echo $i.' - '; echo $reg_perg[pergunta]; ?> </td>
  </tr>
</table>
<table width="200">
  <tr>
    <td><label>
      <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<? echo $reg_perg[idPergunta]?>]" value=5 />
      Muito Safisfeito</label></td>
  </tr>
  <tr>
    <td><label>
      <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<? echo $reg_perg[idPergunta]?>]"  value=4 />
      Satisfeito</label></td>
  </tr>
  <tr>
    <td><label>
      <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<? echo $reg_perg[idPergunta]?>]"  value=3 />
      Pouco Satisfeito</label></td>
  </tr>
  <tr>
    <td><label>
      <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<? echo $reg_perg[idPergunta]?>]"  value=2 />
      Insatisfeito</label></td>
  </tr>
  <tr>
    <td><label>
      <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]"  value=1 />
      Muito Insatisfeito</label></td>
  </tr>
    <tr>
    <td><label>
      <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]"  value=0 />
      Não Se Aplica</label></td>
  </tr>

</table>
<p> </p>
<? 
} 
}
?>
<table width="200" border="0">
  <tr>
    <td><input type="submit" name="Submit" value="Cancelar" /></td>
        
    <td>
    <input type="submit" value="ok"></td>
  </tr>
</table>
<p>&nbsp;</p>
</div>
</form>
<input type="hidden" name="idquest" value="<? echo $idquest?>" />
</body>
</html>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...