4
respostas

qual a lógica de colocar *true* ou *false* entre aspas?

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?

4 respostas

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