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, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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