Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Chiarelotto

Sistema de orçamento

Recommended Posts

Bom dia.

Preciso de uma ajuda.

O Sistema de orçamento que estou fazendo e o seguinte, construi 4 tabelas.

 

1 Tabela: veiculo

que tem os dados do veículo, como chassi, modelo, CRTL e outras itens

 

2 Tabela: cliente

que tem os dados do dono do veículo, ou quem levou o automotel para orçamento. essa tem nome, endereço e outros dados pessoais.

 

3 Tabela: produtos

essa tabela tem todas peças e serviços que fazemos. sao dados basicos, nome do produto, descrição, preço

 

4 Tabela e ultima: orcamento

eu estive lendo em alguns topicos sobre chave estrangeira, que vou concerteza utilizar pq!!

Quando o usuario do sistema for cadastrar um orçamento, ele vai buscar o veiculo cadastrado, e o sistema vai gravar informações do veiculo, gravar os dados do cliente.

 

AGORA UMA DAS MAIORES DUVIDAS MINHA E O USUARIO PODER COLCOAR MAIS DE UM PRODUTO NESTA TABELA, PQ O USER VAI PODER COLOCAR A QUANTIDADE UTILIZADA E O PREÇO. Minha duvida e como fazer para poder escolher mais de um produto..

 

Outra duvida e como montar minha tabela de orcamento para quando eu for visualizar ou imprimir esse orçamento ele mostrar mais ou menos assim:

 

-----------------------------------------------------------
Veículo:
Chassi: 000000    Modelo: Celta     Marca: Chevrolet
-----------------------------------------------------------
Cliente:
Nome: Bruno Silva    CPF: 000.000.000-00    RG: 000000
Endereço: R. Tal de tal n10  CEP: 0000000-000   
Cidade: Brasilia Estado: DF
Telefone: (61)0000-0000   Celular: (61)0000-0000
-----------------------------------------------------------
Qtd        Produto/Serviço        Preço Un         Preço Fn
2          Jogo de Roda Simples   R$80,00          R$160,00
1          Oleo Motor             R$20,00          R$20,00
-----------------------------------------------------------
Preço total........................................R$180,00
na hora de criar o orçamento vou usar jquery para fazer a busca sem mudar de pagina.

 

e quando for gravar vou gravar o id do cliente, o id do veiculo, ai preciso saber mais sobre chave estrangeira para conseguir fazer isso. Quem puder ajudar ficarei grato

 

criei a tabela aqui, nao sei se ta certo.

agora minha duvida e como gravar mais de um produto na tabela pelo php.

eu poder ir selecionando e adicionar ao form, e ele ja ir somando.

 

criei aqui minha tabela lendo algumas coisas da net.

 

create table veiculo (
     id_veiculo INTEGER not null auto_increment,
     chassi varchar(255) not null,
     modelo varchar(255) not null,
     crtl varchar(255) not null,
     cor varchar(255) not null,
     descricao varchar(255) not null,
PRIMARY KEY(id_veiculo)
);

create table cliente (
     id_cliente INTEGER not null auto_increment,
     nome varchar(255) not null,
     cpf varchar(255) not null,
     rg varchar(255) not null,
     endereco varchar(255) not null,
     cep varchar(255) not null,
     cidade varchar(255) not null,
     estado varchar(255) not null,
     telefone varchar(255) not null,
     celular varchar(255) not null,
PRIMARY KEY(id_cliente)
)ENGINE=INNODB;

create table produto (
     id_produto INTEGER not null auto_increment,
     nome varchar(255) not null,
     valor varchar(255) not null,
PRIMARY KEY(id_produto)
)ENGINE=INNODB;

create table orcamento (
     id_orcamento INTEGER UNSIGNED NOT NULL,
     id_veiculo INTEGER UNSIGNED NOT NULL,
     id_cliente INTEGER UNSIGNED NOT NULL,
     id_produto INTEGER UNSIGNED NOT NULL,
     qtd varchar(255) not null,
     produto varchar(255) not null,
     valor varchar(255) not null,
PRIMARY KEY(id_orcamento)
FOREIGN KEY (id_veiculo) REFERENCES veiculo(id_veiculo),
FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente),
FOREIGN KEY (id_produto) REFERENCES produto(id_produto),
)ENGINE=INNODB;   

