-
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.
-