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

galera, boa noite, esta dando o seguinte erro no cadastro de meu form.

 

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 '1,'10.00')' at line 1

 

meu cadastro e o seguinte:

 

<?php
include"../includes/conecta.php";
include"versessao.php";
$sql_tipo = mysql_query("select * from produto order by nome ASC", $db);
$id = $_GET['id'];
   $sql = mysql_query("select * from os where id = '$id'", $db);
?>
<script type="text/javascript" src="../financeiro/aplicacoes/aplicjava.js"></script>
<script language="javascript">
var input = 0;
function mais(campo) {

var nova = document.getElementById("aqui");
var novadiv = document.createElement("div");
var nomediv = "div";
novadiv.innerHTML = "Produto: <select name='prod[]' id='produto'><option value='0'><Selecione o tipo></option><?php while($array = mysql_fetch_array($sql_tipo)) {?><option label='<?php echo $array[nome] ?>' value='<?php echo $array[nome] ."_". $array[precovenda]; ?>'><?php echo $array[nome] ?> - <?php echo $array[precovenda] ?></option><?php } ?></select> Quantidade: <input type='text' name='qtd[]' value='' style='width:193px;height:20px;'> Desconto no Produto: <input type='text' name='desconto[]' value='' onkeypress='mascara(this,mvalor)' style='width:193px;height:20px;'> ";
nova.appendChild(novadiv);

input++;
}</script>

<form method='post' action='recebe_itensos.php'>
<input type="hidden" name="id_os" value="<?php echo $id ; ?>" />
<input type='button' value='Inserir Produto na OS' onClick='mais(campo.value)'>
<input type='hidden' name='campo' value=''>
<div id='aqui'>

</div>
<input type='submit' name='enviar' value='Enviar Itens Da OS'>
</form>

 

e o recebe_itensos.php que e onde da o erro:

 

<?php
include"../includes/conecta.php";

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'];
$prod = explode( '_', $_POST[ 'prod' ] );
   $produto = $prod[0];
   $valor = $prod[1]; 
$qtd = $_POST['qtd'];
$desconto = moeda($_POST['desconto']);

