Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marinho

Gravar campos dinâmicos no banco de dados

Recommended Posts

Olá bom dia a todos!

 

Estou com um problema em gravar campos dinâmicos no banco de dados, quando envio o form com campos duplicados

é gravado somente o primeiro campo os restantes não passam seus valores ou não são reconhecidos.

 

Obs: Notei que quando os campos são fixos a gravação no bd é realizada. então o problema deve ser quando eu adiciono mais campos veja abaixo o código:

 

Script:

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">

$(document).ready(function(){

$("#btnAddopcao").click(function(){

var novaopcao = $("#opcao").clone();

$(".opcaoContent").append(novaopcao.show());

});

});

</script>

 

 

Formulário:

<form accept-charset="UTF-8" action="salvar.php" id="formsalvar" method="post">

<a href="javascript:void(0);" id="btnAddopcao">[+] Adicionar</a>

<div id="opcao" style="display: none;">

Opção: <input type="text" name="opcao[]"/> <a href="javascript:void(0);" onclick="$(this).closest('#opcao').remove();">[-] Remover</a>

</div>

<div class="opcaoContent"></div>

 

<input type="submit" name="button" id="button" value="Salvar Variação" />

 

</form>

 

 

salvar.php:

 

$opcoes = $_POST['opcao'][$i];

$quant_opcoes = count($opcoes);

for ($i=0; $i<$quant_opcoes; $i++) {

echo $opcoes[$i]."<br />";

}

 

 

 

 

Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo.

 

$opcoes = $_POST['opcao'][$i];

 

O que você quer passar nessa variável $i ?

 

Faça somente isso:

 

$opcoes = $_POST['opcao'];

 

O seu erro está sendo no PHP, não no Javascript, porque provavelmente a variável $i está recebendo um valor NULL e está retornando somente o primeiro item do index do array $_POST.

 

Corrige essa linha e pronto.

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim agora:

 

for( $i = 0 , $x = count( $_POST[ 'opcao' ] ) ; $i < $x ; ++ $i ) {

$sql = mysql_query("Insert into opcoes ( id_va, nome_op ) values ( '$id_va', '".$_POST['opcao']."' )");

 

echo("Campos:".$_POST['opcao']);

}

 

Mais no banco é inserido isso: "array"

 

 

Quando coloco vários campos fixos funciona

<input type="text" name="opcao[]"/>

<input type="text" name="opcao[]"/>

<input type="text" name="opcao[]"/>

 

Quando coloco campos dinâmicos que os dados do segundo campo em diante não são enviados e armazenados no banco.

 

<input type="text" name="opcao[]"/> <a href="javascript:void(0);" onclick="$(this).closest('#opcao').remove();">[-] Remover Telefone</a>

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. AGORA sim você tem que usar o $i.

 

 

for( $i = 0 , $x = count( $_POST[ 'opcao' ] ) ; $i < $x ; ++ $i ) {
$sql = mysql_query("Insert into opcoes ( id_va, nome_op ) values ( '$id_va', '".$_POST['opcao'][$i]."' )");

echo("Campos:".$_POST['opcao']);
}

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funciona veja:

 

for( $i = 0 , $x = count( $_POST[ 'opcao' ][$i] ) ; $i < $x ; ++ $i ) {

echo("Campos:".$_POST['opcao'][$i]);

}

 

O problema é no javascript mesmo

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funciona veja:

 

for( $i = 0 , $x = count( $_POST[ 'opcao' ][$i] ) ; $i < $x ; ++ $i ) {

echo("Campos:".$_POST['opcao'][$i]);

}

 

O problema é no javascript mesmo

 

Obrigado!

 

Amiguinho.

 

Não precisa de colocar $i nessa linha !

 

for( $i = 0 , $x = count( $_POST[ 'opcao' ] ) ; $i < $x ; $i++ ) {
echo("Campos:".$_POST['opcao'][$i]);
}

 

Agora sim vai, copia esse trecho e substitua pelo seu !

 

Porque não precisa você percorrer o array quando está dando count ( A não ser que você tenha um Array bidimensional, o que não é o caso ) :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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