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
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 Diego-SLP
      Bom dia,
       
      Estou fazendo uma tela de relatorios de registro de ponto e não estou conseguindo totalizar as horas conforme trago do banco de dados, se alguem puder me ajudar.
       
      SELECT p.cod_obra,f.nome,o.obra, TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(p.totalhora))),'%H:%i') AS hora, TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(p.totalhoraextra))),'%H:%i') AS horaextra, f.funcao FROM rh_pontoFuncionario p, rh_funcionario f, rh_obra o WHERE p.data BETWEEN '2020/10/01' AND '2020/11/20' AND p.cod_obra = '20056' AND p.cod_func = f.cod AND p.cod_obra = o.cod GROUP BY p.cod_obra, f.nome Essa query me traz COD_OBRA,NOME,OBRA,HORA,HORAEXTRA,FUNCAO e eu gostaria de TOTALIZAR o campo HORA e HORAEXTRA somando todas as linhas mas não consigo
    • By landerbadi
      Olá pessoal, boa noite
       
      Tenho uma tabela no banco de dados mysql com três colunas (id, audio, tocado) e um player de audio html5 simples.
       
      <audio controls>
        <source src="horse.ogg" type="audio/ogg">
        <source src="horse.mp3" type="audio/mpeg">
      </audio>
       
      Fiz uma consulta no bd para me retornar um (1) registro. Com base nessa consulta o player toca o audio correspondente.
      Preciso fazer com que após o término do audio seja gravado na coluna 'tocado' no bd a palavra 'OK'.
      Tem como fazer isso?
    • By Matheus B. Siqueira
      Olá, tento fazer uma requisição para atualização de item do accordion no mysql, porém apenas um item é atualizado.
      O código funciona da seguinte forma: É buscado perguntas referente ao vídeo selecionado no carousel, logo após, o código da Amostra de Código 1, cria os cards dentro do modal. Cada card é referente a uma pergunta diferente registrada no Banco de Dados.
      Porém, ao tentar atualizar um item do MYSQL, dentro do card, no textarea, o primeiro item (1º pergunta) desse accordion é atualizado, o segundo item (2º pergunta) não é atualizado.
      Cada pergunta possui um id no MYSQL, bem como, um assunto, uma resposta, uma pergunta... de acordo com a Figura 01.
      Vale ressaltar que, de acordo com a Amostra de Código 2, é buscado juntamente com o AJAX, todas as perguntas referente ao vídeo selecionado no carousel.
      Amostra de Código 1:
      $(document).ready(function() { $(function() { $('#responder_duvidas').click(function() { var codigoVideo2 = $('.carousel-item.active').attr('data-link_video'); var accordion2 = ""; $.post("buscar_duvida_monitor_resp.php", { codigo_video_monitor: codigoVideo2, }, function(data2, status) { if (data2 !== "Fail") { $("#dynamic_accordion #accordion").html(accordion2); // Adiciona essa linha $.each(JSON.parse(data2), function (index2, duvida3) { accordion2 += '<div class="card" style="margin: 5px">'; accordion2 += '<div class="card-header" id="heading'+index2+'">'; accordion2 += '<h5 class="mb-0">'; accordion2 += '<button class="btn btn-link" data-toggle="collapse" data-target="#collapse'+index2+'" aria-expanded="true" aria-controls="collapse'+index2+'">'; accordion2 += duvida3.assunto; accordion2 += '</button>'; accordion2 += '</h5>'; accordion2 += '</div>'; accordion2 += '<div id="collapse'+index2+'" class="collapse" aria-labelledby="heading'+index2+'" data-parent="#accordion">'; accordion2 += '<div class="card-body">'; accordion2 += '<div style="background: #ddd; color #fff; padding: 10px 20px; border-radius: 5px">'; accordion2 += duvida3.pergunta; accordion2 += '</div>'; accordion2 += '<hr>'; accordion2 += '<div style="background: #fff; color #fff; padding: 10px 20px; border-radius: 5px">'; accordion2 += '<form method="post" enctype="multipart/form-data">'; accordion2 += '<textarea class="form-control" name="resposta" id="resposta" required>'+duvida3.resposta+'</textarea>'; accordion2 += '<input type="hidden" id="id_duvidas" value="'+duvida3.idduvidas+'" />'; accordion2 += '<br><button type="button" id="enviar_resposta" class="btn btn-success btn-sm">Enviar resposta</button>'; accordion2 += '</form>'; accordion2 += '</div>'; accordion2 += '</div>'; accordion2 += '</div>'; accordion2 += '</div>'; $("#dynamic_accordion #accordion").html(accordion2); }); } }); }); $(document).on("click", "#enviar_resposta",function(){ $.ajax({ url: "atualizar_resposta.php", method: "POST", data: { resposta: $('#resposta').val(), idduvidas: $('#id_duvidas').val() }, success: function(res) { var data = JSON.parse(res); alert((data.success == true) ? "Pergunta atualizada" : "Pergunta não atualizada"); $('.modal-backdrop').remove(); return; } }); // fecha modal $("#modalDuvidas").modal("hide"); }); }); }); Figura 1:

       
       
      Amostra de Código 2:
      <?php if (isset($_POST['idduvidas']) && isset($_POST['resposta'])) { $id_resposta = $_POST['idduvidas']; $resposta = $_POST['resposta']; $servidor = 'localhost'; $usuario = 'root'; $senha = 'root'; $banco = 'onteach'; $conexao = mysqli_connect($servidor,$usuario,$senha,$banco); $consulta2 = "UPDATE duvidas SET duvidas.resposta = '$resposta' WHERE duvidas.idduvidas = '$id_resposta'"; die(json_encode(['success'=>(mysqli_query($conexao, $consulta2))])); } Figura 2 (FIGURA COMPLEMENTAR APRESENTANDO O ACCORDION NO WEBSITE)

       
      Por fim, este tópico auxilia em um tema que é específico, porém, pode ser utilizado para outros fins de programação, bem como, a utilização de definição de váriantes em accordion com maiores itens.
      Desde já, agradeço.
       
    • By gersonab
      tenho uma data no BD , gostaria de mostrar ela 15 dias antes, montando um alerta 15 dias antes desta data
      atualmente utilizo assim, porém me mostra 15 dias após.
      $data = DateTime::createFromFormat('d/m/Y', $datab); $data->add(new DateInterval('P15D')); tipo:
      se eu colocar a data 24/11/2020 , ela vai me mostrar 09/12/2020 , quando preciso q mostre 09/11/2020.
    • By Hydroper
      Estou criando abstrações que funcionam tanto no Browser Environment (via Webpack) quanto no Node.js para auxiliar no desenvolvimento de aplicativos. O TypeScript e JSDoc só não são usados por causa do Proxy e enums, e como consequência os pacotes tem suporte incompleto da IDE.
       
      Gostaria de ouvir a opinião de vocês. Faz sentido o que estou fazendo?
      com.recoyxgroup.localization Essa é uma alternativa mais legível à pacotes populares como i18next no NPM, com mais facilidades embutidas (embora seja simples ainda). com.recoyxgroup.datatransaction (transação de dados) O que esse pacote (ainda não implementado) basicamente faz é a declaração de estruturas de transações associadas à um banco de dados, suportando manipulação dos dados Lembrando que funciona tanto no Browser Environment (cliente) quanto no Node.js (servidor) O pacote do servidor deve suportar uma CLI para performar migrações automáticas no banco de dados (que nem a plataforma low-code GeneXus faz) Deve suportar transações de transações (nível) Deve suportar integridade referencial quando dados forem removidos da tabela física de uma transação Deve ter alguma maneira do cliente performar queries nas transações Eu fiz uma abstração do Knex esses meses, porém ela não é tão boa quanto os itens nessa lista. Além do mais, quero manter apenas Number e BigInt como os tipos numéricos. Repo Plataformas (software/game/site): ainda não pensei como seria um bootstrap.
×

Important Information

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