Jump to content
Julio Cavallari

Recebendo dados de inputs "infinitos"

Recommended Posts

Galera, estou fazendo um sistema de cadastro de cifra para minha igreja, já que o cifraclub tem muitas cifras completamente erradas, e preciso passar os dados para um banco de dados.

Mas estou com o seguinte problema, preciso passar múltiplas linhas para esse banco nua mesma coluna de uma tabela.

Até tentei fazer com somente 1 caixa de texto, e digitar tudo que preciso nela e mandar, mas como tenho que estilizar a cifra antes de apresentar no sistema, para facilitar eu estou adicionando o código html todo nessa coluna, e fica muito trabalhoso escrever todo código num textfield.

 

Tentei fazer da seguinte forma mas não obtive sucesso:

Uso uma função que adiciona uma linha numa tabela pra eu escrever uma linha da cifra, e fica mudando o atributo "name" do input, sempre adicionando um número na frente, que fica se auto incrementando.

function AddTableRow() {
  IncreaseCont();
  var newRow = $("<tr>");
  var cols = "";

  cols += '<td><input type="text" name="titulo'+i+'" class="form-control"></td>';
  cols += '<td><input type="text" name="cifra'+i+'" class="form-control"></td>';
  cols += '<td><input type="text" name="qtde'+i+'" class="form-control"></td>';
  cols += '<td><input type="text" name="cifraAdicional'+i+'" class="form-control"></td>';
  cols += '<td>';
  cols += "<button onclick='RemoveTableRow(this)' class='btn btn-danger' type='button'>Remover</button>";
  cols += '</td>';

  newRow.append(cols);
  $("#tableCifras").append(newRow);

  return false;
}

Essa parte ok. O problema está em pegar os dados desses inputs criados no PHP.

Tentei dessa maneira.

$i auto incremento;

$input... = 'atributo name'.$i // Para pegar o name do input a ser testado

 

Ai testo num while se essas variáveis estão setadas, mas aqui que tá o problema, o código entra num loop até dar tempo de execução máxima excedido.

$i = 1;
$inputTitulo = 'titulo'.$i;
$inputCifra = 'cifra'.$i;
$inputCifra2 = 'cifraAdicional'.$i;
$inputQtde = 'qtde'.$i;

while(isset($_GET[$inputTitulo]) && isset($_GET[$inputCifra]) && isset($_GET[$inputQtde]) && isset($_GET[$inputCifra2])){

  $titulo = $_GET[$inputTitulo];
  $cifra = $_GET[$inputCifra];
  $cifra2 = $_GET[$inputCifra2];
  $quantidade = $_GET[$inputQtde];
  $cifraCompleta .= "<label class='font-weight-bold'>$titulo&nbsp;</label>";
  $cifraCompleta .= $cifra;
  $cifraCompleta .= "<label class='font-weight-bold'>&nbsp;$quantidade&nbsp;</label>";
  $cifraCompleta .= $cifra2;
  $i++;
}

Alguém me da uma luz onde está o erro no código?

Share this post


Link to post
Share on other sites

Tente o seguinte:

$i = 1;
do {
  $inputTitulo = 'titulo'.$i;
  $inputCifra = 'cifra'.$i;
  $inputCifra2 = 'cifraAdicional'.$i;
  $inputQtde = 'qtde'.$i;

  if(isset($_GET[$inputTitulo]) && isset($_GET[$inputCifra]) && isset($_GET[$inputQtde]) && isset($_GET[$inputCifra2])){
    $titulo = $_GET[$inputTitulo];
    $cifra = $_GET[$inputCifra];
    $cifra2 = $_GET[$inputCifra2];
    $quantidade = $_GET[$inputQtde];
    $cifraCompleta .= "<label class='font-weight-bold'>$titulo&nbsp;</label>";
    $cifraCompleta .= $cifra;
    $cifraCompleta .= "<label class='font-weight-bold'>&nbsp;$quantidade&nbsp;</label>";
    $cifraCompleta .= $cifra2;
  }else{
	break;
  }
  $i++;
} while(true);

 

Share this post


Link to post
Share on other sites

Muito obrigado pela resposta, mas já tinha resolvido de outra maneira logo depois.

 

Pesquisando na internet descobri que posso usar uma array no atributo 'name' para inserir várias informações de um mesmo tipo. Então foi isso que fiz.

<input type="text" name="titulo[]" class="form-control">
<input type="text" name="cifra[]" class="form-control">
<input type="text" name="qtde[]" class="form-control">

Ai eu pego todos os dados desse array e utilizo um for para gerar a parte dinâmina

if(isset($_POST['cifra']) 
&& isset($_POST['titulo']) 
&& isset($_POST['qtde'])){
  $rows = count($_POST['cifra']);
  $cifra = $_POST['cifra'];
  $titulo = $_POST['titulo'];
  $qtde = $_POST['qtde'];

  for ($i=0; $i < $rows ; $i++) {
    $cifraFor = replaceNotas($cifra[$i]);
    $cifraAdicionalFor = replaceNotas($cifraAdicional[$i]);

    $cifraCompleta .= '<li class="list-group-item">'; 
    $cifraCompleta .= '<label class="font-weight-bold">'.$titulo[$i].' </label>';
    $cifraCompleta .= $cifraFor;
    $cifraCompleta .= '<label class="font-weight-bold"> '.$qtde[$i].' </label>';
    $cifraCompleta .= $cifraAdicionalFor;
    $cifraCompleta .= '</li>';
  }
}

Mas mesmo assim obrigado pela ajuda, testei esse seu código e funciona do mesmo jeito que solução que achei =)

Share this post


Link to post
Share on other sites

