Ir para conteúdo
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);
?>

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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());
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros 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);

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Eduardo S. B. de Oliveira
      Senhores, preciso de uma ajuda, estou criando um formulário onde o checkbox fique "checked" quando clicar em cima, mas o detalhe e que quando atualizar a pagina o checkbox permaneça marcado. É possível? 
    • Por Jefferson andre
      Ola, estou criando um contador de acessos diario mas nao funciona, a tabela tem o campo data no formato date e o campo contador int(10)
       
      A ideia eh verificar a data e se nao existir incluir na tabela, se existir adicionar ao contador
       
      Parece que o erro esta no formato da data, nem manualmente consigo incluir na tabela via localhost ou na hospedagem da google
       
      Agradeço qualquer ajuda
       
      <?php // fazendo uma conexão com o banco de dados include("conexao.php"); // grava a data atual em uma variavel date_default_timezone_set('America/Sao_Paulo'); $date = date('d-m-Y'); //$sql = "SELECT codigo FROM contador"; $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); if (mysqli_num_rows($resultado)== true){ // registro ja existe } else { // resultado nao encontrado entao inserir $sql = "INSERT INTO contador_diario ('data', 'contador') VALUES ('$date', '1')"; if ($arquivo->query($sql) == TRUE) { echo "Data cadastrada com sucesso"; } else { echo "Erro: " . $sql . "<br>" . $arquivo->error; } } // refaz a pesquisa para registrar o contador $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); // igualar a array a uma variavel $linha=mysqli_fetch_array($resultado); $cod_2 = $linha["contador"]+1; // lista a variavel //echo "<font face='Arial'><span class='style14'>$cod_2</span></font>"; $sql = "UPDATE contador_diario SET contador=$cod_2"; if ($arquivo->query($sql) === TRUE) { // echo "Alteração efetuada com sucesso"; } else { // echo "Erro alterando o contador de visitas diario" . mysqli_error($arquivo); } // fecha a conexao mysqli_close($arquivo); ?>  
    • Por fernandokonopacki
      Boa tarde a todos
       
      Estou com um problema para resolver, pedi para atualizarem a versão do meu PHP do meu host que era de 5.1 para 7.1, porem ao acessar a área de cadastro ele apresentou um erro.
       
       
      isso fez com que não funcionasse mais essa área de banco de dados
       
      segue abaixo como está o código do index.php
       
       
       
      alguém pode me ajudar?
    • Por gersonab
      Tenho este sql que funciona normal:
      <?php $idtor = (int)$_GET['id_tor']; $dia = $_GET['dia']; $sql3 = "SELECT * FROM cantos INNER JOIN campeonato ON id_camp = id_campeonato INNER JOIN torneio ON id_tor = id_torneio WHERE data = :dia AND id_torneio = :idtor ORDER BY cantosfim DESC, pontos DESC, cantos DESC"; $stmt = $pdo->prepare($sql3); $stmt->bindParam(':idtor', $idtor); $stmt->bindParam(':dia', $dia); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> porém este outro não retorna nada, nem erro...
      <?php $idtor = (int)$_GET['id_tor']; $consul = "SELECT id_cantos, id_torneio, id_campeonato, SUM(cantosfim) AS cantfin, SUM(pontos) AS pontfin FROM cantos INNER JOIN campeonato ON id_camp = id_campeonato INNER JOIN torneio ON id_tor = id_torneio WHERE id_tor = :idtor ORDER BY pontfin DESC, cantfin DESC"; $stmt = $pdo->prepare($consul); $stmt->bindValue(':idtor', $idtor); $stmt->execute(); while ($lin = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> não consigo encontrar o erro.
×

Informação importante

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