Захватив логическое значение из checkbox в PHP


Я делаю форму, где пользователь должен сообщить вам, если продукт или не используется, но у меня возникают трудности в том, чтобы захватить значение этого checkbox, 1, 0, mysql столбец уже setada boolean,default 0

Logica-добавляет продукт.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{

    };

?>

Добавляет продуктов.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>
Author: Murilo Melo, 2016-12-03

1 answers

Ваш код неправильно, отправляет переменную, что не согласуется с именем ключа, пожалуйста, обратите внимание:

Замените:

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

поэтому:

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

Объяснение:

структура функции array_key_exists

bool array_key_exists ( mixed $key , array $array )

, Где во-первых paramentro-это имя ключа, искать внутри array и по array сам метод, который возвращает true (true) или false (false) в результате, если нашли или нет ...

Или же

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

Ссылается на: array_key_exists

 2
Author: novic, 2016-12-03 22:53:09