Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Conte

Auto increment para estoque

Recommended Posts

boa tarde.

estou fazendo um controle de estoque de maquinas.

 

quando lanço a maquina no meu banco ela e lançada em 2 tabelas.

1 com a qtd total de estoque e no outra tabela e para lançar o numero de serie de cada maquina.

 

Aqui temos 4 modelos de maquinas.

 

e sempre o serial vem assim:

 

ST01LT00001

 

ST é o modelo da maquina.

01LT e o lote.

00001 e o numero de serie.

 

o problema e que se o auto increment for do banco quando o modelo for outro vai ficar com o numero de serie por exemplo:

 

SW01LT0002

 

e todos os modelos tem que ter o numero de serie 0001 e por ai em diante.

 

alquem tem uma sugestão para o meu problema???

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha se o modelo não precisa ser PK, faz

-id (PK e AI)

-modelo

e oque precisar mais,

 

 

na tabela que lança o estoque faça

-id (PK e AI)

-id_modelo (isso aki seria o ID Auto increment do modelo da outra tabela)

-quantidade (quantidade em Estoque)...

(e por ai vai o restante das colunas que precisa)

 

 

seria isso sua Duvida ou não intendi bem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade ate ai ja tinha a ideia cara. Aonde quebro a cabeça e na hora de fazer o numero de serie mesmo.

 

Fiz a tabela produtonserie com os seguintes campos

 

id auto increment

sigla varchar (onde vejo o modelo da maquina)

lote varchar (lote da produção da maquina)

serial int (onde na verdade seria um auto_increment so que a partir da sigla dele)

 

saco??

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom man, ai acho que auto_icremnt não vai rolar, faz assim ao inserir um modelo, verifica se ele existe no db, depois você faz um count() para saber quanto tem;

 

vou colocar um exemplo para você intender o modo em que eu pensei em fazer, pode haver outros meios mais que me veio a cabeça foi isso!

$count = 5; //seria o tanto de dados do mesmo modelo ja no banco de dados
$modelo = "SCPUI0001"; //Seria o nome do modelo iniciado do 1
for ($i = 0; $i <= $count;$i++){
    $modelo++;
}
 echo $modelo; //ira retornar "SCPUI0006"

 

observe o for começa de 0 e a contagem começa de "SCPUI0001"

 

de 0 a 5 ele considera 6 numeros, mais no db so possui 5 , então depois do loop feito,

$modelo vai ter o valor de "SCPUI0006"

ai basta inserir-lo no Banco de Dado :D

 

ou mais simples para evitar longos Loops

 

$last_id = $sql['serial']; //$sql['serial'] seria o ultimo serial Inserido, ou seja você faria a consulta pegando o ultimo seria inserido deste modelo

//caso não haja
if (empty($last_id)){
    $last_id = "SSP000"; //aqui seria para iniciar o primeiro serial (por isso coloque 000), você teria que criar algo para definir este nome de acordo com oque preenche no formulario
}

for ($i = 0; $i <= 1;$i++){
    $last_id++;
}
  echo $last_id; //neste caso retornaria "SSP001"

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw, com sua sugestão e mais umas alterações aqui deu certo.

 

vlw

 

fazendo um teste aqui, ta dando um erro:

 

<?php
include"../includes/conecta.php";
$modelo = explode( '_', $_POST[ 'modelo' ] );
       $id_maquina = $modelo[0];
       $sigla = $modelo[1];  
$lote = $_POST['lote'];
$qtd = $_POST['qtd'];

$sql = mysql_query("select * from estoquemaquinas_serial where sigla = '$sigla'", $db);
$vetor = mysql_fetch_array($sql);

$serial = $vetor['serial'];

for($i = 0; $i <= $qtd; $i++) {

	$serial++;

	$sql_insert = mysql_query("insert into estoquemaquinas_serial (id_maquina, sigla, lote, serial, vendido) VALUES ('$id_maquina', '$sigla', '$lote', '$serial', '1')", $db);
}
$sql_atualiza = mysql_query("update estoquemaquinas SET qtd = (qtd + '$qtd') where id = '$id_maquina'", $db);
echo "Cadastrado com sucesso";

?>

 

Quando coloco por exemplo qtd = 2 no formulario

ele grava no banco de dados 3, pq da isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

