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

MVC: usando $_GET dentro de um view


Frank K Hosaka

Pergunta

Lá em 2020, eu usei $_GET para montar o meu orçamento em PHP.

Aqui em 2024 estou estudando o MVC, onde você separa os códigos por partes em modelo, visão e controle. O problema é que eu ainda preciso da gambiarra do $_GET para a visão funcionar (eu não sei usar o JavaScript). Para a minha sorte, acabei descobrindo que é bem mais fácil manusear o $_GET pelo MVC do que pelo PHP convencional. O código a seguir está incompleto, mas a rotina que trabalha com o $_GET já funciona:

arquivo Controles > ControleOrcamento.php
<?php

class ControleOrcamento extends Controle 
{

public function inicio()
{   
    $prod=$this->Conexao->select("* from tbprod order by prod");
    $maquina=strpos($_SERVER['HTTP_USER_AGENT'],"Windows");
    $hoje=date('Y-m-d');
    $vr=['ped'=>'','diaped'=>$hoje,'totalped'=>'','codp'=>'','pessoa'=>'',
    'end'=>'','cnpj'=>'','tel'=>'','nota'=>'','codprod'=>'','un'=>'',
    'prod'=>'','preço'=>'','horavenda'=>''];
    $where="";
    if(isset($_GET['inicio'])){
        if($_GET['inicio']=="novo"){
            $vr['ped']=$_GET['novo'];$_SESSION['ped']=$_GET['novo'];
            $histped=[];
            return $this->view('Orcamento',['vr'=>$vr,'histped'=>$histped,
                'prod'=>$prod,'maquina'=>$maquina]);}
        if($_GET['inicio']=="produto"){
            $vr['prod']=$_SESSION['prod'];
            $vr['un']=$_SESSION['un'];
            $vr['preço']=$_SESSION['preço'];}
        if($_GET['inicio']!=="novo" && $_GET['inicio']!=="produto"){
            $ped=$_GET['inicio']; $_SESSION['ped']=$ped;
            $where="where ped=$ped";
            unset($_GET['inicio']);} 
    }
    $ped=$this->Conexao->select("* from tbpedido $where order by ped desc")[0];
    $vr['ped']=$ped->ped; $_SESSION['ped']=$ped->ped;
    $vr['diaped']=$ped->dia;
    $vr['horavenda']=$ped->horavenda;
    $vr['totalped']=$ped->total;
    $vr['codp']=$ped->codp;
    if($vr['codp']){
        $pessoa=$this->Conexao->select("* from tbpessoa where codp=". $vr['codp'])[0];
        $vr['pessoa']=$pessoa->pessoa;
        $vr['end']=$pessoa->end;
        $vr['cnpj']=$pessoa->cnpj;
        $vr['tel']=$pessoa->tel;
        $vr['nota']=$pessoa->nota;}
    $histped=$this->Conexao->select("tbhistped.id,tbhistped.ped, tbhistped.codprod, 
        tbhistped.qt as qt, tbhistped.unitario as unitario, tbhistped.subtotal,
        tbprod.prod as prod, tbprod.un as un 
        from tbhistped inner join tbprod on tbhistped.codprod = tbprod.codprod
        and tbhistped.ped = $ped->ped order by tbhistped.id");
    return $this->view('Orcamento',['vr'=>$vr,'histped'=>$histped,'prod'=>$prod,'maquina'=>$maquina]);
}

public function historicoOrc()
{
    $where="";
    if(isset($_GET['historicoOrc'])){
        $ped=$_SESSION['referencia']+$_GET['historicoOrc'];
        $where="where ped <= $ped";}
    $pedidos=$this->Conexao->select("* from tbpedido left join tbpessoa on 
        tbpedido.codp = tbpessoa.codp $where order by ped desc limit 20");
    $_SESSION['referencia']=$pedidos[0]->ped;
    return $this->view('HistoricoOrc',['pedidos'=>$pedidos]);
}

public function novo()
{
    $pedido=$this->Conexao->select("* from tbpedido order by ped desc")[0];
    $ped=$pedido->ped;
    $total=$pedido->total;
    if($total!==null){$ped++;}
    return header("location:?ControleOrcamento.inicio.novo&novo=$ped");
}

public function produto()
{   
    $produto=$_POST['produto'];
    $tamanho=strlen($produto);
    $posicao=strpos($produto,":");
    if($posicao==0){
        $_SESSION['filtro']=$produto;
        $_SESSION['endereco']="Orcamento";
        return header('location:?ControleProduto.produto');}
    $_SESSION['codprod']=substr($produto,$posicao+1,$tamanho-$posicao);
    $produto=$this->Conexao->select("* from tbprod where codprod=" . $_SESSION['codprod'])[0];
    $_SESSION['prod']=$produto->prod;
    $_SESSION['un']=$produto->un;
    $_SESSION['unitario']=pvenda($produto->custo,$produto->marg);
    return header('location:?ControleOrcamento.inicio.produto');
}

public function qt()
{
    $qt=$_POST['qt'];
    $ped=$_SESSION['ped'];
    $un=$_SESSION['un'];
    $unitario=deca($_SESSION['unitario']);
    $subtotal=$qt*$unitario;
    $codprod=$_SESSION['codprod'];
    $this->Conexao->insert("tbhistped (ped,codprod,un,unitario,subtotal,qt)
        values ($ped,$codprod,'$un',$unitario,$subtotal,$qt)");
    $this->inicio();
}

}



arquivo Visoes > Orcamento.php
<?php include VISOES . 'Menu.php';?>
<script>document.title="Orçamento"
btmenu.innerHTML='Orçamento'
</script>
<table class='table table-striped'>
<td><a href=?ControleOrcamento.historicoOrc>Historico</a>
<td class=text-danger>Pedido <?=$vr['ped']?> de <?=fmt($vr['diaped'])?>
<td><a href=?ControleOrcamento.novo>Novo</a>
<?php if($maquina===13): ?>
<td><a href=controlid?pedido.<?=$vr['ped']?>>Imprimir</a>
<?php endif; ?>
</table>
<table class='table table-striped'>
	<th>Produto<th style=text-align:right>Qt<th>Un<th>Preço<th>Total
<?php foreach($histped as $item): ?>
<tr>
	<td nowrap><?=$item->prod?>
	<td class=text-end>
		<form>
		<?php if($item->qt==intval($item->qt)): ?>
			<input name=aqt value='<?=$item->qt?>' onchange=submit() size=1 
				style=text-align:right;border:none;background:transparent>
		<?php else: ?>
			<input name=aqt 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?>>
		</form>
	<td><a href=?ControleOrcamento.excluir.<?=$item->id?>&pedido=<?=$item->ped?>><?=$item->un?></a>
	<td class=text-end><?=dec($item->unitario)?>
	<td class=text-end><?=dec($item->subtotal)?>
<?php endforeach; ?>
<tr>
<?php if(!isset($_GET['inicio'])):?>
	<td>
	<form action=?ControleOrcamento.produto method=post>
	<input list=lsproduto name=produto placeholder=produto onchange=submit() size=40 autofocus>
	<datalist id='lsproduto'>
	<?php foreach($prod as $pr): ?>
	<option value='<?=$pr->prod?> :<?=$pr->codprod?>'>
	<?php endforeach; ?>
	</datalist>
	</form>
<?php else: ?>
	<td><?=$vr['prod']?>
<?php endif; ?>
<?php if(!isset($_GET['qt'])): ?>
	<td class=text-end>
	<form action=?ControleOrcamento.qt method=post>
	<input id=qt name=qt onchange=submit() size=1 placeholder=qt autofocus>
	<input type=hidden name=texto value="<?=fmt($vr['preço'])?>,<?=$vr['ped']?>,<?=$vr['un']?>">
	</form>
	<td><?=$vr['un']?><td class=text-end><?=$vr['preço']?><td>
<?php endif; ?>
<tr><td>
	<?php if(empty($vr['codp'])): ?>
		<a href=pessoa>Selecione um cliente</a>
	<?php else: ?>
		<details>
			<summary><b><?=$vr['pessoa']?></b></summary>
			Endereço <b><?=$vr['end']?></b> <br>
			CNPJ <b><?=$vr['cnpj']?></b> <br>
			Telefone <b><?=$vr['tel']?></b> <br>
			Nota <b><?=$vr['nota']?></b>  <br>
			<a href=pessoa>Mudar cliente</a> <br>
			<a href="pessoa?busca=<?=$vr['pessoa']?>">Atualizar cliente</a>
		</details>
	<?php endif; ?>
	<td><td><td><td><b><?=dec($vr['totalped'])?>
</table>

 

Captura de tela 2024-02-20 091817.png

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