No campo de chegar, input type="checkbox", deve verificar se é verdadeiro ou false. Mas para salvar no Banco, deve-se colocar "true" ou "false" entre aspas? Qual a lógica?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
No campo de chegar, input type="checkbox", deve verificar se é verdadeiro ou false. Mas para salvar no Banco, deve-se colocar "true" ou "false" entre aspas? Qual a lógica?
Oi Marcos,
No PHP, concatenação de uma string, por exemplo "o valor é:", com o valor false fica "o valor é:", pois pro PHP o false pode ser igual a "". Se quisermos conseguir o valor "o valor é:false", temos que juntar a string "o valor é:" com a string "false", aí não tem erro.
Fez sentido? :)
Marcos, infelizmente não entendi sua dúvida. Tem como postar o código aqui pra eu ver?
insira seu código aqui
<?php
include 'cabecalho.php';
include 'banco_produtos.php';
include 'conecta.php';
$id = $_POST['id'];
$descricao = $_POST['descricao'];
$valor = $_POST['valor'];
$id_categoria = $_POST['id_categoria'];
if (array_key_exists('usado', $_POST)) {
$usado = "true";
} else {
$usado = "false";
}
//editar_produtos($conexao, $id, $descricao, $valor, $id_categoria, $usado)
$resultado = editar_produtos($conexao, $id, $descricao, $valor, $id_categoria, $usado);
if($resultado){ ?>
<p class="alert alert-success"> o produto foi editado!</p>
<?php } else { ?>
<p class="alert alert-danger"> o produto não foi editado.</p>
<?php } ?>
<?php include_once 'rodape.php' ?>
Oi Marcos,
Quando você chama a função editar_produtos, muito provavelmente há um momento do código que está mais ou menos assim:
"update produtos set nome = '{$nome}', preco = {$preco}, descricao = '{$descricao}',
categoria_id= {$categoria_id}, usado = {$usado} where id = '{$id}'"
Ou seja, você está juntando o texto "..., usado=" com o valor na variável $usado e depois com o texto " where id..", resumindo: ", usado=" + $usado + " where".
Se o valor de $usado for false ($usado=false), para o PHP false e ""(caracter vazio) tem o mesmo valor em algumas situações, então a concatenação que queremos fazer ", usado=" + $usado + " where" ficará assim:
", usado= where"
Como queremos que o resultado dessa junção seja
", usado=false where"
, devemos forçar o PHP a tratar o false como texto na hora da concatenação. Uma das formas é justamente guardar o valor false na variável direto como texto, $usado="false".
Ajudou a esclarecer? :)