Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 </label>";
$cifraCompleta .= $cifra;
$cifraCompleta .= "<label class='font-weight-bold'> $quantidade </label>";
$cifraCompleta .= $cifra2;
$i++;
}
Alguém me da uma luz onde está o erro no código?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 =)O que não quer calar é, você sabe o porque o código caiu no famoso abismo infinito?
Tente o seguinte:
$i = 1;
do {