Jump to content
brunobos21

Checkbox que faz update no mysql

Recommended Posts

Olá, eu criei um formulario que salva os dados em um banco de dados mysql, e criei uma pagina de relatorio para mostrar todo mundo que se cadastra nesse banco, até ai tudo certo, só que eu tenho um campo "Status" que eu queria colocar um checkbox para o administrador poder marcar esse campo e mudar no mysql o valor do Status para 1 sempre que clicar no botão atualizar, e se o administrador desmarcar antes apertar o botão Atualizar, não mudar na tabela. Já pesquisei em tudo quer canto e não achei, se puderem me ajudar enviando algum modelo de código ou algum tópico aqui do forúm que ja fale sobre isso, agradeço. Aqui está meu código:

<?php
// definições de host, database, usuário e senha
$host = "host";
$banco = "banco";
$user = "user";
$pass = "pass";
$tbl_name="tabela";
 
$nome = $_POST['nome'];
$numero = $_POST['numero'];
$email = $_POST['email'];
$cidade = $_POST['cidade'];
$whatsapp = $_POST['whatsapp'];
$data = $_POST['data'];
$status = $_POST['status'];
 
// conecta ao banco de dados
$con = mysql_pconnect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR);
// seleciona a base de dados em que vamos trabalhar
mysql_select_db($banco, $con);
// cria a instrução SQL que vai selecionar os dados
$query = sprintf("SELECT * FROM Pesquisas");
// executa a query
$dados = mysql_query($query, $con) or die(mysql_error());
// transforma os dados em um array
$linha = mysql_fetch_assoc($dados);
// calcula quantos dados retornaram
$total = mysql_num_rows($dados);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Relatorio</title>
    <meta charset="latin1_swedish_ci">
    <meta name="viewport" content="width=device-width, initial-scale=1">
<!--===============================================================================================-->  
    <link rel="icon" type="image/png" href="images/icons/favicon2.ico"/>
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="vendor/animate/animate.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="vendor/perfect-scrollbar/perfect-scrollbar.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="css/util.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
<!--===============================================================================================-->
<script src="vendor/jquery/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
//-->
</script>
</head>
<body>
<form action=" " method="post">
    <div class="limiter">
        <div class="container-table100">
            <div class="wrap-table100">
                <div class="table100">
                    <table>
                        <thead>
                            <tr class="table100-head">
                                <th class="column1">Nome</th>
                                <th class="column2">Numero</th>
                                <th class="column3">Cidade</th>
                                <th class="column4">E-mail</th>
                                <th class="column5">Whatsapp</th>
                                <th class="column6">Tipo</th>
                                <th class="column6">Data</th>
                                <th class="column6">Status</th>
                            </tr>
                        </thead>
 
                        <?php
                        // se o número de resultados for maior que zero, mostra os dados
                        if($total > 0) {
                    // inicia o loop que vai mostrar todos os dados
                    do {
                        ?>
                        <tbody>
                                <tr>
                                    <td class="column1"><?=$linha['nome']?></td>
                                    <td class="column2"><?=$linha['numero']?></td>
                                    <td class="column3"><?=$linha['cidade']?></td>
                                    <td class="column4"><?=$linha['email']?></td>
                                    <td class="column5"><?=$linha['whatsapp']?></td>
                                    <td class="column6"><?=$linha['tipo']?></td>
                                    <td class="column6"><?=$linha['data']?></td>
                                    <td class="column6">
                                    <input type=checkbox name="banco[]" value="1"><?=$linha['status']?>
                                    </td>
                                </tr>       
                        </tbody>
                        <?php
                    // finaliza o loop que vai mostrar os dados
                    }while($linha = mysql_fetch_assoc($dados));
                        // fim do if
                        }
                        ?>
                    </table>
                    <div class="container-contact2-form-btn">
                                <div class="wrap-contact2-form-btn">
                                    <div class="contact3-form-bgbtn"></div>
                                    <button class="contact2-form-btn" type="submit" value="Enviar" name="enviar">
                                        Atualizar
                                    </button>
                                </div>
                            </div>
                </div>
            </div>
        </div>
    </div>
</form>
 
<!--===============================================================================================-->  
    <script src="vendor/jquery/jquery-3.2.1.min.js"></script>
<!--===============================================================================================-->
    <script src="vendor/bootstrap/js/popper.js"></script>
    <script src="vendor/bootstrap/js/bootstrap.min.js"></script>
<!--===============================================================================================-->
    <script src="vendor/select2/select2.min.js"></script>
<!--===============================================================================================-->
    <script src="js/main.js"></script>
</body>
</html>
<?php
// tira o resultado da busca da memória
mysql_free_result($dados);
?>

Share this post


Link to post
Share on other sites

Por padrão, se não estiver selecionado, ele envia NULL, caso esteja passará o valor setado, ex:

