PHP: Inserindo valores selecionados de checkboxes

Post criado em resposta a um comentário deixado aqui no blog.

<form name="form1" action="#" method="post">
<strong>Produtos</strong>
<br />
<strong>Codigo</strong> 1 - <strong>Descrição</strong>: Descrição 1 - <strong>Ativo</strong> <input type='checkbox' name="ativo[]" value="1" />
<br />
<strong>Codigo</strong> 2 - <strong>Descrição</strong>: Descrição 2 - <strong>Ativo</strong> <input type='checkbox' name="ativo[]" value="2" />
<br />
<strong>Codigo</strong> 3 - <strong>Descrição</strong>: Descrição 3 - <strong>Ativo</strong> <input type='checkbox' name="ativo[]" value="3" />
<br />
<strong>Codigo</strong> 4 - <strong>Descrição</strong>: Descrição 4 - <strong>Ativo</strong> <input type='checkbox' name="ativo[]" value="4" />
<br /><br />
<input type="submit" name="btn" value="ENVIAR">
</form>
<p><strong>Valores selecionados</strong>:</p>
<?php
if ($_POST && isset($_POST['ativo'])){
  $ativo = $_POST['ativo'];
 
  foreach($ativo as $valor){
    $sql = "INSERT INTO tabela(campo) VALUES ('".$valor."')";
    echo $sql."<br />";
  }
}		
?>

13 comentários em “PHP: Inserindo valores selecionados de checkboxes”

  1. Esse código não funciona, ele mostra o codigo php ao clicar no botao, por exemplo se eu clico no primeiro botao ele mostra:
    INSERT INTO tabela(campo) VALUES (‘1’)

    1. Olá Jeison.

      O código não está errado não.

      Eu estou apenas mostrando como ficaria o insert no banco de dados.

      Para que o insert funcione, você deve mudar esta linha

      echo $sql."<br />";

      para algo desse tipo

      mysql_query($sql);
    1. Para gravar no banco de dados, basta fazer uma mudança simples.

      Dentro da instrução foreach, você tem esse código:

      $sql = "INSERT INTO tabela(campo) VALUES ('".$valor."')";
      echo $sql."<br />";

      deixe assim…

      $sql = "INSERT INTO tabela(campo) VALUES ('".$valor."')";
      mysql_query($sql);
    1. Olá Rayan,

      você pode usar o implode:

      <?php
      if ($_POST && isset($_POST['ativo'])){
        $ativo = implode(",", $_POST['ativo']);
       
        $sql = "INSERT INTO tabela(campo) VALUES ('".$ativo."')";
        echo $sql."<br />";
      }		
      ?>
    1. Olá Reni.

      Ficaria assim:

      $con = new PDO('mysql:host=NOME_SERVIDOR;dbname=NOME_BANCO', 'USUARIO', 'SENHA');
      foreach($ativo as $valor){
         $sql = "INSERT INTO tabela(campo) VALUES ('".$valor."')";
         $con->query($sql);
      }
    1. Fala Fernando,

      segue uma ideia de como vc pode fazer:

      <?php
      if ($_POST && isset($_POST['ativo'])){
          // checkboxes selecionados
          $ativo = $_POST['ativo'];
          // total selecionados
          $total_selecionado = count($ativo);
          // total de checkboxes
          $total_checkbox = 4;
       
          // print
          echo "<strong>Total selecionado:</strong> ".$total_selecionado;
          echo "<br><br>";
       
          // loop array dos selecionados
          for($i=0;$i<$total_selecionado;$i++){
              $selecionados[] = $ativo[$i];
          }
       
          // atribuindo ao array índices vazios
          while($total_selecionado<$total_checkbox){
              $selecionados[] = "";
              $total_selecionado++;
          }
       
          // iterando em cada valor do array
          $valores = implode(",", array_map(function($string) {
              return '"' . $string . '"';
          }, $selecionados));
       
          // insert no banco
          $sql = "INSERT INTO tabela (checkded1, checkded2, checkded3, checkded4) VALUES ($valores)";
          mysql_query($sql);
      }
      ?>
  2. Tenho um campo que preciso usar um checkbox, para selecionar.
    Caso selecionado vai para o banco como valor “1”, caso não selecionado, já está definido na tabela como “0”. Tentei fazer mas está complicado, tenho pouco conhecimento, estou buscando informações.

    1. Fala Nilton,

      Quando um checkbox está desmarcado, nenhum valor é enviado.

      Para contornar o seu problema faça como o exemplo abaixo:

      <input type="checkbox" value="1" name="checkbox"> Teste
      // após o submit
      <?php
      $valor_selecionado = isset($_POST['checkbox']) ? $_POST['checkbox'] : 0;
      echo "valor: ".$valor_selecionado;
      ?>

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima