Jump to content
Rafael Freitas

Retornar dados do banco de dados e selecionar somente alguns com checkbox

Recommended Posts

Fala galera!

Estou travado em uma parte do projeto que estou fazendo, quem puder me ajudar, desde já agradeço.

Seguinte,  eu tenho alguns dados gravados em uma tabela no banco. Eu recupero estes dados exibindo em uma tabela o nome do parametro "p_descricao" e um checkbox do lado, segue abaixo:

               <?php 
$max = 200; 
if(!$pagina){
$pagina = 1;
}
$inicio = $pagina -1;
$inicio = $inicio * $max;




  $consulta = ("SELECT * FROM parametros WHERE p_tipo_analise='MICROBIOLOGICA'");
$p_id = $_GET["p_id"];

$query = mysql_query("$consulta LIMIT $inicio,$max");
$todos = mysql_query($consulta);
$total = mysql_num_rows($todos);

$tp = $total / $max;
$regLinha = 4;
  $i = ceil($max / $regLinha);
  $j = 1;
  $z = 0;
echo "         
<table width=100% class='tabela_parametros_itens' border=1><tr>
  ";
while($x = mysql_fetch_array($query)){
echo "<td>   <input type='checkbox' name='parametro' value='" .$x[p_descricao]."' checked>    " .$x[p_id]." - " .$x[p_descricao]."</td>";
    $z++;
    if($z == $regLinha and $j < $i){
      echo "</tr><tr>";
      $z = 0;
      $j++;
    }
    if($z == $regLinha and $j == $i){
      echo "</tr>";
    }
}
  
echo "</table>";

Eu coloquei checked para todos estarem marcados, até aí tudo certo. O que acontece é que quando eu cadastro, ele só grava no banco, o último registro, ou então se eu desmarco todos e deixo somente 1 marcado, aí ele grava certo.

 

O que eu queria era gravar todos os registros que estiverem marcados com a checkbox e não só 1.

 

Conto com a ajuda de vocês.

 

Abraço.

Share this post


Link to post
Share on other sites

Olá!
Pra melhor compreensão
Mostre-nos o .sql da tabela onde o sr. pretende salvar os valores dos n checkboxes

Share this post


Link to post
Share on other sites

Há muitos anos(mais de 6) que não se deve mais usar as extensões mysql_*

veja:

image.png.5cea9440e6414085e1d3b89a3ae82cfb.png

Atualize seu php
e use mysqli ou pdo

Share this post


Link to post
Share on other sites
2 horas atrás, washalbano disse:

Olá!
Pra melhor compreensão
Mostre-nos o .sql da tabela onde o sr. pretende salvar os valores dos n checkboxes

Boa tarde, amigo !

O campo no mysql que recebe essa informação é o l_parametro.

Share this post


Link to post
Share on other sites

Para salvar os valores de todos os checkboxes em um único campo mysql:
Se forem inteiros, pode ser uma string com algum tipo de separador

Ou pode-se usar json notation, no php use json_encode()

Os names dos checkboxes precisam ser do tipo array:   <input ... name='parametro[]' value='...

Share this post


Link to post
Share on other sites

Boa noite, Tetsuo.

Eu dei uma olhada no Json, mas não sei se seria bem o que eu preciso. Talvez eu tenha me expressado mal.

Assim, eu faço a consulta no banco, ele me retorna os resultados listados na tabela, aí eu coloquei um checkbox pra cada resultado, conforme imagem anexada.

 

Ele até exibe da maneira correta, só que só está salvando no banco, o último parâmetro cadastrado. Ou seja, de todos esses, só o NITRITO entra no campo "parametro" do banco de dados.

 

Tipo, depois de cadastrado no banco, no caso todos os parametros selecionados, eu precisaria que ele exibisse novamente, quando buscado pelo usuario. Então minha dúvida é: como faria pra cadastrar todos os resultados, se seria em mais de 1 campo no banco de dados, pra que depois eu pudesse exibi-los novamente. Já que eles estão agora em outra tabela, cada um com um id diferente.

 