<input type="checkbox" name="checkbox_status" value="1">

No PHP você recebe e verifica, supondo que envie por POST:

if(isset($_POST['checkbox_status'])){ // se estiver marcado
    // faça isso
}else{
    // senão faça isso
}

Se quer fazer no inserir, precisa usar INSERT no SQL, se for pra atualizar posteriormente, precisa utilizar UPDATE.

Share this post


Link to post
Share on other sites

Olá, obrigado pela ajuda marcosmarcolin!

Agora estou tendo um problema em fazer o insert, não sei como colocar o WHERE do mysql, se eu coloco WHERE nome = $nome, ele da erro de sintax do mysql, alguém teria alguma ideia?

<?php
// definições de host, database, usuário e senha
include ('conect.php');
require('conect.php');
 
$id = $_POST['id'];
$nome = $_POST['nome'];
$numero = $_POST['numero'];
$email = $_POST['email'];
$cidade = $_POST['cidade'];
$whatsapp = $_POST['whatsapp'];
$data = $_POST['data'];
$status = $_POST['status'];
 
if(isset($_POST['checkbox_status'])){ // se estiver marcado
mysql_query("UPDATE Pesquisas SET status=1 WHERE nome = '$nome'") or die(mysql_error());
}else{
mysql_query("UPDATE Pesquisas SET status=0 WHERE nome = '$nome'") or die(mysql_error());
}
?>

Share this post


Link to post
Share on other sites

acho que falta colocar a conexão e selecionar a base de dados que você vai trabalhar antes da condição 

// conecta ao banco de dados
$con = mysql_pconnect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR);
// seleciona a base de dados em que vamos trabalhar
mysql_select_db($banco, $con);

Share this post


Link to post
Share on other sites
Agora, felone disse:

acho que falta colocar a conexão e selecionar a base de dados que você vai trabalhar antes da condição 

// conecta ao banco de dados
$con = mysql_pconnect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR);
// seleciona a base de dados em que vamos trabalhar
mysql_select_db($banco, $con);

Né isso não, porque eu consigo fazer o update sem usar o where, o problema ta na condição que eu impus no WHERE, ele provavelmente não ta reconhecendo a variável que eu to comparando com a coluna do mysql, to me batendo pra ajustar isso e não to conseguindo.

Share this post


Link to post
Share on other sites
16 horas atrás, marcosmarcolin disse:

Qual é o erro?

 

mysqli_query("UPDATE Pesquisas SET status = '1' Where id = '$id';") or die(mysql_error());
Eu estou usando esse codigo, só que quando eu executo ele, ele simplesmente não altera nada no banco mysql, ou seja ele não esta reconhecendo a variavel $id e nenhuma outra, pois ja tentei com outra variaveis, eu não sei mais o que fazer, qualquer coisa meu código inteiro ta ai em cima

Share this post


Link to post
Share on other sites
19 horas atrás, brunobos21 disse:

 

mysqli_query("UPDATE Pesquisas SET status = '1' Where id = '$id';") or die(mysql_error());
Eu estou usando esse codigo, só que quando eu executo ele, ele simplesmente não altera nada no banco mysql, ou seja ele não esta reconhecendo a variavel $id e nenhuma outra, pois ja tentei com outra variaveis, eu não sei mais o que fazer, qualquer coisa meu código inteiro ta ai em cima

 

Se você colocar um valor fixo no id ele faz a alteração no banco de dados ?

tive um problema parecido  mas no meu caso quando eu colocava um valor fixo ele executava o comando normalmente, e o problema era quando passava o valor para a variavel, ela fica com dois valores e um dos valores era null, por isso dava erro.

Share this post


Link to post
Share on other sites

Aparentemente tem um erro na sua consulta, tem um ; (ponto e vírgula) depois do '$id'. Provavelmente seja isso o porque de não executar a query. Porém, verifique se o $id existe, se a tabela está correta, etc.

 

#Obs: quando se usa mysqli_query, o PHP sempre espera dois parâmetros, primeiro a conexão, por segundo a consulta, ex:

mysqli_query($con, "UPDATE tabela SET.....");

A variável $con é a variável que armazena a conexão com o banco de dados. Veja no manual: mysqli_query

 

