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

O meu primeiro objeto no PHP


Frank K Hosaka

Pergunta

Ontem eu decidi reescrever um código que eu fiz para a entrada no estoque, baseado no código do produto do fornecedor. Era do tempo que ainda não conhecia o método POST.

Para usar o método POST eu criei um formulário genérico no menu.php com id=frmg e um input genérico com o id=inpg.

O grande problema do POST é que não dá para mandar um vetor com um monte de variáveis, assim achei melhor trabalhar com um objeto para representar um produto.

O conceito de objeto é bacana, o problema é que ele desaparece assim que você usa o método POST.

Para salvar o máximo de informação dentro do objeto, eu utilizei o recurso do SESSION.

 

<?php
include("menu.php"); //o menu.php abre uma nova sessão
function df($data) {$fmt = date('d/m/Y',strtotime($data)); return $fmt;}
function floatvalue($val){$val = str_replace(",",".",$val); $val = preg_replace('/\.(?=.*\.)/', '', $val); return floatval($val);}
$mysqli=new mysqli("localhost","root","","diario");

//criar objeto cProd se ele não existir
if (!class_exists('cProd')){
	class cProd {
		public $docto;
		public $codp;
		public $pessoa;
		public $dia;
		public $id;
		public $codprodf;
		public $codprod;
		public $prod;
		public $qt;
		public $custoatual;
		public $custototal;
		public $custoanterior;
		public function getDocto(){return this->docto;}
		public function getCodp(){return this->codp;}
		public function getPessoa(){return this->pessoa;}
		public function getDia(){return this->dia;}
		public function getId(){return this->id;}
		public function getCodprodf(){return this->codprodf;}
		public function getCodprod(){return this->codprod;}
		public function getProd(){return this->prod;}
		public function getQt(){return this->qt;}
		public function getCustoAtual(){return this->custoatual;}
		public function getCustoTotal(){return this->custototal;}
		public function getCustoAnterior(){return this->custoanterior;}
	}
	$cProd=new cProd();
	$query=$mysqli->query("select * from tbsupervariavel");
	$row=$query->fetch_assoc();
	$cProd->docto=$row['docto'];
	$cProd->codp=$row['codp'];
	$cProd->pessoa=$row['pessoa'];
	$cProd->dia=$row['dia'];
}    

//excluir item na tbentraprod
if (isset($_POST['excluir'])){
	$id=$_POST['excluir'];
    $query=$mysqli->query("delete from tbentraprod where id=$id");
	echo "<script>window.replace('astudy.php')</script>";}   

//incluir novo item na tbentraprod, depois de selecionado o produto
if (isset($_POST['incluir'])){
	$codprod=$_POST['incluir'];
	$cProd=unserialize($_SESSION['cProd']);
	$cProd->codprod=$codprod;
	$query=$mysqli->query("select * from tbprod where codprod = $codprod");
	$row=$query->fetch_assoc();
	$cProd->prod=$row['prod'];
	$cProd->custoanterior=$row['custo'];
	$cProd->custoatual=round($cProd->custototal/$cProd->qt,2);
	$sql="insert into tbentraprod (codprodf,codprod,prod,dia,docto,qt,codp,custototal,custoanterior,custoatual)
		      values ('$cProd->codprodf',$cProd->codprod,'$cProd->prod','$cProd->dia',$cProd->docto,$cProd->qt,$cProd->codp,
			  $cProd->custototal, $cProd->custoanterior, $cProd->custoatual)";
	$query=$mysqli->query($sql); 
	echo "<script>location.replace('astudy.php')</script>";}
	
