Ir para conteúdo

POWERED BY:

Arquivado

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

Gilberto Walace

[Resolvido] Formulário em PHP

Recommended Posts

Olá Pessoal .. :)

 

Sou estudante de curso técnico em informática e iniciante em PHP e, estou fazendo um sistema de aplicação de pesquisas.

 

A pesquisa é um questionário que é carregado do banco de dados para o usuário poder responder.

 

Assim, dentro de uma pesquisa, temos os itens dessa pesquisa, dentro dos itens temos as perguntas desse item e, dentro

das perguntas temos as opções, que são carregadas para um combobox .

 

 

A minha dúvida é a seguinte :

 

Como que faço para cadastrar a opção escolhida de cada combobox no banco de dados?

 

Agradeço pela atenção de todos!! :)

 

 

Segue o código:

 

echo "<form name='resalun' method='post' action='enviaresalun.php?pesquisa=$codpesq'>";

 

echo "<table>";

 

 

/* CONSULTA DE ITENS */

 

$sqlitem = "SELECT A.Nome, A.CodItem

FROM Itens A

WHERE A.CodPesquisa = $codpesq";

 

$resitem = mysql_query($sqlitem) or die ("Erro ao consultar o banco" .mysql_error() );

 

/* FIM DA CONSULTA DE ITENS */

 

 

// DECLARANDO CONTADOR PARA NUMERAR OS ITENS

$i = 0;

 

while($registro = mysql_fetch_assoc($resitem)){

$codItem = $registro["CodItem"];

$item = $registro["Nome"];

 

$i = $i + 1;

 

echo "<tr>";

echo "<td>";

echo "$i. $item";

echo "</td>";

 

echo "<td>";

echo "</td>";

 

echo "<td>";

echo "</td>";

 

echo "<td>";

echo "</td>";

 

echo "</tr>";

 

 

/* CONSULTA DE PERGUNTAS */

 

$sqlperg = "SELECT A.Nome,A.CodPergunta

FROM Perguntas A

WHERE A.CodItem = $codItem";

 

 

$resperg = mysql_query($sqlperg) or die ("Erro ao consultar o banco" .mysql_error() );

/* FIM DA CONSULTA DE PERGUNTAS */

 

 

//DECLARANDO CONTADOR PARA NUMERAR AS PERGUNTAS DE CADA ITEM

$p = 0;

 

//LOOP PARA CARREGAR AS PERGUNTAS

while($registro = mysql_fetch_assoc($resperg)){

$nomeperg = $registro["Nome"];

$codperg = $registro["CodPergunta"];

 

$p = $p + 1;

 

 

echo "<tr>";

echo "<td>";

echo "</td>";

 

echo "<td>";

echo "$i.$p. $nomeperg";

echo "</td>";

 

echo "<td colspan='2'>";

 

echo "<select name='opcoes'>";

 

//CONSULTA DE OPÇÕES

$sqlopcoes = "SELECT A.Nome, A.CodOpcoes

FROM Opcoes A

WHERE A.CodPergunta = $codperg";

 

$resopcoes = mysql_query($sqlopcoes) or die ("Erro ao consultar o banco" .mysql_error() );

 

 

//LOOP PARA PREENCHER O COMBOBOX DE CADA PERGUNTA

while($registro = mysql_fetch_array($resopcoes)){

//$opcao = $registro["Nome"];

echo "<option value='".$registro['CodOpcoes']."'>".$registro['Nome']."</option>";

 

}

echo "</select>";

 

echo "</td>";

 

echo "<td>";

echo "</td>";

 

echo "</tr>";

 

}

 

 

}

echo "<tr>";

 

echo "<td>";

echo "</td>";

 

echo "<td>";

echo "<input type ='submit' value='Enviar'/>";

echo "</td>";

 

echo "<td>";

echo "<input type ='reset' value='Limpar'/>";

echo "</td>";

 

echo "<td>";

echo "</td>";

 

echo "</tr>";

 

echo "</table>";

echo "</form>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) você imprime um form

 

2) você envia o form para action='enviaresalun.php?pesquisa=$codpesq'

 

3) você pega os dados desse form e grava:

 

na pagina enviaresalun.php?pesquisa=$codpesq...

//Para esse combobox
//echo "<select name='opcoes'>";
//faz assim:
$option = $_POST['opcoes']; //recebe a opção
$option = mysql_real_escape_string($option); //evita sql injection (não 100%)

//depois só gravar com uma query sql
$sql = "INSERT INTO table_name (option, column2, column3,...) VALUES ('".$option."', value2, value3,...)";
mysql_query($sql, $conexao);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gustavo, obrigado pela força, mas tentei do jeito que você falou, porém não deu certo.

 

Ia pôr uma imagem mas não é possível. Segue abaixo então como a página da pesquisa está organizada, espero que consigam entender :

 

Satisfa��o do Aluno

 

Matrícula:(campo texto aqui)

 

Cadastre-se Esqueceu sua matrícula?

 

 

1. Curso

1.1. Voc� est� se identificando com o curso.(combobox aqui)

1.2. Que mat�ria voc� gosta mais do curso.(combobox aqui)

 

2. Professores

2.1. Voc� tem uma rela��o amig�vel com seus professores?(combobox aqui)

 

3. Colegas

3.1. Voc� tem uma rela��o amig�vel com seus colegas? (combobox aqui)

 

 

 

 

 

Eu estou querendo pegar o value da opção que o usuario escolher, porque tenho que armazenar um número inteiro no banco de dados.

 

Por exemplo, no primeiro comboxox, suponhamos que temos 2 opções : sim e não . Se o usuario escolher o "sim", quero pegar o value da opção "sim", e armazenar no banco de dados.

 

O problema é que do jeito que meu código está, ele só está pegando o valor do último combobox que é imprimido no formulário.

É porque são vários combobox, um para cada pergunta.

 

Na página que envia as respostas quando dou o comando:

 

$option = $_POST['opcoes'];

 

Ele pega apenas o valor do último combobox.

 

Queria saber como que faço para sair pegando o value de cada opção escolhida de cada combobox para depois enviar para o banco de dados, ou seja quero pegar os values de todos os combobox do formulário.

 

Espero que tenho sido claro, qualquer coisa me pergunte se não entender a minha dúvida.

 

Muito grato pela ajuda! :D

 

Abç

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas o combobox no meu caso meu caso é dinâmico, ou seja, não é eu que vou criar todos os combobox da pesquisa e, colocar o nome neles. Estou usando um while para criá-los.

 

Veja:

 