Entende?

Abraço.

Sem Título-2.jpg

Share this post


Link to post
Share on other sites

Olá!
Consigo pensar em 3 soluções.

Como já passamos por isso, as sugestões do @tetsuo foram bem claras.

A) Num campo sql do tipo varchar(q é o mesmo que string), guarde as ids dos checkboxes, usando algum separador(vírgula, pipebar, sinal de menos, underline, ...)

B) Num campo sql do tipo varchar, guarde um json notation, que seria simplesmente salvar/atualizar um json_encode do array dos checkboxes.

C) Crie uma tabela mysql intermediária, do tipo N pra N, onde o sr. salvaria a fk do checkbox e a fk da OS(Ordem de Serviço/Cotação ou disso aí, seja lá o que for)

Share this post


Link to post
Share on other sites

Ainda não consegui botar pra funcionar.

 

Alguém poderia dar um help pelo Whatsapp ao algo assim? Manda uma mensagem.

Meu prazo está se esgotando e travei nessa parte =/

 

Abraço!

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 lucascientista
      Boa noite, galera é o seguinte eu estou montando um script que pesquisa no banco de dados e mostrar os resultados em uma página php, bem aí que está o problema eu pesquisei alguns sistemas de paginação e de pesquisa e acabei montando meu script, no meu script a pesquisa aparece na primeira página mas quando passo para a página adiante não me é mostrado resultado nenhum já verifiquei tudo e não consigo encontrar o erro, será que alguém pode me ajudar?
       
      <?php #Incluindo a conexão no banco de dados require_once '../dao/conexao/Conexao.php'; $conexao = Conexao::getInstance(); /***********************************************/ #Aqui começa a parte a paginação e pesquisa /**********************************************/ #Limitando o número máximo de resultados que serão mostrados na tela $maximo = 1; #Armazenando o valor da página atual $pagina = isset($_GET["pagina"])? ($_GET["pagina"]): '1'; #Subtraindo 1, porque os registro começam do zero como em um array $inicio = $pagina - 1; #Multiplicamos a quantidade de registros da pagina pelo valor da pagina atual $inicio = $maximo * $inicio; #Agora chega a parte em que fazemos o SELECT para contar os resultados $sql = "SELECT * FROM centroautomotivo"; $stmt = $conexao->prepare($sql); $stmt->execute(); $contagem = $stmt->fetchAll(PDO::FETCH_ASSOC); $total = 0; if(count($contagem)){ foreach ($contagem as $linhas) { #Armazenando o total de registros da tabela para fazer a paginação $total = count($contagem); } } /******************************************************************* * Aqui vai começar a parte da pesquisa, tornando o script em um só ********************************************************************/ #Recebe o termo da pesquisa se existir $termo = (isset($_GET["termo"])) ? ($_GET["termo"]) : ''; #Executa uma pesquisa com o termo pesquisado como parametro - Este SELECT irá servir também para a paginação if(empty($termo)){ //Nada aqui } else{ $sql = "SELECT * FROM centroautomotivo WHERE nomefantasia LIKE :nomefantasia or email LIKE :email ORDER BY idCentro LIMIT $inicio,$maximo"; $stm = $conexao->prepare($sql); $stm->bindValue(':nomefantasia', '%'.$termo.'%'); $stm->bindValue(':email', '%'.$termo.'%'); $stm->execute(); $autocenters = $stm->fetchAll(PDO::FETCH_ASSOC); } <?php require_once '../includes/header.php'; require_once '../controller/paginacaoPesquisaCentro.php'; ?> <div class="container mb-5"> <h1 class="text text-center">Centros Automotivos</h1> <p class="text text-center">Encontre o centro automotivo que mais se encaixa com você</p> <!--Formulário de pesquisa com paginação--> <form method="GET" action=""> <div class="d-flex flex-column bd-highlight mb-3"> <div class="p-2 bd-highlight"><img src="../img/Logotipo.png" class=" img-fluid rounded mx-auto d-block"></div> <div class="p-2 bd-highlight d-flex justify-content-center" style="margin-top: -10px;"><input type="text" name="termo" class="form-control" style=" width: 60%;" placeholder="Pesquise pelo Centro Automotivo!"/></div> <div class="p-2 bd-highlight d-flex justify-content-center"><button type="submit" class="btn btn-outline-primary"><i class="fas fa-search"></i>&nbsp;Pesquisar</button></div> </div> </form> <!--Fim do formuláio de pesquisa--> <!--Início dos resultados da pesquisa--> <?php if(!empty($autocenters)){?> <?php foreach ($autocenters as $autocenter) { ?> <center> <div class="card mb-3" style="max-width: 540px;"> <div class="row no-gutters"> <div class="col-md-4"> <img src="../controller<?php empty($autocenter["foto"])? 'images/pic.png' : $autocenter["foto"] ?>" class="card-img img-fluid" width="150px" height="150px"> </div> <div class="col-md-8"> <div class="card-body"> <p class="card-text text-justify"><?php $autocenter["nomefantasia"]?></p> <p class="card-text text-justify"><small class="text-muted"><?=$autocenter["email"]?></small></p> </div> </div> </div> </div> </center> <?php }//Fechamento do foreach?> <div id="alignpaginacao"> <?php //determina de quantos em quantos links serão adicionados e removidos $max_links = 6; //dados para os botões $previous = $pagina - 1; $next = $pagina + 1; //usa uma funcção "ceil" para arrendondar o numero pra cima, ex 1,01 será 2 $pgs = ceil($total / $maximo); //se a tabela não for vazia, adiciona os botões if($pgs > 1 ){ echo "<br/>"; //botao anterior if($previous > 0){ echo "<div id='botaoanterior'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' /></a></div>"; } else{ echo "<div id='botaoanteriorDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' disabled='disabled'/></a></div>"; } echo "<div id='numpaginacao'>"; for($i=$pagina-$max_links; $i <= $pgs-1; $i++) { if ($i <= 0){ //enquanto for negativo, não faz nada }else{ //senão adiciona os links para outra pagina if($i != $pagina){ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a> ..."; }else{ echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a>"; } } else{ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<span class='current'> ".$i."</span> ..."; }else{ echo "<span class='current'> ".$i."</span>"; } } } } echo "</div>"; //botao proximo if($next <= $pgs){ echo " <div id='botaoprox'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button'/></a></div>"; }else{ echo " <div id='botaoproxDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button' disabled='disabled'/></a></div>"; } } ?> </div> <?php }//Fechamento do if?> <!--Fim dos resultados da pesquisa--> <!--Início da paginação--> <!--Fim da paginação--> </div> <?php require_once '../includes/footer.php'; ?>  
      Bem aí está meu código, fico muito agradecido se puderem me ajudar.
    • By Mucio Willamys
      olá, gostaria da ajuda de vcs :
      este código traz as informações do banco de dados e as coloca dentro de um select html
      é parte de um projeto de um sistema de uma clínica médica, onde ao cadastrar os médicos posso escolher a especialidade do mesmo.
      <select name="especialidade" required="">                 <option value="" >--Escolha uma especialidade--</option>          <?php              $result_especialidade = "select * from especialidade";              $result_especialidade = mysqli_query($bd, $result_especialidade);              while ($row_especialidade = mysqli_fetch_assoc($result_especialidade)){ ?>                    <option value="<?php echo $row_especialidade['id']; ?>"><?php echo  $row_especialidade['nome']; ?> </option> public function editar($id){ include "Bd.class.php"; $nome = $this->nome; $cpf = $this->cpf; $crm = $this->crm; $especialidade = $this->especialidade; $query = "update medico set nome = '$nome', cpf = '$cpf', crm = '$crm', especialidade_id = '$especialidade' where id = $id"; $status = $bd->query($query); return $status; } Acima ^ está a função editar...
       
       
       
      abaixo está o form com as informações do médico.
      <form method="POST" action="../controller/Controller-medico.php?op=e"> <input type="hidden" name="id" size="5" value="<?php echo $id; ?>" > <div class="campo"> <label for="nome">Nome: </label> <input type="nome" name="nome" size="30" value="<?php echo $m->getNome() ?>"> </div> <div class="campo"> <label for="cpf">CPF: </label> <input type="text" name="cpf" size="30" value="<?php echo $m->getCpf() ?>"> </div> <div class="campo"> <label for="rg">CRM: </label> <input type="text" name="crm" size="30" value="<?php echo $m->getCrm() ?>"> </div> <div class="campo"> <label for="especialidade"> Especialidade: </label> </div> <div class="campo"> <input type="submit" value="Atualizar"> </div> </form> Gostaria de saber como faço pra setar um input ou um select no caso para a alteração do dado(especialidade)?
    • By Marcosvn
      Estou trabalhando num projeto que será semelhante a um fórum de discussão. No entanto, além de criar o tópico, o usuário deverá responder a um questionário com 40 perguntas. Essas perguntas serão armazenadas e exibidas posteriormente em forma de gráficos com o resultado estatístico de todos os usuários que responderam o questionário.
       
      Minha pergunta é: mysql seria uma boa escolha para esse projeto?
       
      Com o tempo, conforme a quantidade de respostas aumenta, não ficaria muito lento o calculo e exibição dos gráficos?
       
      Qual o melhor caminho a seguir para eu não ter problemas de velocidade no futuro?
       
      abraço
       
       
    • By Jefferson andre
      Saudações mestres,
       
      Preciso de ajuda em um pequeno programa que faz a contagem de acessos ao site, ele abre o banco de dados corretamente e a partir dai ja da problemas retornando a mensagem:
      Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, object given in C:\xampp\htdocs\xcompbrasil\contador.php on line 10
      Warning: mysqli_query() expects parameter 1 to be mysqli, object given in C:\xampp\htdocs\xcompbrasil\contador.php on line 24
       
      A tabela contador possui o campo codigo INT 11 sem auto inclemento e sem indice, o conteudo foi colocado manual sendo o numero 213
       
      segue  o programa de conexao.php
      <?php ini_set('error_reporting', E_ALL); ini_set('log_errors' , TRUE); ini_set('html_errors' , TRUE); ini_set('display_errors' , TRUE); // production: FALSE, development: TRUE $host_local = "localhost"; $db_local = "baseprincipal"; $user_local = "root"; $pass_local = ""; $arquivo = new PDO("mysql:host=$host;dbname=$db", $user, $pass); try { } catch (PDOException $e) { echo "Error : " . $e->getMessage() . "<br/>"; die(); } ?> Segue o programa contador.php
      <?php // fazendo uma conexão com o banco de dados include_once 'conexao.php'; $arquivo->beginTransaction(); $consulta = $arquivo->query("SELECT * FROM contador"); $linha=mysqli_fetch_array($consulta); // igualar a array a uma variavel $cod = $linha["codigo"]+1; echo $cod; $arquivo->commit(); // lista a variavel echo "<font face='Arial'><span class='style1'>$cod</span></font>"; $sql = "UPDATE contador SET codigo=$cod"; if (mysqli_query($arquivo, $sql)) { // echo "Alteração efetuada com sucesso"; } else { // echo "Erro alterando o contador de visitas: " . mysqli_error($arquivo); } // fecha a conexao $arquivo = null; ?> Agradeço a atenção
    • By Filipe556
      alguém tem ideia de algum método de bloquear usuário por ip
×

Important Information

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