Jump to content


Photo

Php + Checkbox + Mysql


  • Faça o login para participar
6 replies to this topic

#1 Vinícius Franke

Vinícius Franke

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino

Posted 14/10/2010, 16:34

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?

#2 Fábio Web Arts

Fábio Web Arts

    Web IN Arts

  • Usuários
  • 299 posts
  • Sexo:Masculino
  • Localidade:No Saco De Magé
  • Interesses:Tudo que for da área de Informática

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 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

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?

:)(y)
||| 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 Fábio Web Arts

Fábio Web Arts

    Web IN Arts

  • Usuários
  • 299 posts
  • Sexo:Masculino
  • Localidade:No Saco De Magé
  • Interesses:Tudo que for da área de Informática

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 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

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.

:)(y)
||| 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 Vinícius Franke

Vinícius Franke

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino

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.

<?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 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

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




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq