Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

srmacedo

Facilidade na hora de se comunicar com banco de dados

Recommended Posts

Gostaria de compartilhar com vocês uma biblioteca responsável por se comunicar com seu banco de dados.

Acredito que a grande maioria tem problemas na hora de fazer o velho crud.

  • Funções complexas
  • Métodos grandes
  • Excesso de bindValue
  • Trabalho extra

 

Mais informações sobre a biblioteca estará no próprio readme.

https://github.com/devmacedo/norme

 

 

Prev:

Para eu buscar um usuário de um id especifico basta eu usar:

$user->find(1)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pessoal e obrigado williams, pela recomendação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Rubens Ferreira de Couto
      Prezados Senhores,
      pelo codigo abaixo descrito consigo buscar na base de dados o que preciso, porém quando insiro em uma função a mesma consulta SQL, não me retorna os dados da mesma forma que diretamente na página porque a consulta só retorna 1 linha.
      ==primeiro codigo==
      require_once('config/dbconfig.php');
          include "functions.php";
          $contapd = 1;
          $mes = 2;
          $ano = 2015;
          $tipo = 1;
          $data_i = "2020-01-02";
          $data_f = "2020-01-18";    
          $pdo = new Database();
          $db = $pdo->dbConnection();
          
          //$stmt = $db->prepare("SELECT * FROM lc_movimento WHERE idconta='$contapd' and mes='$mes_hoje' and ano='$ano_hoje'");
          //$stmt = $db->prepare("SELECT * FROM lc_movimento WHERE month(datamov)='$mes_hoje' and year(datamov)='$ano_hoje' and idconta='$contapd'");
          $stmt = $db->prepare("SELECT idconta, DATE_FORMAT(datamov,'%m/%Y') AS ref, DATE_FORMAT(datamov,'%m') AS mes, DATE_FORMAT(datamov,'%Y') AS ano,
                              SUM(IF(tipo = 0, valor, 0)) AS debito,
                              SUM(IF(tipo = 1, valor, 0)) AS credito,
                              (SELECT SUM(IF(tipo = 1, valor, -valor)) FROM lc_movimento AS L2
                              WHERE DATE_FORMAT(lc_movimento.datamov,'%Y%m') >=
                              DATE_FORMAT(L2.datamov,'%Y%m') and
                              idconta = lc_movimento.idconta) AS saldo
                              FROM lc_movimento WHERE idconta =:contapd and mes=:mes and ano=:ano
                              GROUP BY idconta, MONTH(datamov), YEAR(datamov) ORDER BY YEAR(datamov), MONTH(datamov);");
          $stmt->bindparam(':contapd', $contapd );
          $stmt->bindparam(':mes', $mes );
          $stmt->bindparam(':ano', $ano );
          $stmt->execute();
          $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
          
          foreach($result as $linha){
              ?>
              <table border="1">
                  <th>Conta</th>
                  <th>Ref</th>
                  <th>Mes</th>
                  <th>Ano</th>
                  <th>Saldo Ant.</th>
                  <th>Debito</th>
                  <th>Credito</th>
                  <th>Saldo</th>
                  <tr>
                      <td><?php echo $linha['idconta']; ?> </td>
                      <td><?php echo $linha['ref']; ?> </td>
                      <td><?php echo $linha['mes']; ?> </td>
                      <td><?php echo $linha['ano']; ?> </td>
                      <?php $anterior = $linha['saldo'] + $linha['debito'] - $linha['credito']; ?>
                      <td><?php echo formata_dinheiro($anterior); ?> </td>
                      <td><?php echo formata_dinheiro($linha['debito']); ?> </td>
                      <td><?php echo formata_dinheiro($linha['credito']); ?> </td>
                      <td><?php echo formata_dinheiro($linha['saldo']); ?> </td>
                  </tr>
              </table>
          <?php     
           }
      ?>
      == desta forma está retornando corretamente ==
      Já dentro da função não retorna. Os dados de conexão da função estão corretos porque outras funções já estão retornando os dados.
      =========================== função saldo anterior ========================================================
      // FUNÇÃO PARA RETORNAR OS SALDO ANTERIOR, ENTRADAS, SAIDAS E SALDO ATUAL DO MÊS E ANO SELECIONADOS
          public function dados_saldo($idconta, $mes_hoje, $ano_hoje )
          {
              try
              {
                  $stmt = $this->conn->prepare("SELECT idconta, DATE_FORMAT(datamov,'%m/%Y') AS data, DATE_FORMAT(datamov,'%m') AS mes, DATE_FORMAT(datamov,'%Y') AS ano, SUM(IF(tipo = 0, valor, 0)) AS debito, SUM(IF(tipo = 1, valor, 0)) AS credito,(SELECT SUM(IF(tipo = 1, valor, -valor)) FROM lc_movimento AS L2 WHERE DATE_FORMAT(lc_movimento.datamov,'%Y%m') >=DATE_FORMAT(L2.datamov,'%Y%m') and idconta = lc_movimento.idconta) AS saldo FROM lc_movimento WHERE idconta =:contapd and mes=:mes and ano=:ano GROUP BY idconta, mes, ano ORDER BY ano, mes;");
                  $stmt->execute(array(
                  ':contapd'=>$idconta,    
                  ':mes'=>$mes_hoje,
                  ':ano'=>$ano_hoje));
                  
                  $result=$stmt->fetch(PDO::FETCH_ASSOC);
                  
                  return $result['data'];
              }
              catch(PDOException $e)
              {
                  echo $e->getMessage();
              }
          }
       
      O que está dando errado?
    • Por Fábio BN
      Olá pessoal.

      Preciso fazer um Select Count, e um Setect Count com Group By numa tabela para pegar a quantidade total de registros.
      Exemplo:
       
      $estoque = "1" $var_total_geral=$pdo->prepare("select count(categoria) from loja_virtual WHERE estoque=:estoque"); $var_total_geral->bindValue(":estoque",$estoque); $var_total_geral->execute(); Depois preciso pegar e exibir a quantidade total  do código acima, porém tem algum erro acima e não sei qual comando usar para exibir a quantidade total.

      Depois preciso fazer outros select agrupado, onde eu preciso saber as quantidade de registros de cada categoria.
      Exemplo:
      Categoria 1 ( 40 Registros )
      Categoria 2 ( 32 Registros )
      Categoria 3 ( 18 Registros )

      Tentei isso abaixo:
      $var_quantidades=$pdo->prepare("select count(categoria) as total from loja_virtual WHERE estoque=:estoque group by categoria" ); $var_quantidades->bindValue(":estoque",$estoque); $var_quantidades->execute(); Como eu faço esse código acima funcionar e como exibo as quantidade agrupadas?

      Se alguém puder me ajudar, Obrigado!
       
      Fábio.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.