Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Chiarelotto

[Resolvido] Sistema de OS

Recommended Posts

boa tarde a todos.

estou desenvolvendo um sistema de os, que tem pronto ja:

Cadastro do cliente;

Cadastro da OS;

 

o que pretendo fazer agora e que estou com duvida como fazer e:

 

itens da os, onde gravo no banco todos os itens da os aberta.

a tabela dos itens e:

 

create table os_itens (
id int(11) not null auto_increment,
id_os int(11) default null,
descricao varchar(255) default null,
qtd varchar(255) default null,
valor float(9,2) default null,
primary key(id)
);

 

achei um codigo na net que posso ir acrescentando linhas no meu formulario, queria usa-lo, mais ai vem a duvida.

como gravar mais de um linha de uma vez.

 

<script language="javascript">
var input = 0;
function mais(campo) {

var nova = document.getElementById("aqui");
var novadiv = document.createElement("div");
var nomediv = "div";
novadiv.innerHTML = "Descrição: <input type='text' name='descricao[]' value='' style='width:193px;height:20px;'> Quantidade: <input type='text' name='qtd[]' value='' style='width:193px;height:20px;'> Valor: <input type='text' name='valor[]' value='' style='width:193px;height:20px;'>";
nova.appendChild(novadiv);

input++;
}</script>
<form method='post' action='enviar.php'>
<input type='button' value='Inserir Mais serviço' onClick='mais(campo.value)'>
<input type='hidden' name='campo' value=''>
<div id='aqui'>

</div>
<input type='submit' name='enviar' value='Enviar Cadastro(s)'>
</form> 

 

fico agradecido se alquem moder me da uma luz

Compartilhar este post


Link para o post
Compartilhar em outros sites

há várias formas de fazer isso, a que eu faria seria mandar um parâmetro pelo script que tu ta usando pra criar uma nova linha e colocaria um $array[$contador] em cada um dos campos, assim cada entrada do array seria uma nova linha, ai como fazer auto incrementar o contador? lembra o parâmetro que mandei? coloco uma condicional pra quando ele for "true" adiciona +1 em todos os contadores, sacou a lógica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está criando 3 arrays que serão recuperados no php como

 

$_POST['descricao'],$_POST['qtd'],$_POST['valor']

 

definição de array para leigos: grupo de variáveis

 

tem duas formas de inserir utilizando esses arrays

 

inserindo no banco tudo de uma vez

<?php
$desc = $_POST['descricao'];//pega as descrições
$qtd = $_POST['qtd'];//pega as quantidades
$valor = $_POST['valor'];//pega os valores
//inicia a query
$query = "INSERT INTO `tabela` (`campo1`,`campo2`,`campo3`) VALUES ";
$posicoes = count($desc);//pega a quantidade de itens
for( $i = 0; $i < $posicoes; $i++)//loop para varrer todos os itens
  $query .= "('{$desc[$i]}',{$qtd[$i]},{$valor[$i]}),";//acrecenta a query
$query = substr($query, 0, -1);//tira a vírgula excedente
$sql = mysql_query($query) or die(mysql_error());//executa ou retorna erro
?>

 

inserindo no banco linha a linha

