O seguinte código coloca todos os arquivos no diretório raiz, as definições e a conexão foram colocadas no arquivo Controle, e foi utilizado o prefixo v para todos os arquivos que contém os formulários em HTML.
arquivo /Astudy/Controle.php
<linkhref="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"rel="stylesheet"><divstyle=height:20px></div><?php
date_default_timezone_set('America/Sao_Paulo');defined('HOST')|| define('HOST','localhost');defined('DBNAME')|| define('DBNAME','teste');defined('USER')|| define('USER','root');defined('PASSWORD')|| define('PASSWORD','');
spl_autoload_register(function($classe){
$arquivo = $classe .'.php';if(file_exists($arquivo)){
require_once $arquivo;return;}thrownewException("Erro ao carregar a classe '{$classe}'. Arquivo não encontrado.$arquivo");});function dec($value){if($value==null){returnnull;}return number_format($value,2,',','.');}function deca($num){
$value=str_replace(".","",$num);return str_replace(",",".",$value);}function fmt($date){return date('d/m/y',strtotime($date));}function pvenda($custo,$margem){
$calculo=intval($custo*(1+$margem/100)*100)/100;
$fracao=$calculo-intval($calculo);if($fracao <0.09){
$pvenda=intval($calculo);}else{if($fracao <=0.59){
$pvenda=intval($calculo)+0.5;}else{
$pvenda=intval($calculo)+1;}}return dec($pvenda);}function view($arquivo, $array =null){if(!is_null($array)){foreach($array as $var => $value){
${$var}= $value;}}
ob_start();
include $arquivo .".php";
ob_flush();}classControle{privatestatic $pdo;publicstaticfunction instancia(){if(!self::$pdo){self::$pdo=new PDO("mysql:host=".HOST.";dbname=".DBNAME,USER,PASSWORD);}returnself::$pdo;}functionselect($sql){
$stmt=$this->instancia()->query("select $sql");return $stmt->fetchAll(PDO::FETCH_OBJ);}function insert($sql){return $this->instancia()->query("insert into $sql");}functiondelete($sql){return $this->instancia()->query("delete $sql");}function update($sql){return $this->instancia()->query("update $sql");}}
arquivo /Astudy/ControleOrcamento.php
<?php
classControleOrcamentoextendsControle{publicfunction alteraQt(){
$qt=$_POST['alteraQt'];
$id=$_POST['id'];
$ped=$_POST['ped'];
$unitario=$_POST['unitario'];
$subtotal=$qt*$unitario;
$this->update("tbhistped set qt=$qt, subtotal=$subtotal where id=$id");
$total=$this->select("sum(subtotal) as total from tbhistped where ped=$ped")[0]->total;
$this->update("tbpedido set total=$total where ped=$ped");return $this->inicio($ped);}publicfunction excluir($id){
$pedido=$_GET['pedido'];
$this->delete("from tbhistped where id=$id");
$total=$this->select("sum(subtotal) as total from tbhistped where ped=$pedido")[0]->total;
$this->update("tbpedido set total=$total where ped=$pedido");return $this->inicio($pedido);}publicfunction historico($hist =null){
$where="";if($hist){
$ped=$_GET['referencia']+$hist;
$where="where ped <= $ped";}
$pedidos=$this->select("* from tbpedido $where order by ped desc limit 15");return view('vHistorico',['pedidos'=>$pedidos]);}publicfunction incluirProduto($codprod){
$pedido=$_GET['pedido'];return $this->inicio($pedido,$codprod);}publicfunction incluirQt(){
$qt=deca($_POST['qt']);
$ped=$_POST['ped'];
$codprod=$_POST['codprod'];
$unitario=str_replace(",",".",$_POST['venda']);
$un=$_POST['un'];
$subtotal=$qt*$unitario;
$this->insert("tbhistped (ped,codprod,un,unitario,subtotal,qt)
values ($ped,$codprod,'$un',$unitario,$subtotal,$qt)");
$total=$this->select("sum(subtotal) as total from tbhistped where ped=$ped")[0]->total;
$this->update("tbpedido set total=$total where ped=$ped");return $this->inicio($ped);}publicfunction inicio($pedido =null, $codprod =null){if($pedido){
$pedido=$this->select("* from tbpedido where ped=$pedido")[0];}else{
$ultimo=$this->select("max(ped) as ultimo from tbpedido")[0]->ultimo;
$pedido=$this->select("* from tbpedido where ped=$ultimo")[0];}if($codprod){
$vr['codprod']=$codprod;
$produto=$this->select("* from tbprod where codprod=$codprod")[0];
$vr['prod']=$produto->prod;
$vr['venda']=$produto->venda;
$vr['un']=$produto->un;}else{
$vr['codprod']=null;
$vr['prod']=null;
$vr['venda']=null;
$vr['un']=null;}
$vr['ped']=$pedido->ped;
$vr['diaped']= $pedido->dia;
$vr['total']= $pedido->total;
$vr=json_decode(json_encode($vr));
$histped=$this->select("* from tbhistped
join tbprod on tbprod.codprod = tbhistped.codprod
where ped=$vr->ped");return view('vOrcamento',['vr'=>$vr,'histped'=>$histped]);}publicfunction novoPedido(){
$pedido=$this->select("* from tbpedido order by ped desc")[0];
$ped=$pedido->ped;
$total=$pedido->total;if($total!==null){
$ped++;
$dia=date('Y-m-d');
$this->insert("tbpedido (ped,dia) values ($ped,'$dia')");}return $this->inicio($ped);}publicfunction produto(){
$pedido=$_POST['pedido'];
$produtos=$this->select("* from tbprod order by prod limit 15");return view('vProduto',['produtos'=>$produtos,'pedido'=>$pedido]);}}
arquivo /Astudy/ControleProduto.php
<?php
classControleProdutoextendsControle{publicfunction procurarProduto(){
$procura=$_POST['procura'];
$pedido=$_POST['pedido'];
$criterio=str_replace(" ","%",$procura);
$produtos=$this->select("* from tbprod where prod like '%$criterio%' order by prod");return view('vProduto',['produtos'=>$produtos,'pedido'=>$pedido]);}publicfunction selecionado($codprod){
$pedido=$_GET['pedido'];return header("location:?ControleOrcamento.incluirProduto.$codprod&pedido=$pedido");}}
arquivo /Astudy/index.php
<?php
require('Controle.php');
$rota='ControleOrcamento_inicio';if($_GET){if(strpos(key($_GET),"_")==0){exit;}
$rota=isset($_GET)? key($_GET): $rota;}
$segmentos=explode('_',$rota);
$nomeControle=$segmentos[0]??'ControleOrcamento';
$metodo=$segmentos[1]??'inicio';
$parametro=$segmentos[2]??null;
$controle=new $nomeControle();
$controle->$metodo($parametro);
arquivo /Astudy/mysql.txt
CREATE TABLE `tbhistped`(`ped`int DEFAULT NULL,`codprod`int DEFAULT NULL,`un` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`unitario`float DEFAULT NULL,`subtotal`float DEFAULT NULL,`id`int NOT NULL AUTO_INCREMENT,`qt`float DEFAULT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=13063 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
CREATE TABLE `tbpedido`(`ped`int NOT NULL AUTO_INCREMENT,`total`float DEFAULT NULL,`dia` date DEFAULT NULL,`codp` mediumint DEFAULT NULL,`horavenda` datetime DEFAULT NULL,`vendido` date DEFAULT NULL,`dinheiro`float DEFAULT NULL,`troco`float DEFAULT NULL,`cartao` tinyint DEFAULT NULL,`pix` tinyint DEFAULT NULL,`bling`int DEFAULT NULL,
PRIMARY KEY (`ped`)) ENGINE=InnoDB AUTO_INCREMENT=5825 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
CREATE TABLE `tbprod`(`codprod` mediumint NOT NULL AUTO_INCREMENT,`un` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'un',`prod` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`custo`decimal(13,2) DEFAULT NULL,`marg`decimal(5,2) DEFAULT NULL,`codbar` varchar(29) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`loc` varchar(14) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '""',`emb`float DEFAULT NULL,`cf` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`codforn` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`estoque`float DEFAULT NULL,`origem`int NOT NULL DEFAULT '0',`vazio` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`venda`decimal(13,2) DEFAULT NULL,
PRIMARY KEY (`codprod`)) ENGINE=InnoDB AUTO_INCREMENT=2288 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
arquivo /Astudy/vHistorico.php
<?php $referencia = $pedidos[0]->ped;?><tableclass='table table-striped table-sm w-25 m-auto'><thstyle=width:20px>Dia
<thstyle=width:40px><divstyle="display:flex;width:30px;margin-right:15px">
<a href="?ControleOrcamento.historico.-14&referencia=<?=$referencia?>"><</a>
<ahref="?ControleOrcamento.inicio">Ped</a>
<a href="?ControleOrcamento.historico.14&referencia=<?=$referencia?>" >></a></div><thclass=text-end>Total
<?php foreach($pedidos as $ped):?><tr><td><?=date('d/m/y',strtotime($ped->dia))?><tdclass=text-end><a href=?ControleOrcamento.inicio.<?=$ped->ped?>><?=$ped->ped?></a><tdclass=text-end><?=dec($ped->total)?><?php endforeach;?>
arquivo /Astudy/vOrcamento.php
<tableclass='table table-striped table-sm w-50 m-auto pt-3'><trclass="fw-semibold align-middle"style=height:40px><td>Produto <ahref=?ControleOrcamento.historico>Historico</a><ahref="?ControleOrcamento.novoPedido">Novo</a><spamclass=text-danger>Pedido <?=$vr->ped?> de <?=fmt($vr->diaped)?></spam><tdclass=text-end>Qt<td>Un<td>Preço<tdclass=text-end>Total
<?php foreach($histped as $item):?><tr><td><?=$item->prod?><tdclass=text-end><formclass='m-0'action=?ControleOrcamento.alteraQtmethod=post><?php if($item->qt==intval($item->qt)):?>
<input name=alteraQt value='<?=$item->qt?>' onchange=submit() size=1
style=text-align:right;border:none;background:transparent>
<?php else:?>
<input name=alteraqQt value='<?=dec($item->qt)?>' onchange=submit() size=1
style=text-align:right;border:none;background:transparent>
<?php endif;?>
<input type=hidden name=id value=<?=$item->id?>>
<input type=hidden name=ped value=<?=$item->ped?>>
<input type=hidden name=unitario value=<?=$item->unitario?>>
</form><td><a href=?ControleOrcamento.excluir.<?=$item->id?>&pedido=<?=$item->ped?>><?=$item->un?></a><tdclass=text-end><?=dec($item->unitario)?><tdclass=text-end><?=dec($item->subtotal)?><?php endforeach;?><tr><?php if($vr->prod==""):?><td><formaction=?ControleOrcamento.produtomethod=postclass=m-0><inputtype=submitvalue="Selecione um produto"autofocus>
<input type=hidden name=pedido value=<?=$vr->ped?>>
</form><?php else:?><td><?=$vr->prod?><?php endif;?><?php if(isset($_GET['pedido'])):?><tdclass=text-end><formaction=?ControleOrcamento.incluirQtmethod=postclass=m-0><inputid=qtname=qtonchange=submit()size=1placeholder=qtautofocus>
<input type=hidden name=ped value="<?=$vr->ped?>">
<input type=hidden name=codprod value="<?=$vr->codprod?>">
<input type=hidden name=venda value="<?=$vr->venda?>">
<input type=hidden name=un value="<?=$vr->un?>">
</form><td><?=$vr->un?><tdclass=text-end><?=$vr->venda?><td><?php else:?><td><td><td><td><?php endif;?><trclass=fw-semibold><td><td><td><td>Total<tdclass=text-end><?=dec($vr->total)?></table>>
arquivo /Astudy/vProduto.php
<tableclass='table table-striped table-sm w-50 m-auto'><tr><td><td><formaction="?ControleProduto.procurarProduto"method=postclass=m-0><inputname=procurasize=40onchange=submit()autofocus>
<input type=hidden name=pedido value=<?=$pedido?>>
</form><td><trclass=fw-semibold><td>Cód<td>Descrição dos Produtos<td>Venda
<?php foreach($produtos as $prod):?><tr><tdclass=text-end>
<a href='?ControleProduto.selecionado.<?=$prod->codprod?>&pedido=<?=$pedido?>'>
<?=$prod->codprod?></a><td><?=$prod->prod?><tdclass=text-end><?=pvenda($prod->custo,$prod->marg)?><?php endforeach;?>
Pergunta
Frank K Hosaka
O seguinte código coloca todos os arquivos no diretório raiz, as definições e a conexão foram colocadas no arquivo Controle, e foi utilizado o prefixo v para todos os arquivos que contém os formulários em HTML.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.