Ir para conteúdo

Arquivado

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

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"];

 

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

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por vicente386
      Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ?
      estou tentando fazer assim:
      <?php > ini_set('max_execution_time', 2000); $pdo = new > DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD); > $sql = $pdo->prepare("SELECT count(*) FROM tabela2018"); > $sql->execute(); > $livro = 1; > foreach($sql as $obj){ > $variavel = $obj[0]; > ceil((float)$variavel/100); > $qtdlaco = ceil((float)$variavel/100); > for ($id = 1; $id <= 35; $id++) { > for($L=1; $L < $qtdlaco; $L++) { > for ($P = 0; $P <= 30; $P++) { > $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id"); > $sql->bindValue(':LIVRO', $livro); > $sql->bindValue(':POS', $P); > $sql->bindValue(':PAGINA', $L); > $sql->execute(); > } > } > } >} ?> mas na tebela so aparece: LIVRO POS PAGINA 1 30 83 1 30 83 1 30 83 e nao como deveria : LIVRO POS PAGINA 1 0 1 1 1 1 1 2 1
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

×

Informação importante

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