Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

checkbox 'usado' não reflete no DB

esse é o checkbox no arquivo do formulario

  <tr>
          <td></td>
          <td><input type="checkbox" name="usado" value="true" > Usado</td>
        </tr>

adiciona-produto.php

$usado=$_POST['usado'];
  if (array_key_exists($usado, $_POST)) {
    $usado="true";
  } else {
    $usado="false";
  }

  if (insereProduto($conexao,$nome,$preco,$descricao,$categoria_id,$usado)){?>
    <p class="text-success">Produto --<?= $nome; ?>, com valor de <?=$preco; ?>R$ -- adicionado com sucesso!</p>

e a função de inserir os produtos no banco....

function insereProduto($conexao,$nome,$preco,$descricao,$categoria_id,$usado){
  $query="insert into produtos (nome, preco, descricao, categoria_id, usado) values ('{$nome}',{$preco},'{$descricao}','{$categoria_id}','{$usado}')";
  $resultadoInsercao=mysqli_query($conexao,$query);
  return $resultadoInsercao;
}

marcando ou não a opção 'usado' no banco aparece '0',

4 respostas

Oi Pablo,

Tem um erro no seu arquivo adiciona-produto.php. Ele deve ficar assim:

//essa linha deve ser removida:
//$usado=$_POST['usado'];

if (array_key_exists("usado", $_POST)) {
    $usado="true";
} else {
    $usado="false";
}

Veja se resolve.

continua sem funcionar.. quando criei a columna usado no DB aparece como tipo tinyint(1) e nao boolean.. isso é normal?

solução!

Altere para:

if (array_key_exists("usado", $_POST)) {
    $usado=1;
} else {
    $usado=0;
}

Deu certo, imagino que pela columna ser de tipo inteiro, não aceita valores boleanos... obrigado!