Select só exibe a ultima linha da tabela
Estou desenvolvendo um sistema para gerar arquivos de remessa para a CEF (Seguindo o padrão CNAB150) Até então tudo Okay.
Meu problema está na hora de gerar a remessa que só consta a ultima linha da respectiva tabela no Banco de dados.
Eu preciso que gere com todas as linhas que estiverem na tabela (Mais pra frente irei colocar alguns filtros para gerar por data ou por Numero de Serie)
Minha conexão com o Banco está assim:
<?php
define('SGBD', 'mysql');
define('HOST', 'localhost');
define('DBNAME', '******');
define('CHARSET', 'utf8');
define('USER', '*******');
define('PASSWORD', '******');
define('SERVER', 'linux');
class conexao {
/*
* Atributo estático de conexão
*/
private static $pdo;
/*
* Escondendo o construtor da classe
*/
private function __construct() {
//
}
/*
* Método privado para verificar se a extensão PDO do banco de dados escolhido
* está habilitada
*/
private static function verificaExtensao() {
switch(SGBD):
case 'mysql':
$extensao = 'pdo_mysql';
break;
case 'mssql':{
if(SERVER == 'linux'):
$extensao = 'pdo_dblib';
else:
$extensao = 'pdo_sqlsrv';
endif;
break;
}
case 'postgre':
$extensao = 'pdo_pgsql';
break;
endswitch;
if(!extension_loaded($extensao)):
echo "<h1>Extensão {$extensao} não habilitada!</h1>";
exit();
endif;
}
/*
* Método estático para retornar uma conexão válida
* Verifica se já existe uma instância da conexão, caso não, configura uma nova conexão
*/
public static function getInstance() {
self::verificaExtensao();
if (!isset(self::$pdo)) {
try {
$opcoes = array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
switch (SGBD) :
case 'mysql':
self::$pdo = new \PDO("mysql:host=" . HOST . "; dbname=" . DBNAME . ";", USER, PASSWORD, $opcoes);
break;
case 'mssql':{
if(SERVER == 'linux'):
self::$pdo = new \PDO("dblib:host=" . HOST . "; database=" . DBNAME . ";", USER, PASSWORD, $opcoes);
else:
self::$pdo = new \PDO("sqlsrv:server=" . HOST . "; database=" . DBNAME . ";", USER, PASSWORD, $opcoes);
endif;
break;
}
case 'postgre':
self::$pdo = new \PDO("pgsql:host=" . HOST . "; dbname=" . DBNAME . ";", USER, PASSWORD, $opcoes);
break;
endswitch;
self::$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
print "Erro: " . $e->getMessage();
}
}
return self::$pdo;
}
public static function isConectado(){
if(self::$pdo):
return true;
else:
return false;
endif;
}
}
Minhas Functions
<?php/*Campos Numéricos (“Picture 9”)
• Alinhamento: sempre à direita, preenchido com zeros à esquerda, sem máscara de edição;
• Não utilizados: preencher com zeros.
*/
function picture_9($palavra,$limite){
$var=str_pad($palavra, $limite, "0", STR_PAD_LEFT);
return $var;
}
/*
Campos Alfanuméricos (“Picture X”)
• Alinhamento: sempre à esquerda, preenchido com brancos à direita;
• Não utilizados: preencher com brancos;• Caracteres: maiúsculos, sem acentuação, sem ‘ç’, sem caracteres especiais.
*/
function picture_x( $palavra, $limite ){
$var = str_pad( $palavra, $limite, " ", STR_PAD_RIGHT );
$var = remover_acentos( $var );
if( strlen( $palavra ) >= $limite ){
$var = substr( $palavra, 0, $limite );
}
$var = strtoupper( $var );// converte em letra maiuscula
return $var;
}
function sequencial($i)
{
if($i < 10)
{
return zeros(0,5).$i;
}
else if($i > 10 && $i < 100)
{
return zeros(0,4).$i;
}
else if($i > 100 && $i < 1000)
{
return zeros(0,3).$i;
}
else if($i > 1000 && $i < 10000)
{
return zeros(0,2).$i;
}
else if($i > 10000 && $i < 100000)
{
return zeros(0,1).$i;
}
}
function zeros($min,$max)
{
$x = ($max - strlen($min));
for($i = 0; $i < $x; $i++)
{
$zeros .= '0';
}
return $zeros.$min;
}
function complementoRegistro($int,$tipo)
{
if($tipo == "zeros")
{
$space = '';
for($i = 1; $i <= $int; $i++)
{
$space .= '0';
}
}
else if($tipo == "brancos")
{
$space = '';
for($i = 1; $i <= $int; $i++)
{
$space .= ' ';
}
}
return $space;
}
?>
E Finalmente o meu Select
$conexao = conexao::getInstance();
$sql = 'SELECT * FROM RegistroE';
$stm = $conexao->prepare($sql);
$stm->execute();
$Sql = $stm->fetchAll(PDO::FETCH_ASSOC);//Já tentei usar tmb $Sql = $stm->fetchAll(PDO::FETCH_OBJ); MAS O PROBLEMA PERSISTE
foreach($Sql as $SqlReg):
$conteudo_meio=
picture_X($SqlReg->E_01,1)
.picture_X($SqlReg->E_02,25)
.picture_9($SqlReg->E_03,4)
.picture_X($SqlReg->E_04,14)
.picture_9($SqlReg->E_05,8)
.picture_9($SqlReg->E_06,8)
.picture_9($SqlReg->E_07,8)
.picture_9($SqlReg->E_08,8)
.picture_9($SqlReg->E_09,8)
.complementoRegistro(96,"brancos")
.picture_9($SqlReg->E_11,1)
.complementoRegistro(1,"brancos")
;
endforeach;
Eu preciso da ajuda para listar todos os registros e não apenas o ultimo.Discussão (2)
Carregando comentários...