Ir para conteúdo
AnibalJR

Atualizar varias linhas do BD atraves de uma array

Recommended Posts

Boa noite pessoal, Estou precisando de uma força.

Criei uma tela de venda e que baixa estoque de uma tabela de estoque separada, porem estou com dificuldade de retornar o estoque  de varios itens de uma vez quando eu excluo a venda?

Para cada produto vendido eu crio uma linha na tabela de vendas, mas para deletar eu uso só uma das referencias, por isso o select duplo na mesma tabela, para retornar com o primeiro valor, as demais linhas que possuem o mesmo numero de pedido.

Nesta regra tentei buscar a tabela de estoque e a tabela de vendas e somar o campo de venda ao campo de estoque e fazer um update no estoque, mas ele faz apenas para 1 item

Segue o codigo que estou tentando usar para atualizar varias linhas na tabela de estoque de borrachas:

    protected function retornaitens() {
        $dadosVenda = "SELECT * from pdvborracha WHERE id = $_GET["var3"];
                $dadostodas = "SELECT * FROM pdvborracha WHERE pedido = ".$dadosVenda["pedido"];
        $linhafinal = mysql_fetch_array($dadostodas);

        $query = "SELECT * FROM estoquematprima WHERE produto=".$linhafinal["produto"];


 ($linha = mysql_fetch_array($query));
        $quantidade = $linha["quantidade"] + $linhafinal["quantidade"];

        $query = "UPDATE estoquematprima SET quantidade=".$quantidade." WHERE produto=".$linhafinal["produto"];

 

Editado por Alaerte Gabriel
Adição da tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Alaerte Gabriel disse:

Você precisa adicionar um laço de repetição para percorrer os registros, faltou um while() aí

while($linha = mysql_fetch_array($query));

seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas nunca execute métodos e cálculos nas defininições dos laços e condicionais (while, for, foreach, if, etc).

 

Neste caso, guarde o array de resultados numa variável e em seguida execute o while:

 

$resultadoQuery      = mysqli_query($con,$query);
$conjuntoDeRegistros = mysqli_fetch_array($resultadoQuery);

while($linha = $conjuntoDeRegistros){

	echo $linha['nome_da_coluna'].'<br>';

}

 

Neste exemplo usei o mysqli ao invés do mysql que está usando.

 

O driver padrão mysql já está deprecado na versão 7 do PHP (além dele ser bem mais lento que o mysqli e ninguém mais deveria usá-lo em ambientes de produção há anos).

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 06/03/2017 at 08:20, Alexandre Kopelevitch disse:

Sim, mas nunca execute métodos e cálculos nas defininições dos laços e condicionais (while, for, foreach, if, etc).

 

Neste caso, guarde o array de resultados numa variável e em seguida execute o while:

 


$resultadoQuery      = mysqli_query($con,$query);
$conjuntoDeRegistros = mysqli_fetch_array($resultadoQuery);

while($linha = $conjuntoDeRegistros){

	echo $linha['nome_da_coluna'].'<br>';

}

 

Neste exemplo usei o mysqli ao invés do mysql que está usando.

 

O driver padrão mysql já está deprecado na versão 7 do PHP (além dele ser bem mais lento que o mysqli e ninguém mais deveria usá-lo em ambientes de produção há anos).

 

 

Preciso atualizar Alexandre, mas ja tem bastante tempo que uso esse driver no meu servidor e tem muitas paginas no controller com esse driver, vai dar trabalho reescrever tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por darkskull10
      Numa cidade as crianças costumam brincar com um jogo (de dois jogadores) onde:
      um jogador A define uma sequência de 10 letras usando: G, R e B (exemplo: G – G – G – R – B – R – B – B – B – R)
      um jogador B pode ler a sequência quantas vezes quiser
      o jogador B também pode dizer uma das letras e obter em quais posições a letra dada se encontra na sequência
      o jogador B também pode dar uma posição e saber qual letra ocupa a posição na sequência
      para finalizar, o jogador B deve dizer a sequência de letras, obtendo um ponto para cada acerto.
       
      Só consegui pensar nisso por enquanto.
       
      //identificar que letra ocupa esta posição na sequência:
      do{
      scanf(“%d”,&Posicao);
      Posicao=Posicao-1;}
      while ((Posicao<0)||(Posicao>9));
      printf(“%c”,Sequencia[Posicao]);
       
      //exibir sequencia
      for (Cont=0; Cont<=9; Cont++)
      printf(“%c”,Sequencia[Cont]);
       
      //exibir posições
      for (Cont=0; Cont<=9; Cont++)
      printf(“%d%c”,Cont+1,Sequencia[Cont]);
    • Por paulo.e.monteiro2015
      Boa noite,
       
      Possuo o seguinte array
      Array ( [0] => Array ( [0] => 564 [IdPergunta] => 564 [1] => 66 [IdQuiz] => 66 [2] => A EMS é líder no mercado farmacêutico há quantos anos? [DescricaoPergunta] => A EMS é líder no mercado farmacêutico há quantos anos? [3] => 1 [NumeroPergunta] => 1 ) [1] => Array ( [0] => 565 [IdPergunta] => 565 [1] => 66 [IdQuiz] => 66 [2] => A cada 100 medicamentos vendidos no Brasil 13 são de qual laboratório? [DescricaoPergunta] => A cada 100 medicamentos vendidos no Brasil 13 são de qual laboratório? [3] => 2 [NumeroPergunta] => 2 ) [2] => Array ( [0] => 566 [IdPergunta] => 566 [1] => 66 [IdQuiz] => 66 [2] => Qual medicamento controlado e lançamento dos Genéricos EMS é indicado para alívio de dores e possui formato de fácil deglutição? [DescricaoPergunta] => Qual medicamento controlado e lançamento dos Genéricos EMS é indicado para alívio de dores e possui formato de fácil deglutição? [3] => 3 [NumeroPergunta] => 3 ) [3] => Array ( [0] => 567 [IdPergunta] => 567 [1] => 66 [IdQuiz] => 66 [2] => Os Genéricos EMS possuem o maior portfólio do Brasil, com 195 moléculas, que atendem 96% das classes terapêuticas. Qual o número total de apresentações? [DescricaoPergunta] => Os Genéricos EMS possuem o maior portfólio do Brasil, com 195 moléculas, que atendem 96% das classes terapêuticas. Qual o número total de apresentações? [3] => 4 [NumeroPergunta] => 4 ) [4] => Array ( [0] => 568 [IdPergunta] => 568 [1] => 66 [IdQuiz] => 66 [2] => A EMS possui quantos anos de história? [DescricaoPergunta] => A EMS possui quantos anos de história? [3] => 5 [NumeroPergunta] => 5 ) [5] => Array ( [0] => 569 [IdPergunta] => 569 [1] => 66 [IdQuiz] => 66 [2] => Qual lançamento Genéricos EMS é o primeiro genérico do mercado indicado para o tratamento do Transtorno do Déficit de Atenção e Hiperatividade? [DescricaoPergunta] => Qual lançamento Genéricos EMS é o primeiro genérico do mercado indicado para o tratamento do Transtorno do Déficit de Atenção e Hiperatividade? [3] => 6 [NumeroPergunta] => 6 ) ) Preciso criar uma navegação item a item deste, para que possa dar a opção do usuário responder ao Quiz.
      Preciso muito desta ajuda pois tenho muita urgência em resolver isso. É só isso que falta para terminar o Quiz.
       
      Att.
    • Por markhosbh
      Prezados, boa tarde!
       
      Estou tendo dificuldades para transformar um retorno WebService em uma tabela HTML.
      A minha dificuldade está na seguinte condição, se fosse cabeçalho fixo bastava eu utilizar o foreach para percorrer o array e estava ok.
      Porém, a quantidade de campos do array de retorno não é fixo, aí que se encontra minha dificuldade, como fazer para ler e imprimir o cabeçalho e o conteúdo da tabela, sendo que essas informações podem variar.
       
      Exemplo:
       
      Requisição: 
      SELECT A1_COD, A1_NOME, TIPO FROM USUARIO  
      Retorno:
      [ {"A1_COD":"0093","A1_NOME":"JOAO","TIPO":"TITULAR"}, {"A1_COD":"0016","A1_NOME":"ABELARDO","TIPO":"TITULAR"}, {"A1_COD":"8586","A1_NOME":"ADRIANA","TIPO":"TITULAR"} ]  
      Array:
      Array ( [0] => Array ( [A1_COD] => 0093 [A1_NOME] => JOAO [TIPO] => TITULAR ) [1] => Array ( [A1_COD] => 0016 [A1_NOME] => ABELARDO [TIPO] => TITULAR ) [2] => Array ( [A1_COD] => 8586 [A1_NOME] => ADRIANA [TIPO] => TITULAR ) ) Quero que seja impresso em uma tabela html
       
      A1_COD A1_NOME TIPO 0093 JOAO TITULAR 0016 ABELARDO TITULAR 8586 ADRIANA TITULAR  
      Mas como informado o cabeçalho poderia variar, sendo a requisição por exemplo ser:
       
      SELECT * FROM USUARIO  
      Desde então agradeço.
    • Por MAKAVELIQUE
      Pessoal, imaginem a seguinte situação: o usuário A clica no botão enviar no mesmo instante que o usuário B, caso a ação do sql seja um comando update no mesmo campo, id=7 por exemplo e isso acontecer exatamente no mesmo instante, ocorre perca de dados? 
      <?php $update = "UPDATE br_gang SET i='$i', data= NOW() WHERE id='$id'"; $query = mysqli_query($update, $conn) or die (mysqli_error($conn)); if($update==true){ echo "<script>alert ('DADOS SALVOS COM SUCESSO, BOA SORTE!');</script>"; } ?> Se isso acontecer e ocorrer perca de dados, qual o procedimento possível para resolver o problema?
    • Por lendadomato
      Pessoal,
       
      tenho uma aplicação que funcionava há muitos anos sem problemas, mas percebi que o meu servidor atualizou o PHP 5
      para PHP 7 sem me comunicar. Tenho uma função que contém alguns arrays e essa função parou de funcionar após a atualização.
      Gostaria saber se esse conjunto de arrays funciona dessa forma no PHP 7:
      $msg = array ( 'title' => 'Novo pedido', 'body' => $endereco, 'sound' => 'default' ); $fields = array ( 'to' => $tokenempresa, 'notification' => $msg ); $headers = array ( 'Authorization: key=' . API_ACCESS_KEY, 'Content-Type: application/json' ); Não entendo muito de PHP e não sei se esse código está correto.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.