O que não quer calar é, você sabe o porque o código caiu no famoso abismo infinito?

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 Felipe Haberl
      Prezados, bom dia!
       
      Sou iniciante em desenvolvimento utilizando o PHP e estou precisando da ajuda de vocês para criar um gerador de senhas, vou deixar abaixo os critérios de funcionamento:
       
      Palavra:       senhadodia
      Sequencia: 0123456789
      Data do dia: 26012022
       
      A senha seria: NOSENSNN
       
      Desde já agradeço a atenção de todos (a).
    • By arthursanno
      Usando PHP e MySQL, estou tentando elaborar um código de inserção Multi Nível Binário (máximo 2 filhos pra cada pai). A inserção é sem escolher o pai de forma manual. O código tem que localizar o primeiro registro que não possui 2 filhos e inserir o novo registro ali. O desenho final, será uma pirâmide multi nível de 2 em 2.
      Sou iniciante em PHP/MySQL e isso é parte de um estudo (curso), então necessito de apoio para:
      Saber por onde começar a montar essa lógica; Um exemplo de SQL para buscar e inserir nesse formato que descrevi. Obrigado.
    • By violin101
      Caros amigos, saudações...
       
      Estou com uma pequena dúvida para apresentar ao usuário uma Mensagem de ERRO após consulta de CEP.
       
      Quando o usuário digita um CEP válido o sistema demonstra em uma TABELA os valores respectivos de FRETE de acordo com os CEP.
      -----[ até aqui tudo bem ]-----
       
      Meu problema é quando o usuário digita um CEP não válido. Nesta parte gostaria de Limpar a Tabela e mostrar uma TBODY de mensagem.
       
      <div class="col-md-12" id="divCity" style="display:none; margin-top:5px; margin-left:-23px;"> <div class="col-md-12"> <div class="input-group"> <label for="cidadeUf" class="lblCitys">Cidade:</label> <input type="text" name="cidadeUf" id="cidadeUf" class="form-control" style="margin-top:-17px; background:#ffffff; border: 0 solid #ffffff;" disabled /> </div> </div> <br/> <div class="col-md-12" style="margin-top:-10px; margin-left:10px;"> <div class="table-responsive"> <table class="table tableList" id="tborden"> <thead> <tr> <th colspan="3" style="text-align:left;">Prazo de Entrega para:</th> </tr> </thead> <tbody> <tr class="message"> <td colspan="3" class="text-center">O CEP informado não foi encontrado.</td> </tr> </tbody> </table> </div> </div> <div class="col-md-12" style="margin-top:-10px; margin-left:10px;"> <span class="infprz"> <i class='fa fa-caret-right'></i>&nbsp; Os prazos de Entrega e para Retirar na Loja, iniciam-se no 1º dia útil após a data da confirmação do pagamento. </span> </div> </div>  
       
      O JavaScript está assim:
       
      //Função para Buscar Cidade e Estado Via CEPs. $(function(){ $("#btn_consulta").click(function(){ var cep = $('#cepOrg').val(); if (cep == '') { alert('Informe o CEP antes de continuar'); document.getElementById("divCity").style.display = "none"; $('#cepOrg').focus(); return false; } //Muda o Status do Button $('#btn_consulta').html('Aguarde...'); $.ajax({ url: "<?php echo base_url();?>site/produtos/consulta", type: "POST", dataType:"json", data:{cep: cep}, success:function(data){ if (data.hasOwnProperty('erro')) { /* * Caso o usuário digita um CEP não válido o sistema apresenta um ALERT. * nessa parte gostaria de mostrar a LINHA criada na Tabela anteriormente */ alert('CEP não encontrado'); document.getElementById("divCity").style.display = "none"; $('#cepOrg').val(''); $('#cidadeUf').val(''); $('#cepOrg').focus(); $('#btn_consulta').html('Consultar'); return false; } else { //Exibe os Dados Recebidos $('#cidadeUf').val(data.localidade+'/'+data.uf); //Chama a Função para Exibir a DIV oculta statusDIV(); //Chama a Função Monta Tabela, passando a Variável de Busca montaTable(cep); //Muda o Status do Button $('#btn_consulta').html('Consultar'); } } });//Fim - ajax CEP });//Fim - function button });//Fim - 1º.function function montaTable(cep){ $.ajax({ url: "<?php echo base_url();?>site/produtos/getByCep", type: "POST", dataType:"json", data:{ cep: cep}, success:function(data){ //Remove Mensagem da Tabela $("#tborden tbody tr.message").remove(); var lin = ""; for (var i = 0; i < data.length; i++) { lin += "<tr>"; lin += "<td width='30%' style='text-align:left; font-size:16px;'>" + data[i].cepRegiao + "</td>"; lin += "<td width='21%' style='text-align:left; font-size:16px;'>" + data[i].frtEntreg + "</td>"; if (data[i].vlrFrete != null && data[i].vlrFrete != 0) { lin += "<td width='20%' style='text-align:right; font-size:16px; font-weight:bold; color:#19198F;'>" + mskVlr(data[i].vlrFrete) + "</td>"; } else { lin += "<td width='20%' style='text-align:right; font-size:16px; font-weight:bold; color:#137A13;'>Frete Grátis</td>"; } lin += "</tr>"; } //Atualiza a Tabela $("#tborden tbody").empty(); //Adiciona os Itens a Tabela $("#tborden tbody").append(lin); } });//Fim - ajax Valor Frete }  
       
      Como consigo executar essa mensagem ?
       
      Grato,
       
      Cesar
    • By Caio Vargas
      Fala pessoal como estOu criando um ecommerce estou com uma dúvida de como criar um filtro de produtos igual a desse site aqui 
      https://www.charmefitness.com.br/produtos/moda-fitness ele já vem marcado a categoria que está e já pega todos os itens daquela categoria alguém tem algo assim ou já fez 
       
       
    • By mateus.andriollo
      Tenhos duas tabelas Cab e Itm, gostaria de listar s sequencia de cab e inserir em um array os itens pertencentes a elas, compo incomum idcab.
       
      Não consigo fazer, o array será para json
×

Important Information

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