Crik 0 Denunciar post Postado Novembro 29, 2010 Boa tarde, Tenho um formulário que gera campos do tipo "text", e esses, por sua vez, devem ir para o Banco de dados... mas como? Já fiz mil e uma peripécias e não consigo de jeito nenhum. Abaixo, segue o script que gera os campos (formulário), e depois o arquivo do POST. <script> var num = 1;//inicializo a variavel com a quantidade de itens na tela function AdicionaLinha() { num++;//ao clicar no botão um item novo é adicionado, logo a variavel deve ser adicionada $("#tabelaItem").append( $(document.createElement("tr")).append( $(document.createElement("td")).attr({ "width": "40", "height": "34", "class": "subHeader" }).append( $(document.createElement("div")).attr("align","center").append("Item:") ), $(document.createElement("td")).attr({ "width": "159", "class": "subHeader" }).append( $(document.createElement("select")).attr({ "id": "item", "name": "item"+num//incluido o número da variavel para ter name diferentes }).append( $(document.createElement("option")).attr("value","alimentacao").append("Alimentação"), $(document.createElement("option")).attr("value","combustivel").append("Combustível"), $(document.createElement("option")).attr("value","materiald").append("Material Degustativo"), $(document.createElement("option")).attr("value","materiale").append("Material de Escritório"), $(document.createElement("option")).attr("value","pedagio").append("Pedágio"), $(document.createElement("option")).attr("value","copia").append("Cópia"), $(document.createElement("option")).attr("value","outros").append("Outros") ) ), $(document.createElement("td")).attr({ "width": "75", "class": "subHeader" }).append( $(document.createElement("div")).attr("align","center").append("Data:") ), $(document.createElement("td")).attr({ "width": "72", "class": "subHeader" }).append( $(document.createElement("input")).attr({ "size": "12", "name": "dataItem" + num,//em todo lugar que se cria name colocar o num para ter names diferentes "id": "data2" }) ), $(document.createElement("td")).attr({ "width": "61", "class": "subHeader" }).append( $(document.createElement("div")).attr("align","center").append("Valor:") ), $(document.createElement("td")).attr({ "width": "72", "class": "subHeader" }).append( $(document.createElement("input")).attr({ "size": "12", "name": "valor" + num,//idem "id": "valor" }) ), $(document.createElement("td")).attr({ "width": "63", "class": "subHeader" }).append( $(document.createElement("div")).attr("align","center").append("NF:") ), $(document.createElement("td")).attr({ "width": "72", "class": "subHeader" }).append( $(document.createElement("input")).attr({ "size": "12", "name": "nf" + num,//idem "id": "nf" }) ) ) ); } $("#inv").val(num);//incluo a quantidade de itens para o envio de post, o input hidden tem que ter um name unico para você recuperar no POST </script> <?php if ($valida){ $data = getdate(); $dataini = '$data[mday]'.'-'.'$data[mon]'.'-'.'$data[year]';/**/ $representante = $_POST['$nome'];/**/ $cidade = $_POST['cidade'];/**/ $estado = $_POST['estado'];/**/ $campanha = $_POST['campanha'];/**/ $periodo = datasql( $_POST['periodo']); $periodo2 = datasql( $_POST['periodo2']);/**/ $n = $_POST['inv'];/**/ for($i=1 ; $i<=$n ; $i++){ $item = $_POST['item'+$i];/**/ $data2 = datasql( $_POST['dataItem'+$i]);/**/ $valor = ponto( $_POST['valor'+$i]);/**/ $nf = $_POST['nf'+$i];/**/ $sql2 = "INSERT INTO itens(item,data2,valor,nf)VALUES('$item','$data2','$valor','$nf')"; $insere2 = @mysql_query($sql2); if ($n>20){ echo "Limite de 20 itens ultrapassado."; echo "<a href='menu_rev.php'>Voltar</a>"; } } $sql1 = "INSERT INTO historico(data,representante,cidade,estado,campanha,periodo,periodo2)VALUES(NOW(),'$nome','$cidade','$estado','$campanha','$periodo','$periodo2')"; $insere = @mysql_query($sql1); if ($insere && $insere2){ echo "Produto cadastrado com sucesso! Redirecionando...<META HTTP-EQUIV='Refresh' CONTENT='1 ; URL=menu_rev.php'>"; } else{ echo mysql_error (); } } @mysql_close($conexao); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Olá.. Os dados pelo menos passam para o outro lado? executa um: var_dump($_POST); die; E me fala o que apareceu! Outra coisa!! nas inserções "@mysql_query" Retira o "@" para aparecerem os erros! Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 apareceu isso: array(11) { ["periodo"]=> string(10) "01/01/2010" ["periodo2"]=> string(10) "24/11/2010" ["campanha"]=> string(11) "linha anual" ["estado"]=> string(4) "Acre" ["cidade"]=> string(2) "oi" ["item1"]=> string(22) "Material de Escritório" ["dataItem1"]=> string(10) "29/02/2010" ["valor1"]=> string(6) "132,05" ["nf1"]=> string(5) "21321" ["inv"]=> string(2) "20" ["enviar"]=> string(6) "Enviar" } Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Legal os dados estão indo de forma correta. o problema agora provavelmente é no seu SQL. retirou os "@" e executou? apareceu algum erro? Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 retirei, não aconteceu nada!!! Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Coloca esse código no lugar do seu e me fala o que aparece.. <?php if ($valida){ $data = getdate(); $dataini = $data['mday'].'-'.$data['mon'].'-'.$data['year'];/**/ $representante = $_POST['nome'];/**/ $cidade = $_POST['cidade'];/**/ $estado = $_POST['estado'];/**/ $campanha = $_POST['campanha'];/**/ $periodo = datasql( $_POST['periodo']); $periodo2 = datasql( $_POST['periodo2']);/**/ $n = $_POST['inv'];/**/ for($i=1 ; $i<=$n ; $i++){ $item = $_POST['item'+$i];/**/ $data2 = datasql( $_POST['dataItem'+$i]);/**/ $valor = ponto( $_POST['valor'+$i]);/**/ $nf = $_POST['nf'+$i];/**/ $sql2 = "INSERT INTO itens(item,data2,valor,nf)VALUES('$item','$data2','$valor','$nf')"; echo $sql2; die; $insere2 = @mysql_query($sql2); if ($n>20){ echo "Limite de 20 itens ultrapassado."; echo "<a href='menu_rev.php'>Voltar</a>"; } } $sql1 = "INSERT INTO historico(data,representante,cidade,estado,campanha,periodo,periodo2)VALUES(NOW(),'$nome','$cidade','$estado','$campanha','$periodo','$periodo2')"; $insere = @mysql_query($sql1); if ($insere && $insere2){ echo "Produto cadastrado com sucesso! Redirecionando...<META HTTP-EQUIV='Refresh' CONTENT='1 ; URL=menu_rev.php'>"; } else{ echo mysql_error (); } } @mysql_close($conexao); ?> Estava vendo estava parte do seu código... <?php if ($valida){ $data = getdate(); $dataini = $data['mday'].'-'.$data['mon'].'-'.$data['year'];/**/ $representante = $_POST['nome'];/**/ $cidade = $_POST['cidade'];/**/ $estado = $_POST['estado'];/**/ $campanha = $_POST['campanha'];/**/ $periodo = datasql( $_POST['periodo']); $periodo2 = datasql( $_POST['periodo2']);/**/ $n = $_POST['inv'];/**/ for($i=1 ; $i<=$n ; $i++){ $item = $_POST['item'+$i];/**/ $data2 = datasql( $_POST['dataItem'+$i]);/**/ $valor = ponto( $_POST['valor'+$i]);/**/ $nf = $_POST['nf'+$i];/**/ $sql2 = "INSERT INTO itens(item,data2,valor,nf)VALUES('$item','$data2','$valor','$nf')"; $insere2 = @mysql_query($sql2); if ($n>20){ echo "Limite de 20 itens ultrapassado."; echo "<a href='menu_rev.php'>Voltar</a>"; } } $sql1 = "INSERT INTO historico(data,representante,cidade,estado,campanha,periodo,periodo2)VALUES(NOW(),'$nome','$cidade','$estado','$campanha','$periodo','$periodo2')"; $insere = @mysql_query($sql1); if ($insere && $insere2){ echo "Produto cadastrado com sucesso! Redirecionando...<META HTTP-EQUIV='Refresh' CONTENT='1 ; URL=menu_rev.php'>"; } else{ echo mysql_error (); } } @mysql_close($conexao); ?> Ele vai rodar esta parte sempre 20x e os dados estão indo vazios.. se tiver algum campo NOT NULL vai dar problema.. valida melhor essa parte. Qualquer coisa cola os 2 arquivos inteiros que fica melhor.. Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 agora apareceu: INSERT INTO itens(item,data2,valor,nf)VALUES('','','','') Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Verifica se no banco existem registros salvos.. E se os campos estão vazios..! Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 Então, aí que tá: tenho 2 tabelas alimentadas: a tabela antes do for recebe os dados perfeitamente, já a tabela que está dentro do for não recebe absolutamente nada! Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Seguinte a tabela "historico" tem algum registro? Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 Sim, a tabela histórico recebe todos os itens corretamente Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Coloca esse código para testar! <?php if ($valida) { $data = getdate(); $dataini = $data['mday'] . '-' . $data['mon'] . '-' . $data['year']; /**/ $representante = $_POST['nome']; /**/ $cidade = $_POST['cidade']; /**/ $estado = $_POST['estado']; /**/ $campanha = $_POST['campanha']; /**/ $periodo = datasql($_POST['periodo']); $periodo2 = datasql($_POST['periodo2']); /**/ $n = $_POST['inv']; /**/ for ($i = 1; $i <= $n; $i++) { $item = $_POST['item' + $i]; /**/ $data2 = datasql($_POST['dataItem' + $i]); /**/ $valor = ponto($_POST['valor' + $i]); /**/ $nf = $_POST['nf' + $i]; /**/ echo $item . ' - ' . $_POST['item1'] . '<br />'; echo $data2 . ' - ' . $_POST['dataItem1'] . '<br />'; echo $valor . ' - ' . $_POST['valor1'] . '<br />'; echo $nf . ' - ' . $_POST['nf1'] . '<br />'; die; $sql2 = "INSERT INTO itens(item,data2,valor,nf)VALUES('$item','$data2','$valor','$nf')"; $insere2 = @mysql_query($sql2); if ($n > 20) { echo "Limite de 20 itens ultrapassado."; echo "<a href='menu_rev.php'>Voltar</a>"; } } $sql1 = "INSERT INTO historico(data,representante,cidade,estado,campanha,periodo,periodo2)VALUES(NOW(),'$nome','$cidade','$estado','$campanha','$periodo','$periodo2')"; $insere = @mysql_query($sql1); if ($insere && $insere2) { echo "Produto cadastrado com sucesso! Redirecionando...<META HTTP-EQUIV='Refresh' CONTENT='1 ; URL=menu_rev.php'>"; } else { echo mysql_error (); } } @mysql_close($conexao); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 Opaaaa sinal de vida! os dados que coloquei no formulário apareceram na tela seguinte! Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Ahn coloca ai como eles aparecem para eu ver! Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 - Combustível - 11/11/2010 - 147,58 - 4524 Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Cara.. faz um teste ai Altera essa parte do seu código.. $item = $_POST["item{$i}"]; /**/ $data2 = datasql($_POST["dataItem{$i}"]); /**/ $valor = ponto($_POST["valor{$i}"]); /**/ $nf = $_POST["nf{$i}"]; /**/ Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 Nossa, agora me perdi de vez! Onde está isso? Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Nessa parte!!! for ($i = 1; $i <= $n; $i++) { $item = $_POST['item' + $i]; /**/ $data2 = datasql($_POST['dataItem' + $i]); /**/ $valor = ponto($_POST['valor' + $i]); /**/ $nf = $_POST['nf' + $i]; /**/ echo $item . ' - ' . $_POST['item1'] . '<br />'; echo $data2 . ' - ' . $_POST['dataItem1'] . '<br />'; echo $valor . ' - ' . $_POST['valor1'] . '<br />'; echo $nf . ' - ' . $_POST['nf1'] . '<br />'; die; $sql2 = "INSERT INTO itens(item,data2,valor,nf)VALUES('$item','$data2','$valor','$nf')"; $insere2 = @mysql_query($sql2); if ($n > 20) { echo "Limite de 20 itens ultrapassado."; echo "<a href='menu_rev.php'>Voltar</a>"; } } Compartilhar este post Link para o post Compartilhar em outros sites
Crik 0 Denunciar post Postado Novembro 29, 2010 está dando erro!!! Parse error: syntax error, unexpected '[' in /var/www/extranet/lista_dados.php on line 44 estou procurando o que falta... Linha 44: [color=1C2837][font=arial, verdana, tahoma, sans-serif][size=2][color=000088]for[/color][color=000000] [/color][color=666600]([/color][color=000000]$i [/color][color=666600]=[/color][color=000000] [/color][color=006666]1[/color][color=666600];[/color][color=000000] $i [/color][color=666600]<=[/color][color=000000] $n[/color][color=666600];[/color][color=000000] $i[/color][color=666600]++)[/color][color=000000] [/color][color=666600]{[/color][color=000000] Compartilhar este post Link para o post Compartilhar em outros sites
Miyahira 0 Denunciar post Postado Novembro 29, 2010 Ixii seu código fico bixado.. Compartilhar este post Link para o post Compartilhar em outros sites