$posicoes = count($produto);//pega a quantidade de itens
for( $i = 0; $i < $posicoes; $i++){
       //monta a query
       $query = "INSERT INTO `os_itens` (`id_os`,`produto`,`valor`,`qtd`,`desconto`) VALUES ({$id_os},'{$produto[$i]}',{$valor[$i]},{$qtd[$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";
?>

 

sera pq esta dando esse erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

da um echo na consulta. ele insere algo ou da erro na primeira iteração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, deu um echo na query, e verificando, o problema esta que nao esta vindo os dados do nome do produto e valor.

 

INSERT INTO `os_itens` (`id_os`,`produto`,`valor`,`qtd`,`desconto`) VALUES (1,'A',,1,14.00)

 

o problema maior esta aqui o:

 

value='<?php echo $array[nome] "._." $array[precovenda]; ?>'>

 

la no cadastro. Como o select fica dentro de um javascript, ele esta dando erro.

ja substitui por '._.' e mesmo assim nao leva os valores.

 

alquem sabe o que posso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja o seu explode, o produto n deveria estar dentro do for?

 

$prod = explode( '_', $_POST[ 'prod' ] );
$produto = $prod[0];
$valor = $prod[1]; 
$qtd = $_POST['qtd'];
$desconto = moeda($_POST['desconto']);

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu form:

 

<script type="text/javascript" src="../financeiro/aplicacoes/aplicjava.js"></script>
<script language="javascript">
var input = 0;
function mais(campo) {

var nova = document.getElementById("aqui");
var novadiv = document.createElement("div");
var nomediv = "div";
novadiv.innerHTML = "Produto: <select name='prod[]' id='produto'><option value='0'><Selecione o tipo></option><?php while($array = mysql_fetch_array($sql_tipo)) {?><option label='<?php echo $array[nome] ?>' value='<?php echo $array[nome].'_'.$array[precovenda]; ?>'><?php echo $array[nome] ?> - <?php echo $array[precovenda] ?></option><?php } ?></select> Quantidade: <input type='text' name='qtd[]' value='' style='width:193px;height:20px;'> Desconto no Produto: <input type='text' name='desconto[]' value='' onkeypress='mascara(this,mvalor)' style='width:193px;height:20px;'> ";
nova.appendChild(novadiv);

input++;
}</script>
<form method='post' action='recebe_itensos.php'>
<input type="hidden" name="id_os" value="<?php echo $id ; ?>" />
<input type='button' value='Inserir Produto na OS' onClick='mais(campo.value)'>
<input type='hidden' name='campo' value=''>
<div id='aqui'>

</div>
<input type='submit' name='enviar' value='Enviar Itens Da OS'>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No código fonte do formulário o select está correto?

As informações estão preenchidas corretamente?

 

Faça o print que te falei no post anterior também

 

print_r($pord[0]);

 

Não estou conseguindo enxergar o erro por esses trechos do código. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao, na verdade eu seleciono o cadastro.

e ele vai em branco.

 

quando dei um print_r($pord[0]); na apareceu nada.

 

e pq nao esta passando nenhum valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando passa os valores do formulário para PHP, apenas esse não está aparecendo

Isso me leva a crer que o erro está na montagem do <select> e não no script PHP.

 

Ao exibir o código-fonte da página é possível analisar como o HTML foi montado,

e se tiver algum erro, fica mais fácil de procurar no script.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, e o pior que na select ele esta montando beleza.

da uma olhada:

 

novadiv.innerHTML = "Produto: <select name='prod[]' id='produto'><option value='0'><Selecione o tipo></option><option label='teste' value='teste_180.00'>teste - 180.00</option></select> Quantidade: <input type='text' name='qtd[]' value='' style='width:193px;height:20px;'> Desconto no Produto: <input type='text' name='desconto[]' value='' onkeypress='mascara(this,mvalor)' style='width:193px;height:20px;'> ";

 

o problema e que dai nao esta passando para o recebe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, acho que encontrei!

 

$prod = explode( '_', $_POST[ 'prod' ] );

 

esse trecho faz um explode de uma sting onde tem "_"

porém $_POST['prod'] é uma array! não tem "_" em um array.

 

Foi isso que o shini quis dizer no post dele.

 

você precisa faz um laço onde pegue todos os dados do $prod e faça o explode neles.

 

Sabia que estava deixando algum detalhe simples passar. rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplificando o que você tem com o código no momento é mais ou menos isso:

 

$prod = array (0 => array(0 => "produto1_outrovalor", 1 => "Teste_codigo", 2 => "Mais_umitem"));

 

Ele tentou explodir um array o que gerou um array dentro do outro,

em vez do textos.

 

O que você precisa é dividir os itens do array que você recebeu do formulário

que seria assim:

 

$prod = explode($_POST['prod'][0]);
$prod1 = explode($_POST['prod'][1]);
$prod2 = explode($_POST['prod'][2]);

 

porém isso é inviável pois não sabe quantos produtos vai receber.

Já que cada um vai ser inserido individualmente no banco podemos criar algo assim:

 

<?php 

$x = array (0 => "produto1_outrovalor", 1 => "Teste_codigo", 2 => "Mais_umitem");

foreach($x as &$key){

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

print "<pre>";
print_r($prod);
print "<pre>";

}

?>

 

O retorno desse código é o seguinte:

 

Array (

[0] => produto1

[1] => outrovalor

)

 

Array (

[0] => Teste

[1] => codigo

)

 

Array (

[0] => Mais

[1] => umitem

)

 

 

$x seria o seu $_POST['prod']

 

 

foreach percorre o seu array jogando o conteudo na variavel $key

então explodimos o $key para pegar o texto dele o que retorna um outro

array com a divisão da string.

conseguiu pegar a idéia? Depois é só usar o foreeach para alimentar o banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara fiz assim:

 

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

$x = $_POST[ 'prod' ];

foreach($x as &$key){

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

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

} 

$posicoes = count($desc);//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
}

 

ele da o erro:

 

INSERT INTO `os_itens` (`id_os`,`qtd`,`produto`,`valor`,`desconto`) VALUES (1,,'t',1,12.00)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 ''t',1,12.00)' at line 1

 

fiz o teste e os valores estao vindo quando testei assim:

 

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

$x = $_POST[ 'prod' ];

foreach($x as &$key){

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

       print "<pre>";
       print_r($prod);
       print "<pre>";


} 

$posicoes = count($desc);//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
}

 

traz o seguinte resultado:

 

Array
(
   [0] => teste
   [1] => 180.00
)

 

mais para cadastrar ele nao vai.

 

o que devo fazer???

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.