Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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"](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!
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!
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?
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!
>
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:
Amigo.
$opcoes = $_POST['opcao'][$i];
O que você quer passar nessa variável $i ?
Faça somente isso:
Corrige essa linha e pronto.
:thumbsup: