How to save the value of the checkbox by choosing only one of these?

0

I have a form with three checkbox , I want to save the selected value of some of these, but in one of them when clicked, I bring two checkbox and one input ( text ) to add additional information to them.

In the code when I test, only the third checkbox is saving in the database, when I click on the first or second, nothing happens.

<form>
    <div class="container">
        <label>                
            <input id="lbm-chk-grau1" value="1 Grau" name="escolaridade[]" type="checkbox"> 1&#186; grau
        </label>

        <label>
            <input id="lbm-chk-grau2" value="2 Grau" name="escolaridade[]" type="checkbox"> 2&#186; grau
        </label>

        <label>
           <input id="lbm-chk-grau3" value="3 Grau" name="escolaridade[]" type="checkbox"> 3&#186; grau
        </label>

        <div class="form-checkbox">
             <label>               
                <input id="lbm-chk-compl" value="Completo" name="superior[]" type="checkbox"> Completo
             </label>
             <label>
                <input id="lbm-chk-imcopl" value="Incompleto" name="superior[]" type="checkbox"> Incompleto
             </label>
                <br><br>
            <input type="text" name="IES" placeholder="Nome da Institui&ccedil;&atilde;o" class="form-control">                                              
        </div>
   </div>

 <div class="container">
      <button type="submit" class="btn btn-link" name="btn-registro">Salvar Informa&ccedil;&otilde;es</button>                              
 </div>

</form>

How do I try to save with PHP in the database:

$chkAuxEscol =  is_array($_POST['escolaridade'])
                  ? implode(', ', $_POST['escolaridade'])
                  : $_POST['escolaridade'];
$chkSupAux =  is_array($_POST['superior'])
                  ? implode(', ', $_POST['superior'])
                  : $_POST['superior'];

if ( (isset($chkAuxEscol) ) { 

   $chkEscolaridade = $chkAuxEscol;

   if ( isset($chkSupAux) )  
   {                                    
       $chkSuperior = $chkSupAux;
       $IESParticipante = security_data_2($_POST['participanteIES']); 
   }
}

// Outra forma que tentei salvar
foreach($chkAuxEscol as $key => $auxEscol) {

    switch($auxEscol) {
       case "lbm-chk-grau1" :
              $chkEscolaridade = "1º Grau";
              break;
       case "lbm-chk-grau2" :
              $chkEscolaridade = "2º Grau";
              break; 
       case "lbm-chk-grau3" :
              $chkEscolaridade = "3º Grau";
              break;  
       default : break; 
       $i++;         
    }                         
} 

foreach ($chkSupAux as $key => $supAux)
{
    switch($supAux) {
           case "lbm-chk-compl" :
                  $chkSuperior = "Superior Completo";
                  break;
           case "lbm-chk-imcopl" :
                  $chkSuperior = "Superior Incompleto";
                  break;
            default : break;                  
    }      
}

$pdo = Database::connect();

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql  =  "INSERT INTO participantes(escolaridade, escolaridade_detalhes, escolaridade_instituicao) "; 
$sql .=  "VALUES(? , ?, ?)"; 

$q = $pdo->prepare($sql);
$q->execute(array($chkEscolaridade,$chkSuperior,$IESParticipante));                     
    
asked by anonymous 18.08.2016 / 23:04

1 answer

1
  • Leave explicit the form configuration with action="post" .
  • Make sure the html name="escolaridade[]" tags are the same as you want $_POST . Example, if name="escolaridade" use $_POST['escolaridade'] or else use $_POST['escolaridade[]'] as it is in your html.
  • If it does not work .. mark the three options and paste the result of $_POST['escolaridade'] .

        
    19.08.2016 / 00:02