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

Ajuda - Sistema de perguntas php


otaciojb

Pergunta

Tenho um questionário salvo no mysql com 50 perguntas,preciso criar uma tela para que o usuário responda. Só que eu preciso exibir uma a uma,exemplo:
 

<?php
require("conexao.php");?>
<html>
    <head>
        <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
               <meta name="viewport" content="width=device-width, initial-scale=1">

        <title></title>
        
                <link href="css/bootstrap.min.css" rel="stylesheet">
           <!-- Bootstrap -->
                <link href="bootstrap-paper/css/bootstrap.min.css" rel="stylesheet">

                <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
                <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
                <!--[if lt IE 9]>
                     <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
                     <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
                <![endif]-->
    </head>
<body>
<?php
 $query_count = mysql_query("SELECT
       rp.id           AS ORDEM,
       a.area_id       AS AREA,
       sb.sub_area_cod AS SUBGRUPO,
       p.perg_id       AS ID_PEGUNTA,
       p.perg_desc     AS DEC_PERGUNTA,
       rp.foto         AS FOTO,
       COUNT(rp.id)  AS TOTAL_PERG      
           FROM
              relacaoperg AS rp
                                INNER JOIN perguntas AS p   ON rp.id_pergunta = p.perg_id
                                INNER JOIN area      AS a   ON rp.id_area     = a.area_id
                                INNER JOIN sub_area  AS sb  ON rp.id_subgrupo = sb.sub_area_cod
                                
                                WHERE
                                    a.area_id='1' AND sb.sub_area_cod='1'")or die(mysql_error());
    
    if (empty($query_count)) {
    echo "Nenhum registro encontrado.";
    }

                   
 $query_pesquisa = mysql_query("SELECT
       rp.id           AS ORDEM,
       a.area_id       AS AREA,
       sb.sub_area_cod AS SUBGRUPO,
       p.perg_id       AS ID_PEGUNTA,
       p.perg_desc     AS DESC_PERGUNTA,
       rp.foto         AS FOTO          
           FROM
              relacaoperg AS rp
                                INNER JOIN perguntas AS p   ON rp.id_pergunta = p.perg_id
                                INNER JOIN area      AS a   ON rp.id_area     = a.area_id
                                INNER JOIN sub_area  AS sb  ON rp.id_subgrupo = sb.sub_area_cod
                                
                                WHERE
                                    a.area_id='1' AND sb.sub_area_cod='1'")or die(mysql_error());
    
    if (empty($query_pesquisa)) {
    echo "Nenhum registro encontrado.";
    }

    ?>
    <?php
    while ($row = mysql_fetch_array($query_count)) {
    $totalpergunta  = $row["TOTAL_PERG"];
    }
    while ($row = mysql_fetch_array($query_pesquisa)) {
    $ordem          = $row["ORDEM"];
    $area           = $row["AREA"];
    $subgrupo       = $row["SUBGRUPO"];
    $idpergunta     = $row["ID_PERGUNTA"];
    $descpergunta   = $row["DESC_PERGUNTA"];
    $foto           = $row["FOTO"];
    }
    ?>
<br>
<div class="container">
<div id="div1" style="width:80%; margin:5 auto;">
      <center><div class="panel panel-danger"><div class="panel-heading">ORGANIZACAO E LIMPEZA</div></div></center>
<div class="jumbotron">
 <form class="form-horizontal" action="questionario.php" method="post">
  <fieldset>

    -- Aqui é onde eu mostro a pergunta:

    <legend>Pergunta <?php echo"$ordem";?>/<?php echo"$totalpergunta";?></legend>
    <div class="form-group">
      <h3><label><?php echo"$descpergunta";?></label></h3>
      <div class="col-lg-10">
        <div class="radio">
          <label>
            <input type="radio" name="optionsRadios" id="optionsRadios1" value="5">
            OTIMO
          </label>
        </div>
        <div class="radio">
          <label>
            <input type="radio" name="optionsRadios" id="optionsRadios1" value="3">
            REGULAR
          </label>
        </div>
        <div class="radio">
          <label>
            <input type="radio" name="optionsRadios" id="optionsRadios1" value="1">
            RUIM
          </label>
        </div>
        <div class="radio">
          <label>
            <input type="radio" name="optionsRadios" id="optionsRadios2" value="0">
            não APLICADO
          </label>
        </div>
    </div>

   <br />
    <div class="form-group">
      <div class="col-lg-10 col-lg-offset-2">
        <center><button type="submit"  class="btn btn-default">PROXIMA</button></center>
      </div>
    </div>
  </fieldset>
 </form>
</div>
     
</body>
</html>


Após o usuário responder seria dado o insert no banco e após isso o formulário seria aberto com uma nova pergunta. E o campo <?php echo"$descpergunta";?> apareceria a nova pergunta.

Sobre o insert blza faria um insert normal,a duvida e sobre como exibir uma nova pergunta. O insert tem que ser pergunta a pergunta por conta da forma que foi estruturada a tabela de respostas.

Qual seria a melhor forma de fazer isso ?

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

4 respostass a esta questão

Posts Recomendados

  • 0

Oi boa tarde,

 Elas serão exibidas em ordem...

 O que eu já consegui:

<?php
// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();
// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['usu_login'])) {
  // Destrói a sessão por segurança
  session_destroy();
  // Redireciona o visitante de volta pro login
  header("Location: ../../logout.php"); exit;
}
?>
<?php 
require("conexao.php");
?>  
<html> 
    <head>
        <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
               <meta name="viewport" content="width=device-width, initial-scale=1">
            <link href="css/bootstrap.min.css" rel="stylesheet">
              <link href="bootstrap-paper/css/bootstrap.min.css" rel="stylesheet">
    </head> 
<body>

<?php
 $query_count = mysql_query("SELECT 
              count(r.resp_id)  AS TOTRESP
           FROM 
              respostas AS r
           WHERE 
                 r.resp_status       = 1  and
                 r.resp_loja         = 2  and
                 r.resp_questionario = 1  and
                 r.resp_area         = 8 and 
                 r.resp_subgrupo     = 1") ;

 while ($row = mysql_fetch_array($query_count)) {
    $respondidas  = $row["TOTRESP"];
};

?>

<?php
 $query_count = mysql_query("SELECT 
       rp.id           AS ORDEM,
       a.area_id       AS AREA,
       sb.sub_area_cod AS SUBGRUPO,
       p.perg_id       AS ID_PEGUNTA,
       p.perg_desc     AS DEC_PERGUNTA,
       rp.foto         AS FOTO,
       COUNT(rp.id)  AS TOTAL_PERG      
           FROM 
              relacaoperg AS rp 
                                INNER JOIN perguntas AS p   ON rp.id_pergunta = p.perg_id
                                INNER JOIN area      AS a   ON rp.id_area     = a.area_id
                                INNER JOIN sub_area  AS sb  ON rp.id_subgrupo = sb.sub_area_cod
                                
                                WHERE 
                                    a.area_id='1' AND sb.sub_area_cod='1'")or die(mysql_error());
    
    if (empty($query_count)) {
    echo "Nenhum registro encontrado.";
    }
    while ($row = mysql_fetch_array($query_count)) {
    $totalpergunta  = $row["TOTAL_PERG"];
    }
    ?>
    <?php
    $pergunta=$respondidas+1;
    while( $pergunta <= $totalpergunta ){
   $query_pesquisa = mysql_query("SELECT 
       rp.id            AS ORDEM,
       a.area_id        AS AREA,
       sb.sub_area_cod  AS SUBGRUPO,
       sb.sub_area_nome AS DESC_SUBGRUPO,
       p.perg_id        AS ID_PEGUNTA,
       p.perg_desc      AS DESC_PERGUNTA,
       rp.foto          AS FOTO          
           FROM 
              relacaoperg AS rp 
                                INNER JOIN perguntas AS p   ON rp.id_pergunta = p.perg_id
                                INNER JOIN area      AS a   ON rp.id_area     = a.area_id
                                INNER JOIN sub_area  AS sb  ON rp.id_subgrupo = sb.sub_area_cod
                                
                                WHERE 
                                    a.area_id='1' AND sb.sub_area_cod='1' AND rp.id='$pergunta' ")or die(mysql_error());
    
    if (empty($query_pesquisa)) { 
    echo "Nenhum registro encontrado.";
    }
    while ($row = mysql_fetch_array($query_pesquisa)) {
    $ordem          = $row["ORDEM"];
    $area           = $row["AREA"];
    $subgrupo       = $row["SUBGRUPO"];
    $descsubgrupo   = $row["DESC_SUBGRUPO"];
    $idpergunta     = $row["ID_PEGUNTA"];
    $descpergunta   = $row["DESC_PERGUNTA"];
    $foto           = $row["FOTO"];
    }
    ?>
<br>
<div class="container">
<div id="div1" style="width:80%; margin:5 auto;">
      <center><div class="panel panel-danger"><div class="panel-heading"><?php echo"$descsubgrupo";?></div></div></center>
<div class="jumbotron">
  
 <form class="form-horizontal" action="index.php" method="GET">
  <fieldset>
    <legend>Pergunta <?php echo"$ordem";?>/<?php echo"$totalpergunta";?></legend>
    <div class="form-group">
      <h3><label><?php echo"$descpergunta";?></label></h3>
      <div class="col-lg-10">
        <div class="radio">
          <label>
            <input type="radio" name="optionsRadios" id="optionsRadios1" value="5">
            OTIMO
          </label>
        </div>
        <div class="radio">
          <label>
            <input type="radio" name="optionsRadios" id="optionsRadios1" value="3">
            REGULAR
          </label>
        </div>
        <div class="radio">
          <label>
            <input type="radio" name="optionsRadios" id="optionsRadios1" value="1">
            RUIM
          </label>
        </div>
        <div class="radio">
          <label>
            <input type="radio" name="optionsRadios" id="optionsRadios2" value="0">
            NAO APLICADO
          </label>
        </div>
    </div>

   <br />
    <div class="form-group">
      <div class="col-lg-10 col-lg-offset-2">
        <center><button  type="submit"  class="btn btn-default" >REPONDER</button></center>
       </div>
    </div>
  </fieldset>

 </form>
</div>

</div>
</div>


</body>
</html>
<?php   $pergunta++; } ?>

Dessa forma esta listando na tela,mais esta mostrando todas,so que eu preciso exibir uma a uma.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Se você precisa exibir uma a uma, porque está pegando todas na query?

 $query_count = mysql_query("SELECT 
       rp.id           AS ORDEM,
       a.area_id       AS AREA,
       sb.sub_area_cod AS SUBGRUPO,
       p.perg_id       AS ID_PEGUNTA,
       p.perg_desc     AS DEC_PERGUNTA,
       rp.foto         AS FOTO,
       COUNT(rp.id)  AS TOTAL_PERG      
           FROM 
              relacaoperg AS rp 
                                INNER JOIN perguntas AS p   ON rp.id_pergunta = p.perg_id
                                INNER JOIN area      AS a   ON rp.id_area     = a.area_id
                                INNER JOIN sub_area  AS sb  ON rp.id_subgrupo = sb.sub_area_cod
                                
                                WHERE 
                                    a.area_id='1' AND sb.sub_area_cod='1'")or die(mysql_error());

 

Existem algumas soluções para o seu caso, colocar vários elementos ocultos, onde dentro de cada um irão as peguntas, conforme o cara for respondendo vai ocultando e exibindo o próximo, uma solução que eu usaria seria gerenciar tudo com ajax, acho que fica melhor para este caso. Na realidade o modo como você vai fazer depende de qual o real objetivo disto tudo.

Link para o comentário
Compartilhar em outros sites

  • 0
Em 08/02/2016 at 16:56, ESerra disse:

Se você precisa exibir uma a uma, porque está pegando todas na query?

 


 $query_count = mysql_query("SELECT 

	       rp.id           AS ORDEM,

	       a.area_id       AS AREA,

	       sb.sub_area_cod AS SUBGRUPO,

	       p.perg_id       AS ID_PEGUNTA,

	       p.perg_desc     AS DEC_PERGUNTA,

	       rp.foto         AS FOTO,

	       COUNT(rp.id)  AS TOTAL_PERG      

	           FROM 

	              relacaoperg AS rp 

	                                INNER JOIN perguntas AS p   ON rp.id_pergunta = p.perg_id

	                                INNER JOIN area      AS a   ON rp.id_area     = a.area_id

	                                INNER JOIN sub_area  AS sb  ON rp.id_subgrupo = sb.sub_area_cod

	                                

	                                WHERE 

	                                    a.area_id='1' AND sb.sub_area_cod='1'")or die(mysql_error());


 

 

Existem algumas soluções para o seu caso, colocar vários elementos ocultos, onde dentro de cada um irão as peguntas, conforme o cara for respondendo vai ocultando e exibindo o próximo, uma solução que eu usaria seria gerenciar tudo com ajax, acho que fica melhor para este caso. Na realidade o modo como você vai fazer depende de qual o real objetivo disto tudo.

Estão todas ai porque tentei trabalhar com while mais sem exito,pelo que entendi em sua informação sobre o ajax seria exatamente o que estou precisando,você tem algum exemplo ou link de material mostrando sobre isso ?

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...