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

Como fazer um lista em linhas e colunas?


Andreia Regina

Pergunta

Boa tarde,

estou desenvolvendo um sistema onde preciso gerar um formulário, como na imagem abaixo:

resposta_fila.gif

Onde as colunas estão na tabela tb_colunas e as linhas estão na tb_respostas.

Em alguns casos será checkbox (escolha de somente uma opção), em outros input (escolha de mais de uma opção).

$sql_r=mysql_query("SELECT resposta_id,resposta FROM tb_respostas WHERE pergunta_id='".$row["pergunta_id"]."' AND exibir='sim' ORDER BY $order") or die (mysql_error());
Depois de verificar algumas situações tenho o seguinte script onde monto os dados
<table>
              <tbody>
                <tr>
                  <th class="descricao_coluna1">&nbsp;</th>
<?php #colunas
                  $sql_c=mysql_query("SELECT coluna_id,coluna FROM tb_pesquisa_opiniao_colunas WHERE pergunta_id='".$row["pergunta_id"]."' AND exibir='sim' ORDER BY coluna_id ASC") or die (mysql_error());
                  $reg_col=mysql_num_rows($sql_c);
                  while($col=mysql_fetch_array($sql_c)){?>
                    <th class="descricao_colunas"><?php print $col["coluna"];?></th>
<?php              } ?>
                </tr>
<?php /*#opções*/$lin=0;
                while($resp=mysql_fetch_array($sql_r)){
                  $lin++;
                  if ($lin%2==0) $classe="par";
                  else $classe="impar";?>
                <tr class="<?php print $classe;?>">
                  <td class="resposta"><?php print $resp["resposta"];?></td>
<?php /*inputs*/    for($c=0; $c<$reg_col; $c++) {
                      $tab=$tab+1;?>
                      <td><?php 
                      $col=mysql_fetch_array($sql_c);
                        $coluna_id=$col["coluna_id"];
                      #echo "col ".$coluna_id;?><label class="<?php print $classe;?>" for="resposta_<?php print $col["coluna_id"];?>"><?php print $campo;?> name="resposta_<?php print $resp["resposta_id"];?>[]" id="resposta_<?php print $col["coluna_id"];?>" tabindex="<?php print $tab;?>" title="<?php print $resp["resposta"];?>"  value="<?php print $col["coluna"];?>"<?php print $campo_f;?></label></td>
<?php                 } #while($resp=?>
                </tr>
<?php             } #while($resp=?>
              </tbody>
            </table>

Problema 1)

O problema é que ele perde o valor de $col["coluna_id"], já tentei algumas coisas e não obtive sucesso.

Problema 2)

Qual é a melhor forma de gravar as opções deste form?

Gravar o id de cada coluna ou o valor?

Desde já agradeço

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde,

estou desenvolvendo um sistema onde preciso gerar um formulário, como na imagem abaixo:

resposta_fila.gif

Onde as colunas estão na tabela tb_colunas e as linhas estão na tb_respostas.

Em alguns casos será checkbox (escolha de somente uma opção), em outros input (escolha de mais de uma opção).

$sql_r=mysql_query("SELECT resposta_id,resposta FROM tb_respostas WHERE pergunta_id='".$row["pergunta_id"]."' AND exibir='sim' ORDER BY $order") or die (mysql_error());
Depois de verificar algumas situações tenho o seguinte script onde monto os dados
<table>
              <tbody>
                <tr>
                  <th class="descricao_coluna1">&nbsp;</th>
<?php #colunas
                  $sql_c=mysql_query("SELECT coluna_id,coluna FROM tb_pesquisa_opiniao_colunas WHERE pergunta_id='".$row["pergunta_id"]."' AND exibir='sim' ORDER BY coluna_id ASC") or die (mysql_error());
                  $reg_col=mysql_num_rows($sql_c);
                  while($col=mysql_fetch_array($sql_c)){?>
                    <th class="descricao_colunas"><?php print $col["coluna"];?></th>
<?php              } ?>
                </tr>