alquem sabe se ta certo????

 

ola galera, a tabela consegui resolver, agora preciso fazer o codigo para mostrar. alquem pode me ajudar??? veja o codigo mais nao funciono.

 

<?php
include"includes/conecta.php";
$sql = mysql_query("SELECT veiculo.id_veiculo, cliente.id_cliente, produto.id_produto FROM orcamento, veiculo, cliente, produto order by id_orcamento desc", $db);
$linhas = mysql_num_rows($sql);

while ($vetor=mysql_fetch_array($sql)) {

	echo "Veículo: $vetor[1] <br>
	 	  Cliente: $vetor[2] <br>
		  Produto: $vetor[3] </br>
		  ";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim, em vez de colocar assim:

        echo "Veículo: $vetor[1] <br>
                  Cliente: $vetor[2] <br>
                  Produto: $vetor[3] </br>";

coloque o nome dos campos em vez de 1, 2 e 3! Exemplo!

        echo "Veículo: $vetor["veiculo.id_veiculo"] <br>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu erro:

 

fiz assim:

echo "Veículo: $vetor[\"veiculo.id_veiculo\"]  <br>
	 	  Cliente: $vetor[\"cliente.id_cliente\"] <br>
		  Produto: $vetor[\"produto.id_produto\"] </br>
		  ";

e deu o seguinte erro:

 

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/midiavir/public_html/orc/orc.php on line 19

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo "Veículo: {$vetor['veiculo.id_veiculo']}  <br />

Cliente: {$vetor['cliente.id_cliente']} <br />

Produto: {$vetor['produto.id_produto']} <br /> ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo "Veículo: {$vetor['veiculo.id_veiculo']}  <br />
                  Cliente: {$vetor['cliente.id_cliente']} <br />
                  Produto: {$vetor['produto.id_produto']} <br /> ";

assim so apareceu os nomes e nao o resultado.

 

so para ver se estamos no caminho certo. Eu preciso mostrar todos os campos das 4 tabelas, as 3 que usam chave estrangeira, e a tabela principal que e orcamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então estamos no caminho errado.

 

Já que existem chaves estrangeiras, faça um JOIN entre as tabelas, e então apelidando ( AS ), as colunas, você vai conseguir imprimir os campos que precisa.

 

Se tiver duvidas, poste a estrutura sql das tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve criar uma tabela itens no orcamento aonde você registrará todos os itens neste orçamento.

 

CREATE TABLE relation_itens_orcamento(
id integer unsigned not null auto_increment,
id_produto integer unsigned not null,
id_orcamento integer unsigned not null,
quantidade integer not null,
primary key(id),
foreign key(id_produto) references produto(id_produto) on delete no action on update no action,
foreign key(id_orcamento) references orcamento(id_orcamento) on delete no action on update no action
)ENGINE=InnoDB;

Na sua tabela orçamento não deve ter o id do produto, pois os produtos vão nos itens do orçamento e não no orçamento.

 

Você tem um orçamento e vários itens neste orçamento...

 

Daí quando você precisar ver o que tem no orçamento você faz um select do tipo

 

$sql = "SELECT * FROM relation_itens_orcamento WHERE id_orcamento = '{$idOrcamento}'";

Daí você faz o loop nisso aí...

 

Galerinha só chamando a atenção, todo mundo se preocupa demais em codar e codar e codar, vocês não viram que o problema é a falta da tabela de itens... Questão de lógica...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então estamos no caminho errado.

 

Já que existem chaves estrangeiras, faça um JOIN entre as tabelas, e então apelidando ( AS ), as colunas, você vai conseguir imprimir os campos que precisa.

 

Se tiver duvidas, poste a estrutura sql das tabelas.

 

na verdade e a primeira vez que utilizo chaves estrangeira, entao estou apanhando um poco.

 

olha minha base de dados.

 

create table modelo (
     id int(11) not null auto_increment,
     modelo varchar(255) not null,
PRIMARY KEY(id)
);


create table veiculo (
     id_veiculo INTEGER not null auto_increment,
     chassi varchar(255) not null,
     modelo varchar(255) not null,
     marca varchar(255) not null,
     crtl varchar(255) not null,
     cor varchar(255) not null,
PRIMARY KEY(id_veiculo)
)ENGINE=INNODB;

create table cliente (
     id_cliente INTEGER not null auto_increment,
     nome varchar(255) not null,
     cpf varchar(255) not null,
     rg varchar(255) not null,
     endereco varchar(255) not null,
     cep varchar(255) not null,
     cidade varchar(255) not null,
     estado varchar(255) not null,
     telefone varchar(255) not null,
     celular varchar(255) not null,
PRIMARY KEY(id_cliente)
)ENGINE=INNODB;

create table produto (
     id_produto INTEGER not null auto_increment,
     nome varchar(255) not null,
     valor varchar(255) not null,
PRIMARY KEY(id_produto)
)ENGINE=INNODB;

create table orcamento (
     id_orcamento INTEGER NOT NULL AUTO_INCREMENT,
     id_veiculo INTEGER NOT NULL,
     id_cliente INTEGER NOT NULL,
     id_produto INTEGER NOT NULL,
     qtd varchar(255) not null,
     produto varchar(255) not null,
     valor varchar(255) not null,
PRIMARY KEY(id_orcamento),
FOREIGN KEY (id_veiculo) REFERENCES veiculo(id_veiculo),
FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente),
FOREIGN KEY (id_produto) REFERENCES produto(id_produto))ENGINE=INNODB;
 

entao ainda estou com duvidas como montrar o resultado do que esta cadastrado no sistema.

por exemplo quando eu for visualizar a OS pelo id dela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago Lithium.

mais como eu adicionaria mais de um produto a um orçamento????

 

hj olha o jeito que cadastro o orçamento:

 

<?php

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

$sql_veiculo = mysql_query("select * from veiculo ORDER BY modelo ASC", $db);

$sql_cliente = mysql_query("select * from cliente ORDER BY nome ASC", $db);

$sql_produto = mysql_query("select * from produto ORDER BY nome ASC", $db);

?>

 

<select name="id_veiculo" id="veiculo">

<option value="0"><

<Selecione o tipo>

></option>

<?php while($array = mysql_fetch_array($sql_veiculo)) {?>

<option value="<?php echo $array['0']; ?>"><?php echo $array['1']; ?></option>

<?php } ?>

</select>

 

entao nao sei como fazer para adicionar mais de um produto para fazer a soma.

 

na verdade tenho 2 duvidas, adicionar mais de um produto e mostrar esse orçamento, pela url.

 

http://localhost/orcamento.php?id=1 por exemplo e mostrar o orçamento completo do cadastro 1 da tabela orçamento com suas devidas junçoes pela chave estrangeira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro,

 

Não sei como você está exibindo isso mais eu exibiria os produtos como CHECKBOXES e o veículo como SELECT...

 

Sendo assim teremos um

<select name="veiculo">
<option value="10">Astra GLS</option>
<option value="1">Vectra</option>
<option value="15">Golf</option>
</select>

E também exibindo os produtos assim

foreach( $produtos as $produto ) {
    echo '<input type="checkbox" name="produtos[]" value="{$produto['id_produto']}" />';
}

Se você receber isso via $_POST você vai receber assim:

 

$veiculo = $_POST['veiculo'];

// como no input colocamos o name com "[]" ele passa a ser um array e sua estrutura será assim
// array(1, 4, 6, 9)
$produtos = $_POST['produtos'];

Daí você grava o orçamento no banco e recupera o ID dele, como eu uso PDO utilizo a função:

$idOrcamento = $bancoFactory->getLastInsertId();
Mas você recupera da sua maneira aí.

 

A partir disso voce faz o loop nos produtos inserindo no banco, na tabela de relacionamento.

foreach( $produtos as $produto ) {
   $sql = "INSERT INTO relation_itens_orcamento( id_orcamento, id_produto ) VALUES('{$idOrcamento}', '{$produto['id_produto']}');
}

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.