//incluir novo item na tbentraprod
if (isset($_POST['codprodf'])){
	$cProd->codprodf=$_POST['codprodf'];
	$cProd->qt=floatvalue($_POST['qt']);
	$cProd->custototal=floatvalue($_POST['custototal']);
	$query=$mysqli->query("select * from tbprod where codforn like '%$cProd->codprodf%' order by prod");
	$num_rows=mysqli_num_rows($query);
	if ($num_rows==1){
		$row=$query->fetch_assoc();
		$cProd->codprod=$row['codprod'];
		$cProd->prod=$row['prod'];
		$cProd->custoatual=round($cProd->custototal/$cProd->qt,2);
		$cProd->custoanterior=$row['custo'];
		$sql="insert into tbentraprod (codprodf,codprod,prod,dia,docto,qt,codp,custototal,custoanterior,custoatual)
		      values ('$cProd->codprodf',$cProd->codprod,'$cProd->prod','$cProd->dia',$cProd->docto,$cProd->qt,$cProd->codp,
			  $cProd->custototal, $cProd->custoanterior, $cProd->custoatual)";
		$query=$mysqli->query($sql); 
		echo "<script>window.replace('astudy.php')</script>";}
	if ($num_rows==0){
		echo "<font color=red>Não há nenhum produto com o codprodf $cProd->codprodf.";
		echo "<input type=submit value=Continuar onclick=location.replace('astudy.php')>";
		exit;}
	if ($num_rows>1){
		$_SESSION['cProd']=serialize($cProd);
		echo "Há muitos produtos com codprodf $cProd->codprodf, escolha um<br><br>";
		echo "<table>";
		while ($row=$query->fetch_assoc()){
			$codprod=$row['codprod'];
			$prod=$row['prod'];
			$lcodprod="<a onclick=inpg.value=$codprod;inpg.name='incluir';frmg.submit()>$codprod</a>";
			echo "<tr><td>$lcodprod<td>$prod";}
		echo "</table>";exit;}}
	
//exibe a tbentraprod
$query=$mysqli->query("select * from tbentraprod");
echo "<br>Documento $cProd->docto de <a onclick=location.replace('diario.php')>".df($cProd->dia)."</a><br>
Fornecedor <a onclick=location.replace('pessoa.php')>$cProd->pessoa</a>
<table>
<tr><th>CodProdF<th>Produto<th>Qt<th>Total<th>Unitario<th>Anterior";
while ($linha = $query->fetch_assoc()) {
	$id=$linha['id']; 
	$codprodf = $linha['codprodf'];
	$java='inpg.value='.$id.';inpg.name="excluir";frmg.submit()';
	$codprodf="<a onclick='$java'>$codprodf</a>";
	$prod=$linha['prod'];
	$qt=dec($linha['qt']); 
	$custototal = dec($linha['custototal']);
	$custoatual = $linha['custoatual'];
	$custoanterior = $linha['custoanterior'];
	if ($custoatual>$custoanterior) {$custoatual="<font color=red>".dec($linha['custoatual']);}
	if ($custoanterior>$custoatual) {$custoanterior="<font color=red>".dec($linha['custoanterior']);}
	if ($custoatual == $custoanterior) {$custoatual = dec($custoatual); $custoanterior = dec($custoanterior);}
	$custoatual=dec($custoatual);
	$lcodprodf="<a onclick=inpg.value=$id;inpg.name='excluir';frmg.submit()>$codprodf</a>";
	echo "<tr><td>$lcodprodf<td align='left'>$prod<td align=right>$qt<td align=right>$custototal
	<td align=right>$custoatual<td align=right>$custoanterior";}

//pega um novo item          
$query = $mysqli->query("select sum(custototal) as soma from tbentraprod");
$row = $query->fetch_assoc();
$soma = dec(floatval($row['soma']));
echo "<form id=frmincluir method=post>
<tr><td><input id=codprodf name=codprodf size=5 autocomplete=off onchange=qt.focus() placeholder=codprodf>
<td></td><td><input name=qt id=qt size=2 autocomplete=off onchange=custototal.focus() placeholder=qt>
<td><input name=custototal id=custototal size=5 autocomplete=off onchange=frmincluir.submit() placeholder=custo></form>
<script>codprodf.focus()</script>
<tr><td><td><td><b>Total</b><td align=right><b>".$soma."</b><td>
<form method=post><input name='encerrar' type='submit' value='encerrar'></form></table>";

 

Sem título.png

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,4k
×
×
  • Criar Novo...