<?php /*#opções*/$lin=0;
                while($resp=mysql_fetch_array($sql_r)){
                  $lin++;
                  if ($lin%2==0) $classe="par";
                  else $classe="impar";?>
                <tr class="<?php print $classe;?>">
                  <td class="resposta"><?php print $resp["resposta"];?></td>
<?php /*inputs*/    for($c=0; $c<$reg_col; $c++) {
                      $tab=$tab+1;?>
                      <td><?php 
                      $col=mysql_fetch_array($sql_c);
                        $coluna_id=$col["coluna_id"];
                      #echo "col ".$coluna_id;?><label class="<?php print $classe;?>" for="resposta_<?php print $col["coluna_id"];?>"><?php print $campo;?> name="resposta_<?php print $resp["resposta_id"];?>[]" id="resposta_<?php print $col["coluna_id"];?>" tabindex="<?php print $tab;?>" title="<?php print $resp["resposta"];?>"  value="<?php print $col["coluna"];?>"<?php print $campo_f;?></label></td>
<?php                 } #while($resp=?>
                </tr>
<?php             } #while($resp=?>
              </tbody>
            </table>

Problema 1)

O problema é que ele perde o valor de $col["coluna_id"], já tentei algumas coisas e não obtive sucesso.

Problema 2)

Qual é a melhor forma de gravar as opções deste form?

Gravar o id de cada coluna ou o valor?

Desde já agradeço

Olá tudo bem,

você verificaou se está recebendo algum dados da variavel row["pergunta_id"]." e de onde vem essa variavel,

qual ao inputs são radio o que seleciona somente um por natureza, e checkbox o que permite mais de uma seleção no mesmo form por natureza, logico que poderá ser mudicado pelo javascript.

em $col["coluna"];?> no primeiro while você abriu e fechou somente com essa variavel dentro ou seja somente o ultimo valor atribuida a ela será salvo, caso receba 20 dados somente o 20° sera salvo.

você poderia utilizar um array nessa caso.

por enquanto é tudo que posso dizer pois não compreendir o codigo muito bem , não sei de onde vem essa linha $row['pergunta_id'] até mais caso persista os problemas poste todo o codigo da pagina e do banco de dados até mais.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá!

1- O valor de $row["pergunta_id"] vem de uma consulta anterior em outra tabela (tb_perguntas).

Eu tenho uma tabela de tb_perguntas, a tabela de tb_respostas, a tb_colunas e a tb_retorno (que receberá os valores do form).

2- Agradeço pela correção na verdade o que eu quis dizer é o seguinte:

Em alguns casos será radio(escolha de somente uma opção), em outros checkbox(escolha de mais de uma opção).

Link para o comentário
Compartilhar em outros sites

  • 0
Olá!

1- O valor de $row["pergunta_id"] vem de uma consulta anterior em outra tabela (tb_perguntas).

Eu tenho uma tabela de tb_perguntas, a tabela de tb_respostas, a tb_colunas e a tb_retorno (que receberá os valores do form).

2- Agradeço pela correção na verdade o que eu quis dizer é o seguinte:

Em alguns casos será radio(escolha de somente uma opção), em outros checkbox(escolha de mais de uma opção).

por gentileza poste todo o codigo da pagina e poste o sql do bd até mais

Link para o comentário
Compartilhar em outros sites

  • 0

A dúvida é na parte tabela, antes os valores estão sendo exibidos corretamente.

Formo a tabela corretamente mas não consigo exibir os valores coluna_id nos inputs.

<?php        $sql_p=mysql_query("SELECT tipo_pergunta, pergunta_id, pergunta, comentario, imagem, exige_resposta, outra,linhas FROM tb_pesquisa_opiniao_perguntas WHERE pesquisa_id='$pesquisa' AND exibir='sim' ORDER BY pergunta_id ASC $pg_perg") or die (mysql_error());
          $sql_r=mysql_query("SELECT resposta_id,resposta FROM tb_pesquisa_opiniao_respostas WHERE pergunta_id='".$row["pergunta_id"]."' AND exibir='sim' ORDER BY $order") or die (mysql_error()); ?>

            <table>
              <tbody>
                <tr>
                  <th class="descricao_coluna1">&nbsp;</th>
