PHP

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 thoughts on “PHP: Inserindo valores selecionados de checkboxes

  • Jeison

    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’)

    Resposta
    • 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);
      Resposta
  • Victor

    Ele aparece a linha que selecionei
    INSERT INTO tabela(campo) VALUES (‘1’)
    e queria que ele fizesse a inserção no banco

    Resposta
    • 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);
      Resposta
  • Como gravar todas as opções escolhidas nos checkboxes e gravar em apenas um unico campo?

    Resposta
    • 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 />";
      }		
      ?>
      Resposta
  • Reni

    Como ficaria a inserção no banco, usando PDO????

    Resposta
    • 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);
      }
      Resposta
      • Jeff

        MDS ME AJUDOU MUITO E MUITOOO OBRIGADOOOOOO

        Resposta
  • Fernando Peres Pereira

    Olá como faço para inserir cada item selecionado em um campo diferente?

    Resposta
    • 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);
      }
      ?>
      Resposta
  • Nilton

    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.

    Resposta
    • 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;
      ?>
      Resposta

Deixe um comentário

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