//LOOP PARA CARREGAR AS PERGUNTAS
            while($registro = mysql_fetch_assoc($resperg)){
               $nomeperg = $registro["Nome"];
               $codperg = $registro["CodPergunta"];

               $p = $p + 1;


               echo "<tr>";
                   echo "<td>";
                  echo "</td>";

                   echo "<td>";
                       echo "$i.$p. $nomeperg";
                   echo "</td>";

                   echo "<td colspan='2'>";

                       [b]echo "<select name='opcoes'>";

                           //CONSULTA DE OPÇÕES
                           $sqlopcoes = "SELECT A.Nome, A.CodOpcoes
                                       FROM Opcoes A
                                       WHERE A.CodPergunta = $codperg";

                            $resopcoes = mysql_query($sqlopcoes) or die ("Erro ao consultar o banco" .mysql_error() );


                           //LOOP PARA PREENCHER O COMBOBOX DE CADA PERGUNTA
                           while($registro = mysql_fetch_array($resopcoes)){
                               //$opcao = $registro["Nome"];
                               echo "<option value='".$registro['CodOpcoes']."'>".$registro['Nome']."</option>";

                           }
                       echo "</select>";[/b]

 

 

Note que só tem um select e, ele está dentro de um while, logo não é eu que estou criando e por isso não tem como ficar colocando nomes para diferenciá-los.

 

Queria saber uma forma de resolver isso.... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não quero mostrar nada na tela. A pesquisa carrega com suas perguntas. Na frente de cada pergunta tem um combobox carregado de opções, que crio através de :

 

echo "<select name='opcoes'>";

                           //CONSULTA DE OPÇÕES
                           $sqlopcoes = "SELECT A.Nome, A.CodOpcoes
                                       FROM Opcoes A
                                       WHERE A.CodPergunta = $codperg";

                            $resopcoes = mysql_query($sqlopcoes) or die ("Erro ao consultar o banco" .mysql_error() );


                           //LOOP PARA PREENCHER O COMBOBOX DE CADA PERGUNTA
                           while($registro = mysql_fetch_array($resopcoes)){
                               //$opcao = $registro["Nome"];
                               echo "<option value='".$registro['CodOpcoes']."'>".$registro['Nome']."</option>";

                           }
                       echo "</select>";

 

To criando o combobox dinâmico através do comando:

 

echo "<select name='opcoes'>";
echo "</select>";

 

O código acima está dentro de um while que faz imprimir um combobox para cada pergunta.

 

O que quero é apenas pegar o VALUE da opção escolhida em cada combobox.Porque eu tenho que armazenar o número inteiro no banco de dados.

 

A minha tabela de respostas tem os campos : CodMatric, NumAplicacao, CodOpcao.

 

Assim, eu sei que o usuário numero tal, na aplicação tal, escolheu tal opção.Ai, pela opção sei qual é a pergunta, o item e assim sucessivamente.

 

O que quero é apenas pegar o VALUE da opção escolhida em cada combobox, não quero mostrar nada. Os combobox são criados quando a pesquisa abre, só quero pegar o VALUE da opção escolhida para enviar para o banco de dados, só isso.

 

Mas eu acho que dá para aproveitar um pedaço do código que você postou, acho que vou ter que usar o foreach .

 

Estou reexplicando para você entender qual é o real objetivo.

 

Espero que entenda, aguardo um novo post!

 

Muito obrigado pela paciência! ;)

 

Abç

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá, mas como vou botar um nome para cada combobox sendo que o combobox está dentro de um while?

 

Só há um select(combobox) só, entendeu ?

 

E esse select(combobox) é das opções de resposta que são carregadas do banco. Não quero imprimir combobox para CodMatric, nem de NumAplicacao.

 

Só há um select (combobox).

 

Veja:

 

while(condições){

echo "<select name='opcoes'>";
echo "</select>";

}

 

O select está dentro do while, e esse while faz gerar vários combobox.Então não tenho como sair botando nome neles.

 

O CodMatric e o NumAplicacao estou pegando de outra forma, que não tem nada haver com select (combobox). Só te falei deles, porque tenho que gravar o CodMatric, NumAplicacao e o CodOpcao, mas esquece eles.

 

A única coisa que quero saber e, é o que te pergunto novamente é o seguinte:

 

Como faço para sair pegando o VALUE da opção que foi escolhida de cada combobox ???

 

vlww ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

é só você colocar [] na frente do nome do combobox;

echo "<select name='opcoes[]'>";
echo "</select>";

Então você vai pegar um array:

$selecionados = $_POST['opcoes'];//aqui vem o array
foreach($selecionados as $valor){
 echo $valor.'<br />';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui !!! :joia:

 

É isso mesmo brother!É só colocar os colchetes na frente do nome do combobox,transformando-o assim, em um array, conforme você mesmo disse...

 

echo "<select name='opcoes[]'>";
echo "</select>";

 

E depois para pegar os valores ..

 

$selecionados = $_POST['opcoes'];//aqui vem o array
foreach($selecionados as $valor){
 echo $valor.'<br />';
}

 

Desculpa à demora da resposta ..

 

Muito Obrigado!

 

Abç ;)

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.