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

Colocando o código HTML dentro de uma classe


Frank K Hosaka

Pergunta

Eu tenho uma rotina no projeto que se chama pendência, que eu consegui montar em PHP em 2020.

Aqui em 2024, tentei melhorar o código, mas havia tanta rotina repetida que achei melhor usar a tecnologia da classe. Geralmente, a gente separa o código da classe do código HTML, mas hoje tentei colocar HTML dentro da classe. Ele ainda está em fase de desenvolvimento, mas ele parece funcionar:

<?php
class pendencia
{ 
    private $mysqli;

    function __construct()
    {
        $this->mysqli=new mysqli("localhost","root","","teste");
    }

    function dec($value) 
    {
        return ($value) ? number_format($value,2,',','.') : null;
    }

    function incluir($controles,$dados)
    {
        foreach($dados as $dado)
        if(!in_array($dado['docto'],$controles))
        {
            $docto=$dado['docto'];
            $lcto=$dado['lcto'];
            $this->mysqli->query("insert into tbcontacorrente (docto,lcto)
                values ($docto,$lcto)");
        }
    }

    function inicio()
    {
        $recebiveis=$this->mysqli->query("select * from tbdiario 
            where contad=130 and dia>'2023-12-31'")
            ->fetch_all(MYSQLI_ASSOC);
        $recebidos=$this->mysqli->query("select * from tbdiario
            where contac=130 and dia>'2023-12-31'")
            ->fetch_all(MYSQLI_ASSOC);
        $pagaveis=$this->mysqli->query("select * from tbdiario
            where contac=211 and dia>'2023-12-31'")
            ->fetch_all(MYSQLI_ASSOC);
        $pagos=$this->mysqli->query("select * from tbdiario
            where contad=211 and dia>'2023-12-31'")
            ->fetch_all(MYSQLI_ASSOC);
        $controles=array_column($this->mysqli->query("select docto from tbcontacorrente")
            ->fetch_all(MYSQLI_NUM),0);
        $this->incluir($controles,$recebiveis);
        $this->incluir($controles,$recebidos);
        $this->incluir($controles,$pagaveis);
        $this->incluir($controles,$pagos); 
        $controles=$this->mysqli->query("select * from tbcontacorrente
            left join tbpessoa on tbpessoa.codp = tbcontacorrente.codp 
            join tbdiario on tbdiario.docto = tbcontacorrente.docto 
            where pgto=0 order by vcto")
            ->fetch_all(MYSQLI_ASSOC);
        $totalReceber=0;
        
    ?>

    <style>td {white-space: nowrap} </style>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" 
        rel="stylesheet"> 
    <table class='table table-striped table-sm m-auto' style=width:500px>
        <tr class=fw-semibold><td>Vencimento<td>Docto<td>Lcto
            <td class=text-end>Valor<td>Cliente<td>Histórico
        <?php 
         foreach($controles as $c): 
            $hist=date('d/m/y',strtotime($c['dia']))." ".$c['hist'];
            $totalReceber+=$c['valor'];
        ?>
        <tr><td><input type=date value='<?=$c['vcto']?>'>
            <td><?=$c['docto']?><td><?=$c['lcto']?>
            <td class=text-end><?=$this->dec($c['valor'])?>
            <td><?=$c['pessoa']?><td><?=$hist?>
        <?php endforeach; ?>
    <tr class=fw-semibold><td colspan=3>Total a receber<td colspan=3><?=$this->dec($totalReceber)?>
    </table>

    <?php
    }
}
(new pendencia)->inicio();

/* mysql
CREATE TABLE `tbdiario` (
  `docto` mediumint NOT NULL AUTO_INCREMENT,
  `dia` date DEFAULT NULL,
  `hist` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `lcto` mediumint DEFAULT NULL,
  `contad` mediumint DEFAULT NULL,
  `contac` mediumint DEFAULT NULL,
  `valor` decimal(13,2) DEFAULT NULL,
  PRIMARY KEY (`docto`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
insert into tbdiario (dia,hist,lcto,contad,contac,valor) values 
('2024-09-23','Magazine Luiza',1,130,304,12.00), ('2024-09-24','Mappin',2,130,304,500.00)

CREATE TABLE `tbcontacorrente` (
  `docto` mediumint NOT NULL,
  `vcto` date DEFAULT NULL,
  `pgto` int DEFAULT '0',
  `codp` mediumint DEFAULT NULL,
  `lcto` mediumint DEFAULT NULL,
  PRIMARY KEY (`docto`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

CREATE TABLE `tbpessoa` (
  `codp` int NOT NULL AUTO_INCREMENT,
  `pessoa` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `cnpj` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `end` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `tel` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `nota` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `updated_at` datetime NOT NULL,
  `vinculo` tinyint NOT NULL,
  PRIMARY KEY (`codp`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

*/

 

Captura de tela 2024-09-13 230953.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,3k
×
×
  • Criar Novo...