<?php #colunas
                  $sql_c=mysql_query("SELECT coluna_id,coluna FROM tb_pesquisa_opiniao_colunas WHERE pergunta_id='".$row["pergunta_id"]."' AND exibir='sim' ORDER BY coluna_id ASC") or die (mysql_error());
                  $reg_col=mysql_num_rows($sql_c);
                  while($col=mysql_fetch_array($sql_c)){?>
                    <th class="descricao_colunas"><?php print $col["coluna"];?></th>
<?php              } ?>
                </tr>
<?php /*#opções*/$lin=0;
                while($resp=mysql_fetch_array($sql_r)){
                  $lin++;
                  if ($lin%2==0) $classe="par";
                  else $classe="impar";?>
                <tr class="<?php print $classe;?>">
                  <td class="resposta"><?php print $resp["resposta"];?></td>
<?php /*inputs*/    for($c=0; $c<$reg_col; $c++) {
                      $tab=$tab+1;?>
                      <td><?php 
                      $col=mysql_fetch_array($sql_c);
                        $coluna_id=$col["coluna_id"];
                      #echo "col ".$coluna_id;?><label class="<?php print $classe;?>" for="resposta_<?php print $col["coluna_id"];?>"><?php print $campo;?> name="resposta_<?php print $resp["resposta_id"];?>[]" id="resposta_<?php print $col["coluna_id"];?>" tabindex="<?php print $tab;?>" title="<?php print $resp["resposta"];?>"  value="<?php print $col["coluna"];?>"<?php print $campo_f;?></label></td>
<?php                 } #while($resp=?>
                </tr>
<?php             } #while($resp=?>
              </tbody>
            </table>

Link para o comentário
Compartilhar em outros sites

  • 0

Começei uma verificação pois achava que você poderia está fechando aspas no php antes do momento desejado já que estaja utilizando html mesclado. ex <input type="text" name="<?php echo "$nome"?>

a segunda apas dentro da tag php fecha a primeira de name .

então fizemos

<?php

$sql_p=mysql_query("SELECT tipo_pergunta, pergunta_id, pergunta, comentario, imagem, exige_resposta, outra,linhas FROM tb_pesquisa_opiniao_perguntas WHERE pesquisa_id='$pesquisa' AND exibir='sim' ORDER BY pergunta_id ASC $pg_perg") or die (mysql_error());

$sql_r=mysql_query("SELECT resposta_id,resposta FROM tb_pesquisa_opiniao_respostas WHERE pergunta_id='".$row["pergunta_id"]."' AND exibir=sim' ORDER BY $order") or die (mysql_error());

$table="<table>

<tbody>

<tr>

<th class='descricao_coluna1'>&nbsp;</th>";

$sql_c=mysql_query("SELECT coluna_id,coluna FROM tb_pesquisa_opiniao_colunas WHERE pergunta_id='".$row["pergunta_id]."' AND exibir='sim' ORDER BY coluna_id ASC") or die (mysql_error());

$reg_col=mysql_num_rows($sql_c);

while($col=mysql_fetch_array($sql_c)){

$table.="<th class='descricao_colunas'>$col['coluna']</th>";

}

$table.=</tr>";

$lin=0;

while($resp=mysql_fetch_array($sql_r)){

$lin++;

if ($lin%2==0) $classe="par";

else $classe="impar";

$table.="<tr class='$classe'>

<td class='resposta'>$resp['resposta]</td>";

for($c=0; $c<$reg_col; $c++) {

$tab=$tab+1;

$table.="<td>";

$col=mysql_fetch_array($sql_c);

$coluna_id=$col["coluna_id"];

_________>

$table.=<label class='$classe' for='resposta_$col['coluna_id];?>"><?php print $campo;?> name="resposta_<?php print $resp["resposta_id"];?>[]" id=resposta_<?php print $col["coluna_id];?>" tabindex="<?php print $tab;?>" title="<?php print $resp["resposta"];?>" value=<?php print $col["coluna];?>"<?php print $campo_f;?></label></td>

<?php }

</tr>

<?php }

</tbody>

</table>

Nessa linha não comprendir o que você queria fazer

$table.="<label class='$classe' for='resposta_$col['coluna_id'];?>"><?php print

você fechou o label em ?>"> mas a frente imprime name=resposta_<?php print $resp["resposta_id];

então fiquei na duvida e não deu pra terminar você queria fechar o label?

criar um input ou outra coisa até mais?

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