Capturing the boolean value of a checkbox in PHP

3

I'm making a product form, where the user needs to report whether or not the product is used, but I'm having difficulty capturing the value of this checkbox , whether it is 1 or 0 , mysql the column is already set to boolean with default 0

logical-add-product.php

 <?php
    include("conecta.php");

    #Variáveis para cadastrar
    $nome = $_POST["nome-produto"];
    $preco = $_POST["preco-produto"];

    $descricao = $_POST["descricao-produto"];

    #Caso de verificação da variável booleana
    $usado = $_POST["usado-produto"];
    if(array_key_exists($usado, $_POST)) {
        $usado = "true";
    }else{
        $usado = "false";
    }

    #Query de inserção
    $query = "insert into produtos(nome, preco, descricao, usado) values('{$nome}', '{$preco}', '{$descricao}', {$usado})";

    #Variável para executar a inserção
    $retornoInsercao = mysqli_query($conexao, $query);

    #Teste para verificar inserção
    if($retornoInsercao){
        header("Location:index.php");
        die();
    }else{

    };

?>

add-products.php

<?php
    include("header.php");
    include("conecta.php");
?>

 <form action="logica-adiciona-produto.php" method="post">
    <fieldset>
        <label>Nome:</label>
        <input type="text" name="nome-produto">
        <label>Preço:</label>
        <input type="number" name="preco-produto">
    </fieldset>
    <fieldset>
        <label>Usado ?</label>
        <input type="checkbox" name="usado-produto" value="true">
        <label>Categoria:</label>
        <select name="">

        </select>
        <label>Descricao:</label>
        <textarea name="descricao-produto"></textarea>
    </fieldset>
    <fieldset>
        <input type="submit">
    </fieldset>
 </form>
    
asked by anonymous 03.12.2016 / 23:12

1 answer

2

Your code is wrong, you are sending a variable that does not match the key name, please note:

Switch:

#Caso de verificação da variável booleana
$usado = $_POST["usado-produto"];
if(array_key_exists($usado, $_POST)) {
    $usado = "true";
}else{
    $usado = "false";
}

why:

$usado = array_key_exists('usado-produto', $_POST) ? 1 : 0;

Explanation:

The structure of the function array_key_exists

bool array_key_exists ( mixed $key , array $array )

( array ) or false ( array ) in the result, if found or not ...

or

$usado = isset($_POST['usado-produto']) ? 1 : 0;

Reference: array_key_exists

    
03.12.2016 / 23:38