Ir para conteúdo
Fórum Script Brasil
  • 0

PHP: Calculando o custo de 1/4 da melancia


Frank K Hosaka

Pergunta

<?php // multiplo.php
include("menu.php");
function dec($num) {if (empty($num)) {$fmt="";} else {$fmt = number_format($num,2,',','.'); return $fmt;}} 
$codprod = $_GET['codprod'] ?? null;
$mysqli=new mysqli("localhost","root","","diario");

if ($codprod==225) {
	echo "<a href=multiplo.php?com=atualiza>Atualizar produtos vinculados</a>"; exit;}
	
// Atualiza os produtos vinculados
if (isset($_GET['com'])) {
	echo "<table><tr><th><th>";
	$query=$mysqli->query("select * from vw_multiplo");
	while ($row=$query->fetch_assoc()){
		$codprod = $row['codprod'];
		$prod = $row['prod'];
		$json = $row['codforn']; $obj=json_decode($json);$codprod1=$obj->cod;$conv=$obj->conv;
		$query2=$mysqli->query("select * from tbprod where codprod=$codprod1");
		$linha2=$query2->fetch_assoc();
		$custo2=$linha2['custo'];
		$custo2=dec(round($custo2/$conv,2));
		$query3=$mysqli->query("update tbprod set custo=$custo2 where codprod=$codprod");
		echo "<tr><td>$codprod<td>$prod<td align=right>$custo2";}
	echo "</table>";
	mysqli_close($mysqli);
	exit;}

Eu levei meia hora para fazer o código que calcula o custo de um produto baseado no custo de outro produto, mas aqui eu preciso agradecer ao Forum Script Brasil, em particular o Iowys e o Wash, que me ensinaram como criar um modal, como usar o Json e como atualizar o PHP para a versão 8.

Eu gostei do PHP 8, ele não só mostra onde você errou mas também mostra a parte da listagem do código onde ele encontrou o erro. No meu caso, ele reclamou que eu abuso demais das funções que uso de maneira irregular (foi assim que traduzi "deprecated"), mas ao invés de estudar lógica de programação, eu preferi fazer a minha gambiarra - só assim você vai entender a função "dec" (decimal) que aparece no topo da listagem.

Vamos ao que interessa. Uma melancia (código 123) custa R$ 4,00. Logo, 1/4 de melancia (codigo 5717) custa R$ 1,00. Ao invés de criar uma tabela para informar ao PHP qual produto está vinculado ao outro, eu pedi para o MySQL criar uma consulta com essa informação, eu chamei de vw_multiplo.

No produto do código 123 eu tenho o campo codforn, onde eu tenho o código do produto do fornecedor que pretendo usar no meu pedido de compra. Essa é uma informação valiosa, é o único jeito que eu encontrei para o fornecedor não me mandar chuchu no lugar da melancia.

Já o codforn do produto 5717 eu coloquei o Json, assim {"cod":123,"conv":4}. Graças ao Json, o MySQL sabe quem é produto original e quem é o produto vinculado e o PHP sabe como como calcular o custo de 1/4 de melancia.

Agora, vamos aos imprevistos. E se eu precisar fazer uma promoção do tipo "melancia em dobro", nesse caso o Json ficaria assim {"cod":123,"conv":0.5}. E se eu precisar fazer uma combo tipo "melancia com chuchu"? Nesse caso, o meu código não tem como resolver isso, ele teria que ser reescrito para ver quantos Jsons tem dentro do campo codforn.

É claro que a notação Json é muito chata, mas eu consegui resolver isso lá atrás, na hora de cadastrar o produto vinculado, eu criei um input assim 

<input name=fator value={"cod":'.$codprod.',"conv":>

ou seja, quem for cadastrar só precisa colocar o fator de conversão e fechar o colchete. 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...