Ir para conteúdo

POWERED BY:

Arquivado

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

hugoes

Checkbox's

Recommended Posts

Galera, é a primeira vez que faço um cadastro que utilize campos checkbox. Eu consigo inserir no banco qndo marco as opções que quero, mas qndo ponho uma transação, dá erro :P , o result retorna falso. Vou mostrar como estou fazendo, se alguém tiver outra sujestão, por favor, aguardo:

 

Esse é o formulário dos meus checks

<form>
<table width="666" border="0">
     <tr>
       <td width="109"><div align="center">
         <input type="checkbox" value="CERTIDAO DE NASCIMENTO" name="op1" <? if ("checked") {$_SESSION['op1'] = "CERTIDAO DE NASCIMENTO";} else {$_SESSION['op1'] = '';}?> >
           <b>Cerdidão de Nascimento</b></div></td>
       <td width="101"><div align="center">
         <input type="checkbox" value="HISTORICO ESCOLAR" name="op2" <? if ("checked") {$_SESSION['op2'] = "HISTORICO ESCOLAR";} else {$_SESSION['op2'] = '';}?>>
           <b> Histórico Escolar</b></div></td>
       <td width="154"><div align="center">
         <input type="checkbox" value="CARTEIRA DE IDENTIDAD" name="op3" <? if ("checked") {$_SESSION['op3'] = "CARTEIRA DE IDENTIDADE";} else {$_SESSION['op3'] = '';}?>>
           <b> Carteira de Identidade</b></div></td>
       <td width="137"><div align="center">
         <input type="checkbox" value="COMPROVANTE DE RESIDENCIA" name="op4" <? if ("checked") {$_SESSION['op4']= "COMPROVANTE DE RESIDENCIA";} else {$_SESSION['op4'] = '';}?>>
           <b> Comprovante Residência</b></div></td>
       <td width="141"><div align="center">
         <input type="checkbox" value="DOC. DE TRANSFERENCIA" name="op5" <? if ("checked") {$_SESSION['op5'] = "DOC. DE TRANSFERENCIA";} else {$_SESSION['op5'] = '';}?>> 
           <b> Doc. de Transferência</b></div></td>
     </tr>
 </table>
</form>

 

Essa é a pag q recebe os post's

PHP

[*]

[*] if ($_POST['op1'])

[*] $_SESSION['op1'] = $_POST['op1'];

[*] else $_SESSION['op1'] = '';

[*]

[*] if ($_POST['op2'])

[*] $_SESSION['op2'] = $_POST['op2'];

[*] else $_SESSION['op2'] = '';

[*] 0

[*] if ($_POST['op3'])

[*] $_SESSION['op3'] = $_POST['op3'];

[*] else $_SESSION['op3'] = '';

[*]

[*] if ($_POST['op4'])

[*] $_SESSION['op4'] = $_POST['op4'];

[*] else $_SESSION['op4'] = '';

[*]

[*] if ($_POST['op5'])

[*] $_SESSION['op5'] = $_POST['op5'];

[*] else $_SESSION['op5'] = '';

[*]

[*] if ($_POST['txt_outros'])

[*] $_SESSION['txt_outros'] = $_POST['txt_outros'];

[*] else $_SESSION['txt_outros'] = '';*/

[*]

[*]$op = $_SESSION['op1'].",".$_SESSION['op2'].",".$_SESSION['op3'].",".$_SESSION['op4'].",".$_SESSION['op5'].",".strtoupper($_SESSION['txt_outros']);

[*]

[*]$sql_aluno_docs = "insert into documentos_apresentados ";

[*]$sql_aluno_docs.= "(id_aluno, nm_documento) ";

[*]$sql_aluno_docs.= "values (".$id.", '".$op."')";  

[*]

[*]$result= @pg_query($conn, $sql_aluno_docs);

[*]

[*]

 

Acho que não tá legal (até pq minha transação barra eheheh). Queria saber como proceder da melhor maneira.

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poisé, foi como eu disse, é a primeira vez que faço, então pensei dessa forma: se "tiver_marcado" var=alguma_coisa. Até que insere no banco, quais campos eu selecionar, mas na transação "barra".Queria saber a melhor forma de se fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então no form você não vai usar nada de PHP, só que você tem colocar algo dentro da tag form, você colocou apenas <form>, deveria colocar algo como: <form action="pag.php" method="POST">, daí tu verifica se foi selecionado o checkbox da mesma forma que você ve se uma var existe: if ($_POST['op1']) { ... É isso? http://forum.imasters.com.br/public/style_emoticons/default/kiss.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, ok. Primeiro, o <form> foi só p resumir, na verdade eu coloco sim o action. Na pag q recebe esses valores dos checks, já tô fazendo essa condição, mas agora acontece o seguinte: pro campos que eu seleciono, beleza. Agora, pros que não são selecionados, aparecem warnnings informando variáveis não definidas. Se eu não por a transação, aparecem os warning, mas insere no banco. Quando uso a transação, não ocorre o commit.Como contornar esse problema dos campos q não são escolhidos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, PHP é um linguagem totalmente dinâmica... então se quisesse colocar mais um checkbox, você teria que alterar seu código PHP para adicionar:

PHP

[*]<?

[*]if ( $_POST['optN'] ) {} ?>

?

 

Quando é necessário usar checkbox em PHP, o nome dos checks deve ser definido como "qualquernome[]", onde "qualquernome" é realmente qualquer nome, porém deve seguir de colchetes [] representando um array ( que será preenchido dinamicamente de acordo com o click nos checks ).

 

vou postar um exemplo onde você pega o resultado dos checks, a partir daí você faz o que quiser com os dados...

 

form.html

<form action="form.php" method="POST">
 <table border="0" cellpadding="0" cellspacing="0">
 <tr> 
   <td><input name="checks[]" type="checkbox" value="check1" /></td>
   <td>Check1</td>
 </tr>
 <tr> 
   <td><input name="checks[]" type="checkbox" value="check2" /></td>
   <td>Check2</td>
 </tr>
 <tr> 
   <td><input name="checks[]" type="checkbox" value="check3" /></td>
   <td>Check3</td>
 </tr>
 <tr> 
   <td><input name="checks[]" type="checkbox" value="check4" /></td>
   <td>Check4</td>
 </tr>
 <tr> 
   <td> </td>
   <td><input name="btnOK" type="submit" value="Verificar" /></td>
 </tr>
 </table>
</form>

 

form.php

PHP

[*]<?

[*]if ( $_SERVER['REQUEST_METHOD'] == 'POST' )

[*]{

[*]  /* como é um array, você pode fazer um loop para verificar quais foram

[*]  checados... */

[*]  foreach ( $_POST['checks'] as $indice => $valor )

[*] echo "O " . $valor . " foi checado<br />";

[*]

[*]  /* você pode também usar a funcao implode() do PHP */

[*]  $dadosSelecionados = implode(', ', $_POST['checks']);

[*]  echo "<br />";

[*]  echo "Os dados selecionados foram: " . $dadosSelecionados;

[*]}

[*]?>

[*]

 

qualquer dúvida, me mande um email.... rafaelrj.br@programador.net

vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow cara, ainda tô com o mesmo problema. Estou enviando por post os valores normalmente à outra página (a q fará os inserts). No entanto, os check's que não marco, são vistos como "não definidos", dando erro no meu cadastro. Por exemplo, se marco todas as opções, a inserção é um sucesso.Gostaria de saber como resolver essa bronca.

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.