Verifica isso e retorna aqui.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By britoriquee
      Olá pessoal!

      Tenho dois bancos: dt_dblogin e dt_dbdados, o primeiro salva os dados de login do usuário, como login, senha, id, etc... Já o segundo salva dados da empresa do usuário, como nome, endereço, cnpj, dentre varios outros. 
       
      A minha dúvida é: Como faço para verificar qual usuário está logado para liberar o conteúdo certo da empresa dele que está no outro banco? 
       
      Agradeço a atenção.
    • By leonardoc.g
      Quando eu tento fazer conexão no banco de dados pelo Dreamweaver me aparece essa mensagem:
       
      your php server doesn't have the MySQL module loaded or you cant't use the mysql_(p)connect functions
       
       
    • By Julie_santiago
      Olá!
      Pessoal, preciso muito de um help urgente. Estou tentando fazer uma simples query ao banco de dados, usando o Axios. Mas, não importa a forma de fazer a requisição, o Axios não funciona. O HTML está abaixo, onde chamo a função enviaDados() através do onsubmit.
      <div class="input-group md-form"> <form method="get" onsubmit="enviaDados()" name="buscar"> <input type="text" id="Form-search2" class="form-control" name="nomeReagente"> <label for="Form-search2">Search</label> <input type="submit" name="pesquisar" value="buscar"> </form> <span class="input-group-text dark lighten-2" id="basic-text1"> <i class="fas fa-search text-dark" aria-hidden="true"></i> </span> </div> Meu arquivo main.js que contém a função enviaDados().
      function enviaDados(){ let nome = buscar.nomeReagente.value recebeDados(nome); } Dentro dessa função, estou chamando outra: recebeDados() que executa a requisição Axios. Passo como parâmetro o valor lá do meu input. OBS.: Meu código está assim, aparentemente confuso, porque o objetivo é ter funções que enviam os dados dos meus formulários e outras funções (genéricas) para receber e tratar esses dados. Abaixo a função recebeDados():
      function recebeDados(nome_reagente){ axios.get('http://localhost/Quimica/php/recebe_json.php', { params: { nome } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log('Não foi possível realizar a requsição: '+error); }) .finally(function () { }); } Não importa o que eu faça, sempre cai no CATCH  - request aborted. Preciso muito resolver esse problema, mas não faço ideia do que pode ser. Relevem qualquer "noobice" porque estou aprendendo o básico ainda.
       
    • By JeanTDZ
      Olá pessoal!
       
      Estou com uma tremenda dificuldade.
      Tenho um formulário na qual está funcionando e cadastrando, porém preciso que o meu botão adicionar autorizado funcione e mostre o que foi digitado para o e-mail. As informações na vdd é enviada para o e-mail e o que será enviado é oque será digitado.
       
      Simplificando ->
      Tenho um botão que adiciona 2 inputs (NOME E SALDO) e conforme for clicando nesse botão, vai adicionando mais campos.
      Dúvida: Como posso fazer com que grave o que foi digitado nesses campos?
       
      Segue o que eu tentei fazer até agora:

      HTML
      <!DOCTYPE html> <html>     <head>         <title>Chame Taxi PrePago</title>                 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>         <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />         <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>         <link rel="icon" type="image/x-icon" href="https://www.flaticon.com/premium-icon/icons/svg/1361/1361253.svg" />         <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>     </head>     <body>         <br />         <div class="container" style="width:100%; max-width:600px">             <h2 align="center">Pré-Pago</h2>             <br />             <div class="panel panel-default">                 <div class="panel-heading"><h4>Registrar</h4></div>                 <div class="panel-body">                     <form method="post" id="register_form">                         <?php echo $message; ?>                         <div class="form-group">                             <label>Nome Completo</label>                             <input type="text" name="user_name" style="text-transform:uppercase" class="form-control" pattern="[a-zA-Z ]+" required />                         </div>                         <div class="form-group">                             <label>E-mail</label>                             <input type="email" name="user_email"  style="text-transform:uppercase" class="form-control" required />                         </div>                         <div class="form-group">                             <label>CEP</label>                             <input type="text" name="campob" id="cep" value="" maxlength="9" onblur="pesquisacep(this.value);" class="form-control">                         </div>                         <div class="form-group"> <table id="myTable" class="table"> <a class="btn btn-primary" onclick="myFunction()" href="#" role="button">Adicionar Autorizado</a>             <thead>                 <tr>                     <th>NOME</th>                     <th>SALDO</th>                 </tr>             </thead>         </table>                         <div class="form-group">                             <input type="submit" name="register" id="register" value="Validar" class="btn btn-info" />                         </div>                     </form>                 </div>             </div>         </div>     </body> </html> JAVASCRIPT 
       
          <script>         var incremento = -1;         function myFunction() {             incremento++;             var table = document.getElementById("myTable");             var row = table.insertRow(0);             var cell1 = row.insertCell(0);             var cell2 = row.insertCell(1);             var cell3 = row.insertCell(2);             var cell4 = row.insertCell(3);             cell1.innerHTML = "NOME";             cell2.innerHTML = '<input type="text" name="name1[${incremento}]" >';             cell3.innerHTML = "SALDO";             cell4.innerHTML = '<input type="text" name="saldo[${incremento}]" size="15px" >';         }     </script>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.