Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Igor Pereira

atualizar valor do checkbox no bd

Recommended Posts

Olá Amigos.

 

tenho uma coluna no BD onde uso valor 1 para checked e 0 para unchecked.

 

a idéia é a página escrever os valores já contidos no bd, e o usuário pode atualizar essa pagina marcando ou desmarcando esses checkboxes.

 

aparece corretamente os valores 1 no bd (checked) e 0 no bd (unchecked). porem para atualizar, se os checkboxes estao marcado, consigo desmarca-los e passar o valor 0 para o BD, mas se os checkboxes estao desmarcados e marco, o valor 1 nao é passado para o bd..???

<?php 
//inicio do form
<form action="OpTopoAdmin.php" method="post" >
// BUSCA O VALOR NO BD E ESCREVE O BOX CHECKED SE FOR 1 E UNCHECKED SE FOR 0
if ($linha[foto_aprovado] == 1) { echo '<input name="aprovado" type="checkbox" value="'.$linha[foto_aprovado].'"  checked />';} else { echo '<input name="aprovado" type="checkbox" value="'.$linha[foto_aprovado].'" />'; }?>
//CAMPOS HIDDEN PASSANDO O ID E A ACAO 
<input name="id" type="hidden" value="<?php echo $linha['foto_id']; ?>" />
   <input name="acao" type="hidden" value="Alterar" />
   <input name="Atualizar" type="submit" value="Atualizar" /> 
</form>

 

OpTopoAdmin.php

<?php
include "conexao.php";
$acao = $_POST["acao"];
$id = $_POST["id"];
       $aprovado = $_POST["aprovado"];
if ($acao == Alterar)
{
	$conn = "UPDATE foto_topo SET foto_aprovado  =  '$aprovado', foto_destaque = '$destaque' WHERE foto_id = '$id' ";
	mysql_query($conn) or die ("não foi possivel alterar dados");

	echo "<script type = 'text/javascript'> location.href = 'index.php'</script>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, quando postei esse artigo, o William Bruno, meu quase xará questionou, em linhas gerais, a usabilidade do recurso, ponderando o benefício com o fato de ter o HTML "sujo", já que você teria uma marcação adicional.

 

Eu acredito que é um contra positivo, já que facilita e muito situações como a sua, já que você SEMPRE contará com, por exemplo, $_POST['checkbox'] pois, se ele for marcado, o PHP receberá o valor do checkbox, se não, o do hidden.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, quando postei esse artigo, o William Bruno, meu quase xará questionou, em linhas gerais, a usabilidade do recurso, ponderando o benefício com o fato de ter o HTML "sujo", já que você teria uma marcação adicional.

 

Eu acredito que é um contra positivo, já que facilita e muito situações como a sua, já que você SEMPRE contará com, por exemplo, $_POST['checkbox'] pois, se ele for marcado, o PHP receberá o valor do checkbox, se não, o do hidden.

 

 

Bem interessante sim a sua solução, mas como eu poderia aplicar ao meu problema visto que é justamente ao contrário, onde passa o valor "nao marcado" para o $_POST[checkbox]?

 

estranho que da situações um não está passado é ...

ex: se o checkbox vem do bd "marcado" = 1 e eu o desmarco, qndo atualizo, o bd é alterado normalmente.

se o checkbox vem do bf "nao marcado" = 0, e o marco, qndo atualizo, o b não é alterado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou é 1 ou é 0 o valor? Não tem nada de NULL ?

 

Tente fazer isto.

if ($linha['foto_aprovado'] == 1) { 
 $complemento = ' value="1"  checked ';
} else { 
 $complemento = ' value="0" ';
}

echo '<input name="aprovado" type="checkbox" '.$complemento.' />';
?>

// Dica
// Alterar = string, então use aspas 
if ($acao == "Alterar")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou é 1 ou é 0 o valor? Não tem nada de NULL ?

 

No BD sim. pois no momento de inserir é boolean sim(1) ou nao(0)

 

 

Fiz o teste e continua Fail.

olhem a escrita SQL:

quandos os checkboxes estão desmarcado e eu os marco escreve assim:

 

UPDATE foto_topo SET foto_aprovado = '0', foto_destaque = '0' WHERE foto_id = '5'

 

quando estão marcados e eu os desmarco, escreve assim:

 

UPDATE foto_topo SET foto_aprovado = '', foto_destaque = '' WHERE foto_id = '7'

 

Mais alguma dica?

 

edit: Ahaaa resolvi o problema. fiz uma alteraçãozinha no seu código e funcionou.

 

if ($linha['foto_aprovado'] == 1) { 
 $complemento = ' value="1"  checked ';
} else { 
 $complemento = ' value="1" unchecked ';
}

echo '<input name="aprovado" type="checkbox" '.$complemento.' />';
?>

 

Mas se tiverem uma forma melhor de resolver, estou a disposição

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.