Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia
Tenho um formulário onde o usuário seleciona vários registros para gravar no BD. Os dados estão sendo gravados corretamente (vários registros ao mesmo tempo).
O problema é o seguinte: tenho um dado de TOTAL DE PEDIDOS, um dado de NUMERAÇÃO INICIAL e um dado de NUMERAÇÃO FINAL.
As numerações inicial e final são definidas de acordo com o TOTAL DE PEDIDOS. Exemplo: TOTAL DE PEDIDOS -> 5, INICIAL -> 1, FINAL -> 5.
O detalhe é que essa numeração (Inicial e Final) deve ser sequencial.
Supondo que já exista este dado no BD (TOTAL DE PEDIDOS -> 5, INICIAL -> 1, FINAL -> 5), e supondo que serão inseridos 02 novos registros na tabela, sendo ambos com 10 PEDIDOS. Neste caso, no primeiro registro inserido, a NUMERAÇÃO INICIAL deve ser 6 e a NUMERAÇÃO FINAL deve ser 15; e o segundo registro inserido deve ser NUMERAÇÃO INICIAL igual a 16 e NUMERAÇÃO FINAL igual a 25. Problema que para ambos os registros, está calculando o valor INICIAL como 6 e valor FINAL como 15.
Como faço para realizar o cálculo corretamente, para que a cada registro seja calculado o valor correto da NUMERAÇÃO INICIAL? Para definição deste valor inicial, faço select no BD para pegar a maior numeração existente, porém o sistema pega este valor e atribui o primeiro valor encontrado para todos os registros, sendo que preciso que a cada lançamento este valor seja atualizado para cálculo da numeração do registro seguinte.
Problema resolvido. Minha consulta estava com problemas no retorno dos dados.
Tentei resumidamente da seguinte forma:
for($i=0; $i<count($id_lts); $i++) {
// Buscar Maior Numeração gravada no BD
$soma = 1; // Adiciona 1 à última numeração, para gerar próxima numeração inicial
while ($linha = @pg_fetch_array($Resultado_numerar)){
$ultima_numeracao_final = $linha["ultima_numeracao_final"]; // Variável com última numeração
$numeracao_inicial = ($ultima_numeracao_final + $soma);
$numeracao_final = $numeracao_inicial + ($total_pedidos[$i]-1); // Numeração Inicial calculada + TOTAL PEDIDOS de cada registro a ser inserido
} // Fecha "for"
Porém os dados de NUMERAÇÃO INICIAL e FINAL, continuam sendo gravados com mesmos valores, ou seja, mesma NUMERAÇÃO INICIAL para todos os registros.
Desde já agradeço.