<?php
$desc = $_POST['descricao'];
$qtd = $_POST['qtd'];
$valor = $_POST['valor'];
$posicoes = count($desc);//pega a quantidade de itens
for( $i = 0; $i < $posicoes; $i++){
       //monta a query
$query = "INSERT INTO `tabela` (`campo1`,`campo2`,`campo3`) VALUES ('{$desc[$i]}',{$qtd[$i]},{$valor[$i]})";
$sql = mysql_query($sql) or die(mysql_error());//executa a query
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

especifique o que você sabe e não sabe sobre seu próprio código, sabe conectar ao DB? sabe fazer um INSERT?

 

ai poderemos ajudá-lo melhor...

 

sobre tutoriais:

 

www.php.net você encontra toda a sintaxe do php...

 

www.google.com.br você encontra qualquer coisa, apenas pergunte pra ele: "como fazer uma inserção no banco de dados MYSQL"(exemplo)

 

o que posso te dizer é isso...

 

se você não tem conhecimento de lógica eu não poderei ajudá-lo pois estou no serviço, não tenho muito tempo pra fazer códigos

 

;x

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara usei o seguinte :

 

<?php
include"conecta.php";

$id_os = $_POST['id_os'];
$desc = $_POST['descricao'];
$qtd = $_POST['qtd'];
$valor = $_POST['valor'];
$posicoes = count($id_os);//pega a quantidade de itens
for( $i = 0; $i < $posicoes; $i++){
       //monta a query
       $query = "INSERT INTO `os` (`id_os`,`descricao`,`qtd`,`valor`) VALUES ('{$id_os[$i]}',{$desc[$i]}',{$qtd[$i]},{$valor[$i]})";
       $sql = mysql_query($sql) or die(mysql_error());//executa a query
}
?>

 

adicionei o campo id_os que e a id da os aberta para saber quais itens e de cada os.

 

so que ele nao cadastra e nao retorna erro algum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho!!

o $id_os é uma array??

se não for não use dessa forma $id_os[$i]

e após montar a query

$query = "INSERT INTO `os` (`id_os`,`descricao`,`qtd`,`valor`) VALUES ('{$id_os[$i]}',{$desc[$i]}',{$qtd[$i]},{$valor[$i]})";

insira a linha

echo $query;

para visualizar a query e veja se os valores estão corretos

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
include"conecta.php";

var_dump($_POST);  //confere se todos seus POST estão ok
$id_os = $_POST['id_os'];
$desc = $_POST['descricao'];
$qtd = $_POST['qtd'];
$valor = $_POST['valor'];

$posicoes = count($id_os);//pega a quantidade de itens
for( $i = 0; $i < $posicoes; $i++){
       //monta a query
       echo $query = "INSERT INTO `os` (`id_os`,`descricao`,`qtd`,`valor`) 
                      VALUES ('{$id_os[$i]}',{$desc[$i]}',{$qtd[$i]},{$valor[$i]})"; 
                      //aqui você tem que ver se você ta recebendo cada uma dessas variáveis como "arrays",
                      ou seja está sendo passado por $POST pra elas os valores nos seus respectivos parâmetros: "1,2,3,4,5,..", 
                      verifica se ta tudo certo pelo var_dump que eu coloquei na parte de cima do código,
                      provavelmente é aqui o erro...

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu o seguinte erro:

 

array(6) { ["id_os"]=> string(1) "1" ["campo"]=> string(0) "" ["descricao"]=> array(2) { [0]=> string(5) "teste" [1]=> string(6) "tessss" } ["qtd"]=> array(2) { [0]=> string(1) "1" [1]=> string(1) "1" } ["valor"]=> array(2) { [0]=> string(5) "10,00" [1]=> string(5) "20,00" } ["enviar"]=> string(18) "Enviar Cadastro(s)" } INSERT INTO `os_itens` (`id_os`,`descricao`,`qtd`,`valor`) VALUES ('1',teste',1,10,00)Query was empty

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja como sua query está ficando

INSERT INTO `os_itens` (`id_os`,`descricao`,`qtd`,`valor`) VALUES ('1',teste',1,10,00)

Número com aspas aqui '1', com campos numéricos somente o número assim 1

e faltando aspa nesse trecho :seta: teste'

acerta seu código

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda não está ajustado

retirei as aspas aqui {$id_os[$i]} e aqui {$valor[$i]}, por se tratarem de campos numéricos

e ficou assim

$query = "INSERT INTO `os_itens` (`id_os`,`descricao`,`qtd`,`valor`) VALUES ({$id_os[$i]},'{$desc[$i]}','{$qtd[$i]}',{$valor[$i]})"; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

continua sem registrar e dando o erro.

 

outra coisa que em cima do seu eu fiz, e que a qtd tambem e numerico, assim so tem aspas no desc.

 

e mesmo assim nada.

 

$query = "INSERT INTO `os_itens` (`id_os`,`descricao`,`qtd`,`valor`) VALUES ({$id_os[$i]},'{$desc[$i]}',{$qtd[$i]},{$valor[$i]})";

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse:

 

array(6) { ["id_os"]=> string(1) "1" ["campo"]=> string(0) "" ["descricao"]=> array(1) { [0]=> string(5) "teste" } ["qtd"]=> array(1) { [0]=> string(1) "1" } ["valor"]=> array(1) { [0]=> string(2) "10" } ["enviar"]=> string(18) "Enviar Cadastro(s)" } INSERT INTO `os_itens` (`id_os`,`descricao`,`qtd`,`valor`) VALUES (1,'teste',1,10)Query was empty

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro está no final da linha

Query was empty

 

poste como está o seu código.

aparentemente você está tentando executar uma query que não existe, pode ser um erro referente ao uso de variável errada

Compartilhar este post


Link para o post
Compartilhar em outros sites

formulario:

 

<script language="javascript">
var input = 0;
function mais(campo) {

var nova = document.getElementById("aqui");
var novadiv = document.createElement("div");
var nomediv = "div";
novadiv.innerHTML = "Nome Produto: <input type='text' name='descricao[]' value='' style='width:193px;height:20px;'> Quantidade: <input type='text' name='qtd[]' value='' style='width:193px;height:20px;'> Valor: <input type='text' name='valor[]' value='' style='width:193px;height:20px;'>";
nova.appendChild(novadiv);

input++;
}</script>
<form method='post' action='teste1.php'>
<input type="text" name="id_os" value="1" />
<input type='button' value='Inserir Mais serviço' onClick='mais(campo.value)'>
<input type='hidden' name='campo' value=''>
<div id='aqui'>

</div>
<input type='submit' name='enviar' value='Enviar Cadastro(s)'>
</form> 

 

arquivo que cadastra no bd:

 

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

var_dump($_POST);  //confere se todos seus POST estão ok
$id_os = $_POST['id_os'];
$desc = $_POST['descricao'];
$qtd = $_POST['qtd'];
$valor = $_POST['valor'];

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


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente

 

você monta a query na variável $query e executa a variável $sql

 

tira essa linha

var_dump($_POST);  

já não é mais necessária, visto que já foi confirmado a existência dos valores vindo por post

 

e tira o echo dessa linha, pois já foi acertada a query

echo $query = "INSERT INTO `os_itens` (`id_os`,`descricao`,`qtd`,`valor`) VALUES ({$id_os[$i]},'{$desc[$i]}',{$qtd[$i]},{$valor[$i]})";  

 

e muda essa linha

 

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

 

para essa, colocando a variável certa

 

query($query) or die(mysql_error());//executa a query

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.