Ir para conteúdo

Arquivado

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

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

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
×

Informação importante

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