for($i = 0; $i <= $qtd; $i++) {

 

$i = 0

$qtd = 2

 

0 1 2

 

ele faz o loop a partir de 0 então são 3 digitos ehehhe

 

Coloca assim neste caso!

for($i = 1; $i <= $qtd; $i++) {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atualizando meus 2 bancos na hora de vender o produto, estou com uma duvida e queria a ajuda de voces.

 

meu codigo que uso e esse:

 

$selecao = mysql_query("select id_produto, qtd from pedido_vendedor_itens
								where id_coockie = '$coockie' and finalizada = 'n'");
			while ($lista = mysql_fetch_array($selecao)) {
			$id = $lista["id_produto"];
			$qtd = $lista["qtd"]; /* efetua a baixa na tabela produto */
				$baixa = mysql_query("update estoquemaquinas set 
										qtd = qtd - '$qtd'
										where id_maquina = '$id'");
										}
		$atualiza = mysql_query("update pedido_itens set 
									finalizada = 's'
									where id_coockie = '$coockie'") or die (mysql_error());

} 

 

na minha tabela estoquemaquinas_serial tenho o campo vendido que quando ta 1 nao esta vendido e quando esta 2 esta vendido.

 

O problema e que em uma maquina posso ter 30 cadastros no banco e quero que quando eu vender 2 dela por exemplo ele muda o status de vendido das 2 primeiras com serial no banco.

 

Exemplo tenho 10 seriais:

 

1

2

3

4

..

10

 

quando eu vender 2 maquinas ele ira dar baixa no serial 1 e 2 como vendido

Compartilhar este post


Link para o post
Compartilhar em outros sites

na sua tabela

 

Cria uma coluna:

 

vendido enum("y","n") e deixa o padrão definido como n

 

quando você vender alguma maquina, altera para y na maquina em que foi vendida, tipo se você vendeu a maquina de modelo SSP3DMEGATRON cuja o serial era SSP001, você da um UPDATE nessa maquina para y! Depois no php você faz um if e verfica se for n não vendeu , se for y vendeu, tipo isso!

ou não precisa ser por enum, faz por int, se o valor for 0 não vendeu se for 1 vendeu, é algo simples acredito eu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, eu uso enum, agora o problema e que tenho varias maquinas que muda apenas o serial e se meu update tiver:

 

id_maquina = '$id' vai mudar de todas maquinas do modelo, e quero que modifique apenas a quantidade entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade ainda eu nao sei o serial, pois tenho uma tabela que guarda nome da maquina, qtd, valor e outra com os seriais.

 

entao por exemplo, eu pela quantidade sei quantos devem ser dado como vendido.

 

Agora nao sei como puxar os 2 primeiros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim

 

neste caso se você vendeu mais não sabe o serial podemos fazer assim,

 

a tabela no qual você armazena

 

nome da maquina, qtd, valor

 

quando você vender uma maquina, você da update nesta tabela e diminui 1 na quantidade, se vendeu 3 e tinha 27, ele faria update para 24.

 

"UPDATE tabela SET quantidade=quantidade-".$vendeu." WHERE id_maquina = '$id'"

 

na tabela onde possui os seriais, você coloca o enum, e no php, logo apos o UPDATE

 

você faz um select para pegar as maquinas que não foram vendidas do mesmo modelo

 

$i = 1;
$sql = mysql_query("SELECT id FROM tabela_seriais WHERE id_maquina = '$id' AND vendido != 'n'");
while($exe = mysql_fetch_array($sql)){
if ($i <= $vendeu){
mysql_query("UPDATE tabela_seriais SET vendido='y' WHERE id='".$exe['id']."'");
}else{
 break;
}
$i++;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim, so que não atualizou os seriais vendidos>

 

$sql_atualiza = mysql_query("update estoquemaquinas SET qtd = (qtd - '{$qtd}') where id_maquina = '$id_maquina'", $db);	

		$f = 1;
			$sql_vendido = mysql_query("SELECT id FROM estoquemaquinas_serial WHERE id_maquina = '$id_maquina' AND vendido != '1'");
			while($exe = mysql_fetch_array($sql_vendido)){
			if ($f <= $qtd){
			mysql_query("UPDATE estoquemaquinas_serial SET vendido='2' WHERE id='".$exe['id']."'");
			}else{
			  break;
			}
			$f++;
			}	

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql_vendido = mysql_query("SELECT id FROM estoquemaquinas_serial WHERE id_maquina = '$id_maquina' AND vendido != '1'");

 

id_maquina = '$id_maquina' -> Este aki é o serial?

 

primeiro Verifica se o While está retornando algum resultado, e usa mysql_error() tb para ver se há algo errado tb...

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.