Update com Foreach
Pessoal,
Estou criando um formulário que atualizar os valores de custo e venda do produto conforme o critério de busca do usuário.
Veja o formulário de busca:
<?php
#Arquivo de funções *************************************
require_once("verifica.php");
include_once("conexao/bdinc.php");
#********************************************************
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$ajuste_preco = $_GET['percentual'];
$criterio = $_GET['criterio'];
$busca = $_GET['busca'];
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Relatorio de Fornecedores</title>
<script type="text/javascript">
function mudar(x,y){
x.style.backgroundColor=y;
}
//-->
</script>
</head>
<body>
<table width="100%" cellspacing="1" cellpadding="0" bgcolor="#000000">
<tr>
<td width="100%" bgcolor="#E1E1E1">
<form name="con_ajuste_preco_produto" method="post" action="cad_ajuste_preco_venda.php">
<table border="1" width="100%" cellpadding="0" class="tabela">
<br>
<tr align="center" class="cabecalho">
<td width = "5%"><label><b>Selecao</b></label></td>
<td width = "8%"><label><b>Cod. Produto</b></label></td>
<td width = "30%"><label><b>Nome Produto</b></label></td>
<td width = "8%"><label><b>Preço Custo</b></label></td>
<td width = "8%"><label><b>Margem Seguraça</b></label></td>
<td width = "8%"><label><b>Preço Venda</b></label></td>
<td width = "15%"><label><b>Preço Custo Ajustado</b></label></td>
<td width = "15%"><label><b>Preço Venda Ajustado</b></label></td>
<td width = "5%"><label><b>Data Inclusão</b></label></td>
</tr>
<?php
// Pegar o criterio para o SQL da consulta
$sql1 = "SELECT cod_produto,descricao,preco_custo,lucratividade,preco_venda,date_format(data_inclusao, '%d/%m/%Y')
FROM produto
WHERE cod_produto LIKE '".$busca."'
ORDER BY data_inclusao DESC,cod_produto,descricao";
$sql2 = "SELECT cod_produto,descricao,preco_custo,lucratividade,preco_venda,date_format(data_inclusao, '%d/%m/%Y')FROM produto
WHERE descricao LIKE '".$busca."%'
ORDER BY data_inclusao DESC,cod_produto,descricao";
$sql3 = "SELECT cod_produto,descricao,preco_custo,lucratividade,preco_venda,date_format(data_inclusao, '%d/%m/%Y')FROM produto
ORDER BY cod_produto,descricao";
// Seleciona no banco de dados com o LIMIT indicado pelos números acima
switch ($criterio) {
case 1:
$criterio = $sql1;
break;
case 2:
$criterio = $sql2;
break;
case 3:
$criterio = $sql3;
break;
default;
$criterio = $sql3;
break;
}
$res = mysqli_query($con,$criterio);
$Cor = "";
//VERIFICA A QUANTIDADE DE REGISTROS RETORNADOS
$registros = mysqli_num_rows($res);
if($registros > 0){
$valor = $ajuste_preco;
while ($linha = mysqli_fetch_array($res)){
if ($Cor == "#FFFFFF") $Cor = "#ECF2F8"; else $Cor = "#FFFFFF";
$preco_custo_ajustado = $linha[2] * (1 + ($valor/100));
$preco_venda_ajustado = $preco_custo_ajustado * (1 + ($linha[3]/100));
echo " <tr bgcolor='" . $Cor . "' onmouseover=\"mudar(this,'#FFE2CC');\" onmouseout=\"mudar(this,'" . $Cor . "');\">";
echo " <td class='tabela'><input type='checkbox' name='produto[]' value='$linha[0]' checked ='true'></td>";
echo " <td class='tabela'>$linha[0]</td>";
echo " <td style='text-align:left' class='tabela'>$linha[1]</td>";
echo " <td style='text-align:right;color:red' class='tabela'>$linha[2]</td>";
echo " <td align ='right' class='tabela'>$linha[3]</td>";
echo " <td style='text-align:right;color:blue' class='tabela'>$linha[4]</td>";
echo " <td style='text-align:right;color:red' class='tabela'><input type='text' name='produto[]' readonly='true' value=".number_format($preco_custo_ajustado, 2, ',', '.')."></td>";
echo " <td style='text-align:right;color:blue' class='tabela'><input type='text' name='produto[]' readonly='true' value=".number_format($preco_venda_ajustado, 2, ',', '.')."></td>";
echo " <td style='text-align:right' class='tabela'>$linha[5]</td>";
echo "</tr>";}//fecha if while
}//fecha if
else {
echo "<b>Não existe(em) entrada(s) para o critério de busca !<b>";
}//fecha else
?>
<tr>
<td><input type="submit" value="Atualizar" class="botao"></td>
</tr>
</table>
</td>
</tr>
<?php
mysqli_close($con);
?>
</table>
<p align=right><font face=Arial size=1><a href="index.php" title="Retornar"><< Retornar</a></p>
</form>
</body>
</html>
Agora veja o código que estou fazendo para atualizar os valores:
<?phpFunção para conectar o banco de dados
include("verifica.php");
include("conexao/bdinc.php");Fim da conexão
?>
<!DOCTYPE html>
<HTML>
<html lang="pt-br">
<HEAD>
<TITLE>FORMULÁRIO DE ANÁLISE CONTÁBIL</TITLE>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</HEAD>
<BODY>
<?php
$produtos = isset($_POST['produto']) ? $_POST['produto'] : '';
$valores[] = array_chunk($produtos, 3, true);
// verifica se a PERMISSÃO ja está cadastrada...
foreach ($valores as $id => $produto) {
$cod_prod = intval($produto[0][0]);
$preco_custo_ajustado = str_replace(",",".",$produto[0][1]);
$preco_venda_ajustado = str_replace(",",".",$produto[0][2]);
// INICIO - SQL DO FORMULÁRIO
$up_produto = ("UPDATE produto SET preco_custo = '$preco_custo_ajustado', preco_venda = '$preco_venda_ajustado' WHERE cod_produto = $cod_prod");
// FIM - SQL DO FORMULÁRIO
// INICIO - EXECUÇÃO DO COMANDO SQL e APAGANDO A SESSION
if (!mysqli_query($con,$up_produto))
{
die('Error: ' . mysqli_error($con));
}// FIM - EXECUÇÃO DO COMANDO SQL
}// Fecha o if foreach
echo "<script language=JavaScript> window.alert('O produto foi alterado com sucesso !'); </script>";
echo "<script>window.location = 'movimentos.php?mov=ajuste_preco_produto'</script>";
?>
</BODY>
</HTML>
Agora veja como esta saindo o array:
Array
(
[0] => Array
(
[0] => 5450
[1] => 24,48
[2] => 36,71
)
[1] => Array
(
[3] => 5451
[4] => 26,93
[5] => 40,40
)
[2] => Array
(
[6] => 1824
[7] => 7,13
[8] => 10,69
)
[3] => Array
(
[9] => 1828
[10] => 14,57
[11] => 21,86
)
[4] => Array
(
[12] => 1829
[13] => 16,30
[14] => 24,44
)
[5] => Array
(
[15] => 1830
[16] => 15,50
[17] => 23,25
)
[6] => Array
(
[18] => 1831
[19] => 15,99
[20] => 23,99
)
[7] => Array
(
[21] => 1835
[22] => 16,40
[23] => 24,60
)
[8] => Array
(
[24] => 1838
[25] => 6,96
[26] => 10,44
)
[9] => Array
(
[27] => 1855
[28] => 9,65
[29] => 14,47
)
[10] => Array
(
[30] => 2319
[31] => 13,23
[32] => 19,85
)
[11] => Array
(
[33] => 3335
[34] => 4,56
[35] => 6,84
)
[12] => Array
(
[36] => 3577
[37] => 22,50
[38] => 33,75
)
[13] => Array
(
[39] => 4275
[40] => 7,25
[41] => 10,87
)
)
Mas quando clico em atualizar somente grava no banco de dados o primeiro dado:
(
[0] => 5450
[1] => 24,48
[2] => 36,71
)
Alguém sabe me informar como fazer para percorrer todas as linhas no foreach?Discussão (2)
Carregando comentários...