Ir para conteúdo

POWERED BY:

Arquivado

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

Crik

[Resolvido] ID dinâmico, método POST e MySQL

Recommended Posts

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

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

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

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

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

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

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

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

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

×

Informação importante

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