Bom dia pessoal, estou com uma dúvida e preciso de ajuda.
É o seguinte, eu estou fazendo um sistema com restrições por classe de usuário (cada usuário tem uma classe e essa classe recebe as permissões de acesso).
No meu banco tenho uma tabela assim: um campo CodTela (referente a tela do sistema), um campo CodClasse (referente a classe de usuário) e um campo Status (que seria o status da tela para determinada classe: ATIVO ou INATIVO).
O que estou fazendo é o seguinte, na minha página php eu seleciono a classe de usuário e através de uma consulta eu listo as telas e verifico quais estão ativas/inativas para a mesma. Se estiver ativa, vai ficar marcada num checkbox, se não estiver, não fica marcada.
O que eu preciso é outra história, se eu marcar um check, tem que gravar no banco (através de um UPDATE) como ATIVO. Também preciso que seja verificados os checks que não estão marcados para gravar no banco como INATIVO.
Deu pra entender?
Php + Checkbox + Mysql
Started By Vinícius Franke, 14/10/2010, 16:34
6 replies to this topic
#1
Posted 14/10/2010, 16:34
#2
Posted 15/10/2010, 08:56
ue difina valores para o checkbox! por exemplo o value como 1 que no caso se ele marcar enviará 1 para o banco e 1=ativo se caso tiver vazio defina 0 e 0=inativo
#3
Posted 15/10/2010, 09:15
Lembrando que, ao postar um form no php, se o checkbox estiver desmarcado não vem valor algum... então tem que usar algo do tipo:
if(isset($_POST["nome_do_checkbox"])){
$ativo = "sim";
} else {
$ativo = "nao";
}
Certo?
if(isset($_POST["nome_do_checkbox"])){
$ativo = "sim";
} else {
$ativo = "nao";
}
Certo?
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.
#4
Posted 15/10/2010, 13:46
no caso acho que ficaria melhor assim:
if(isset($_POST['nome_combo'])){
$var = "1"; //Onde 1 = ativo
}else{
$var = "0"; //Onde 0 = inativo
}
Edição feita por: Fábio Web Arts, 15/10/2010, 13:47.
#5
Posted 15/10/2010, 15:12
Fabio,
Isso mesmo, para o banco de dados, muito melhor gravar 1 char apenas como flag.
É que no caso tentei ser mais didático para ele entender o problema do if, ou seja, ele só vai pegar o valor do checkbox se o mesmo estiver ticado, senão não vem valor nenhum como se não existisse o checkbox (diferente do radio, que é uma lista de opções se tiver o mesmo nome).
Sendo assim é necessário o if(isset()) = "se estiver setado".
Depois disso, siga a sugestão do Fabio usando 0 ou 1 para ativo ou inativo.
Isso mesmo, para o banco de dados, muito melhor gravar 1 char apenas como flag.
É que no caso tentei ser mais didático para ele entender o problema do if, ou seja, ele só vai pegar o valor do checkbox se o mesmo estiver ticado, senão não vem valor nenhum como se não existisse o checkbox (diferente do radio, que é uma lista de opções se tiver o mesmo nome).
Sendo assim é necessário o if(isset()) = "se estiver setado".
Depois disso, siga a sugestão do Fabio usando 0 ou 1 para ativo ou inativo.
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.
#6
Posted 18/10/2010, 10:50
Desde já agradeço pelas respostas,
vou postar o meu código para vocês darem uma olhada.
Eu estou conseguindo fazer o update nos checkbox marcados, mas não estou conseguindo pegar os checkbox não marcados.
vou postar o meu código para vocês darem uma olhada.
Eu estou conseguindo fazer o update nos checkbox marcados, mas não estou conseguindo pegar os checkbox não marcados.
<?php header("Content-Type: text/html; charset=ISO-8859-1",true); include("../conexaobd.php"); $id=2; $sql1 = "SELECT telas.descricao, telas.codtela, permissoes_telas.status FROM telas INNER JOIN permissoes_telas ON telas.codtela = permissoes_telas.codtela WHERE telas.status='ATIVO' AND permissoes_telas.codclasse='".$id."'"; $rs = mysql_query($sql1); if (mysql_num_rows($rs) < 1){ print "Não há telas ativas."; }else{ echo "<form method='post' action='telas_classe.php'>"; while ($valor = mysql_fetch_array($rs)){ if ($valor['status'] == 'ATIVO'){ echo "<input type='checkbox' checked name='check[]' value='".$valor['codtela']."'>".$valor['descricao']."<br>"; }else{ echo "<input type='checkbox' name='check[]' value='".$valor['codtela']."'>".$valor['descricao']."<br>"; } } echo "<input type='submit' value='Gravar'>"; echo "</form>"; } // Verifica se usuário escolheu alguma checkbox. if(isset($_POST["check"])){ // Faz loop pelo array variavel foreach($_POST["check"] as $variavel) { // faz o update nos checkbox marcados $sql4 = "UPDATE permissoes_telas SET status='ATIVO' WHERE codclasse='".$id."' AND codtela !='".$variavel."'"; $rs4 = mysql_query($sql4); } }else{ // aqui devo pegar os checkbox não marcados! } ?>
Edição feita por: Vinícius Franke, 18/10/2010, 10:51.
#7
Posted 23/09/2017, 13:33
Priligy At Boots Achat Vrai Kamagra Prix Cialis Boite De 4 cialis online Will Propecia Work On Hairline for sale isotretinoin acutane pills pharmacy with free shipping Correct Viagra Dosage
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)