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?
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? :)