Ir para conteúdo

POWERED BY:

Arquivado

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

BAR WEB

[Resolvido] Erro no cadastro

Recommended Posts

arrumei isso, agora ele cadastrou no banco.

so que o cadastro ficou.

 

produto que se chama teste ele gravou so o t.

valor que e 180.00 ele gravou apenas 1.00

 

o que ficou de errado??

 

function moeda($get_valor) { 
               $source = array('.', ',');  
               $replace = array('', '.'); 
               $valor = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto 
               return $valor; //retorna o valor formatado para gravar no banco 
       }

$id_os = $_POST['id_os'];
echo $qtd = $_POST['qtd'];  
$desconto = moeda($_POST['desconto']);

$x = $_POST[ 'prod' ];

foreach($x as &$key){

       $prod = explode("_", $key);

       $produto = $prod[0];
       $valor = $prod[1];

} 

$posicoes = count($qtd);//pega a quantidade de itens
for( $i = 0; $i < $posicoes; $i++){
       //monta a query
      echo $query = "INSERT INTO `os_itens` (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES ({$id_os},{$qtd[$i]},'{$produto[$i]}',{$valor[$i]},{$desconto[$i]})";  
                      //aqui você tem que ver se você ta recebendo cada uma dessas variáveis como "arrays",




       $sql = mysql_query($query) or die(mysql_error());//executa a query
}
echo"Itens cadastrados com sucesso";

Compartilhar este post


Link para o post
Compartilhar em outros sites

da o seguinte:

 

INSERT INTO `os_itens` (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES (1,,'t',1,12.00)

 

o problema e que so esta vindo o t, e o 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara tem algum erros nos valores que são recebidos,

vai printando as variaveis em trechos do código e tenta descobrir onde está está vindo com valor errado.

 

Se for logo no $_POST, então o erro está na parte do formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

testando aqui.

tirei o $valor[$i] por $valor.

 

assim ele cadastra o primeiro, se cadastar mais de um item ele coloca nos 2 itens o primeiro.

 

sera o que pode ser???

 

quando coloco

 

INSERT INTO `os_itens` (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES (1,1,'t',1,10.00)INSERT INTO `os_itens` (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES (1,1,'e',8,10.00)

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando eu como te falei.

terei o [$i] e coloquei sem.

 

cadastrei 2 valores e ele vai, so que o valor do primeiro array fica nos 2 valores.

 

entao quer dizer que o count funciona, o problema ta que o valor sai do foreach sem os valores completos, ja tentei todas as coisas possivel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

continuou gravando so o inicio.

 

aff, nao sei mais o que fazer, preciso d+ disso.

o cliente quer poder adicionar mais itens sem precisar ficar clicando em cadastrar, so ir incluindo e essa m***** nao funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está atualmente?

 

 

EDIT

 

Cara eu to analisando aqui e acho que vocÊ nem precisa desse for, seu problema está na lógico, porém não estou conseguindo precisar o que precisa mexer sem testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara fiz assim:

 

$id_os = $_POST['id_os'];
$qtd = $_POST['qtd'];  
$desconto = moeda($_POST['desconto']);


$posicoes = count($qtd);//pega a quantidade de itens
for( $i = 0; $i < $posicoes; $i++){
       //monta a query
$x = $_POST[ 'prod' ];

foreach($x as &$key){

       $prod = explode("_", $key);

       $produto = $prod[0];
       $valor = $prod[1]; 

}
      $query = "INSERT INTO `os_itens` (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES ({$id_os},{$qtd[$i]},'{$produto[$i]}',{$valor[$i]},{$desconto[$i]})";  
                      //aqui você tem que ver se você ta recebendo cada uma dessas variáveis como "arrays",




       $sql = mysql_query($query) or die(mysql_error());//executa a query
}

echo"Itens cadastrados com sucesso";

 

assim:

 

$id_os = $_POST['id_os'];
$qtd = $_POST['qtd'];  
$desconto = moeda($_POST['desconto']);

$x = $_POST[ 'prod' ];

$posicoes = count($qtd);//pega a quantidade de itens
for( $i = 0; $i < $posicoes; $i++){
       //monta a query
foreach($x as &$key){

       $prod = explode("_", $key);

       $produto = $prod[0];
       $valor = $prod[1]; 

}
      $query = "INSERT INTO `os_itens` (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES ({$id_os},{$qtd[$i]},'{$produto[$i]}',{$valor[$i]},{$desconto[$i]})";  
                      //aqui você tem que ver se você ta recebendo cada uma dessas variáveis como "arrays",




       $sql = mysql_query($query) or die(mysql_error());//executa a query
}

echo"Itens cadastrados com sucesso";

 

e ambas cadastra os dados incompleto.

 

e tira valores que nao existe.

 

Full texts 	id 	id_os 	qtd 	produto 	valor 	desconto
               	20 	1 	1 	e 	        8.00 	10.00
                       19 	1 	1 	t 	        1.00 	10.0

 

e tinha que cadastrar.

teste 180.00

Ferro 180.00

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu to sem imaginação hoje, ta difícil imaginar seu código rodando.

 

Mas tenta assim e ve no que dá

 

function moeda($get_valor) { 
           	$source = array('.', ',');  
           	$replace = array('', '.'); 
           	$valor = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto 
           	return $valor; //retorna o valor formatado para gravar no banco 
   	}

$id_os = $_POST['id_os'];
echo $qtd = $_POST['qtd'];  
$desconto = moeda($_POST['desconto']);

$x = $_POST[ 'prod' ];

$i = 0;
foreach($x as &$key){

   	$prod = explode("_", $key);

   	$produto = $prod[0];
   	$valor = $prod[1];

   	//monta a query
       echo $query = "INSERT INTO `os_itens`  (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES  ({$id_os},{$qtd[$i]},'{$produto[$i]}',{$valor[$i]},{$desconto[$i]})";  
                       //aqui você tem que ver se você ta recebendo cada  uma dessas variáveis como "arrays",




   	$sql = mysql_query($query) or die(mysql_error());//executa a query

$i++

} 


echo"Itens cadastrados com sucesso";

 

 

 

EDIT

ADD a váriavel $i ao foreach

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu nao.

deu o erro:

 

INSERT INTO `os_itens` (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES (1,,'F',1,)You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''F',1,)' at line 1

 

mais assim como ele vai fazer se tem mais de um cadastro???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois que postei fiz uma correção, sinceramente não sei se está certo adicionando o $i.

Estou fazendo de cabeça.

 

To tentando resolver seu problema toda vez que uma correção de bug em um sistema da errada,

então to meio confuso hoje, mais que o normal. rs

 

Desculpa as confusões.

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.