Ir para conteúdo

POWERED BY:

Arquivado

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

Maurício Alcântara

[Resolvido] Gerando relatório do banco de dados com o PHP

Recommended Posts

Pessoal,

 

Eu estou tentando criar uma página em que o usuário gere um relatório em Excel para visualizar quantos estão inscritos em um curso. Aparece um erro "Parse error: parse error, expecting `T_VARIABLE' in C:\xampp\htdocs\teste\classeRelatorio.php on line 47". Por favor observe o código abaixo:

 

<?php

/*

@Autor : Dyego Fernandes de Sousa

@Date : 2005-06-16 (16/06/2005)

@Title : OO in PHP (Programação Orientada à Objetos em PHP)

@SubTitle : Bd Connect and Reports (Conexão à Banco de Dados e Relatórios)

@License : GNU (Public License)

@email : dyegofernandes@centauronet.com.br, dyegofern@hotmail.com

 

Classe para gerar Relatórios, por enquanto, estou apenas conectando ao banco SQL Server da Microsoft e

MySQL mas, logo após terminar a confecção dos tipos de relatórios irei disponibilizar conexão para

bancos Oracle, PostgreSQL e FireBird e mais algum banco de dados que eu encontrar por ai.

{

Classe to generate Reports. Only supports SQL server.

}

*/

class Relatorio{

// String para selecionar a Arquitetura do Banco de Dados (MSSQL,MYSQL,FIREBIRD,etc...)

// { String to select the DB type }

var $system;

// Host de conexão com o Banco de Dados

// { Host of the Server DB }

var $localhost;

// Nome do Banco de Dados (Exemplo: Banco_Teste)

// { Name for the DB (for example: Test_Base) }

var $propep;

// Nome do Usuário do Banco de Dados

// { Name of the User }

var $root;

// Senha do Banco de Dados

// { Password to DB }

var $****;

// Uma String de Consulta SQL

// { A SQL String }

var $sql;

// Titulo do Relatório

// { Report Title }

var $mm;

// id da conexão com O BD

// { id to the Connection }

var $conn;

// Valor inicial para o lote de registros

// { Initial value to the Record Batch }

var $qtd_lote = 1;

// Número total de Páginas do Relatório

// { Number of Report Pages }

var $paginas; é onde está o erro não consigo definir o nº de páginas

var $linhas_pagina;

 

/*

Função de Tratamento de Erros

{ Function to handle the Errors }

*/

function Erro($nerro){

switch($nerro){

case 0: {

//Erro de conexão Ao Servidor de banco de Dados

//{ Error in Server BD connection }

$msgInicio = "<div style='border:solid red 1px; background-color: beige; width: 770; color: blue; font-family: verdana; font-size:90%'><center><< <b>DFS</b> PhP - Reports >><br>";

$msgFinal = "<center></div>";

$msgCorpo = "ERRO :: <b style='color:red'>".$nerro." </b>::<br/>NÃO FOI POSSÍVEL CONECTAR AO SERVIDOR DE BANCO DE DADOS.";

$strerro = @mssql_get_last_message();

$msgCorpo .= $strerro;

$msg = $msgInicio.$msgCorpo.$msgFinal;

print($msg);

exit;

break;

}

case 1:{

//Erro de conexão Ao banco de Dados

//{ Error in the BD connection }

$msgInicio = "<div style='border:solid red 1px; background-color: beige; width: 770; color: blue; font-family: verdana; font-size:90%'><center><< <b>DFS</b> PhP - Reports >><br>";

$msgFinal = "<center></div>";

$msgCorpo = "ERRO :: <b style='color:red'> ".$nerro."</b>::<br/>NÃO FOI POSSÍVEL CONECTAR AO BANCO DE DADOS.";

$strerro = @mssql_get_last_message();

$msgCorpo .= $strerro;

$msg = $msgInicio.$msgCorpo.$msgFinal;

print($msg);

exit;

break;

}

case 2:{

//Erro de consulta

//{ Error in the query }

$msgInicio = "<div style='border:solid red 1px; background-color: beige; width: 770; color: blue; font-family: verdana; font-size:90%'><center><< <b>DFS</b> PhP - Reports >><br>";

$msgFinal = "<center></div>";

$msgCorpo = "ERRO :: <b style='color:red'>".$nerro." </b>::<br/>ERRO NA CONSULTA SQL.<br/>";

$strerro = @mssql_get_last_message();

$msgCorpo .= $strerro;

$msg = $msgInicio.$msgCorpo.$msgFinal;

print($msg);

exit;

break;

}

case 3:{

//Tipo_db foi passado em Branco ou inválido

//{ Tipo_db (Type of the DB) is invalid }

$msgInicio = "<div style='border:solid red 1px; background-color: beige; width: 770; color: blue; font-family: verdana; font-size:90%'><center><< <b>DFS</b> PhP - Reports >><br>";

$msgFinal = "<center></div>";

$msgCorpo = "ERRO :: <b style='color:red'> ".$nerro."</b>::<br/>TIPO DE BANCO DE DADOS NÃO SELECIONADO OU INVÁLIDO.";

$strerro = @mssql_get_last_message();

$msgCorpo .= $strerro;

$msg = $msgInicio.$msgCorpo.$msgFinal;

print($msg);

exit;

break;

}

}

}

/*

Essa Função conecta ao Banco de Dados. Se o usuário passar o parâmetro mssql para a classe ele se conceta

no banco de dados SQL SERVER, se ele passar o parâmetro mysql ele se conecta ao banco de dados MySQL

{

This function connects to DB. if the user pass the parameter mssql to the class, it connects in a SQL

SERVER DB, if he pass the parameter mysql it connects in a MySQL BD

}

*/

function conectaDB(){

//Teste se o Parâmetro tipo_db foi passado em branco

if(trim($this->tipo_db,'') == ''){

$this->Erro(3);

}

if(strtoupper($this->tipo_db) == 'MSSQL'){

if(!$conn = @mssql_connect($this->serv_db,$this->user_db,$this->pass_db)){

return $this->Erro(0);

}

if(!@mssql_select_db($this->nome_db,$conn)){

return $this->Erro(1);

} else {

$this->conn = $conn;

return true;

}

}

if(strtoupper($this->tipo_db) == 'MYSQL'){

$conn = @mysql_connect($this->serv_db,$this->user_db,$this->pass_db) or die ("Erro ao conectar Ao Servidor de Banco de Dados");

if(!@mysql_select_db($this->nome_db,$conn)){

return $this->Erro(2);

} else {

return true;

}

}

 

}

/*

Realiza a consulta no Banco de Dados

{ Resolve a Query in the DB }

*/

function consultaSQL(){

if(!$res = @mssql_query($this->sql,$this->conn,$this->linhas_Pagina)){

return $this->Erro(2);

} else{ for($i=1; $i < $this->qtd_lote; $i++){

@mssql_fetch_batch($res);

}

return $res;

}

}

/*

Iprime na tela a Tabela Resultante do Produto Cartesiano realizado pela Consulta SQL

{ Shows the product from SQL query with a table }

*/

function montaTabela($pagina = 1){

print($this->retTabela());

}

/*

Imprime na tela o Cabeçalho com uma imagem, ambos passados como parâmetros

*/

function cabecalho($imagem, $titulo){

$cabecalho = "<table><tr><td><img src='".$imagem."' /></td><td style='font-family:verdana;font-size:150%'>".$titulo."</td></tr></table>";

print($cabecalho);

}

/*

Conta linhas e colunas, Chama a execução da Query e retorna uma string com o HTML da tabela

Montado.

{ Count the lines and columns, call the Query execution an returns a String with the HTML for the table }

*/

function retTabela(){

$resultado2 = @mssql_query($this->sql);

$tlinhas = @mssql_num_rows($resultado2);

 

$resultado = $this->consultaSQL();

$linhas = @mssql_num_rows($resultado);

$colunas = @mssql_num_fields($resultado);

 

$paginas = ceil($tlinhas/$this->linhas_Pagina);

$this->paginas = $paginas;

 

$texto = "<table style='font-size:70%; font-family:verdana; width:950px'>\n";

$texto.= '<tr><td colspan="'.$colunas.'" align="center" style="font-family:verdada; font-size:140%"><b>'.$this->titulo.'<b></td></tr>';

for($i=-1;$i<$linhas;$i++){

if($i % 2 == 0){

$cor = 'lightblue';

} else {

$cor = '';

}

 

$texto .= "<tr style='border:solid black 1px'>\n";

for($j=0;$j<$colunas;$j++){

if($i == -1){

$texto .= '<td style="background-color:gray; color:white; border:solid blue 1px; font-size: 102%" ><b><center>'.@mssql_field_name($resultado,$j).'</center></b></td>';

} else {

if(@mssql_result($resultado,$i,@mssql_field_name($resultado,$j)) == ''){

$valor = 'NULL';

} else {

$valor = @mssql_result($resultado,$i,@mssql_field_name($resultado,$j));

if (@mssql_field_type($resultado,$j) == 'money'){

$valor = 'R$ '.number_format($valor,2,',','.');

}

}

$texto .= '<td style="background-color:'.$cor.';border:solid blue 1px" >'.$valor.'</td>';

}

}

$texto .= '</td>';

if($colunas == $j){

$texto .= "\n</tr>\n";

}

}

$texto .= "\n</table>\n";

$texto .= "\n<table style='font-size:70%; font-family:verdana; width:950px'>\n";

$texto .= "\n<tr><td align='right'>Página <b>".$this->qtd_lote."</b> de <b>".$this->paginas."</b></td></tr>\n";

$texto .= "\n</table>\n";

return $texto;

}

 

function RetQtdlote(){

return $this->qtd_lote;

}

 

/*

Construtor {Constructor}

*/

function Relatorio($tipo_db,$serv_db,$nome_db,$user_db,$pass_db,$sql,$titulo,$linhas_pagina=20,$lote=1){

$this->tipo_db = $tipo_db; // Atribui os Valores { set the values what

$this->serv_db = $serv_db; // Passados por parâmetro are passed with parameter

$this->nome_db = $nome_db; // para a nova to the new instance

$this->user_db = $user_db; // Instância da of the

$this->pass_db = $pass_db; // Classe class }

$this->sql = $sql; // String de Consulta SQL { String SQL }

$this->titulo = $titulo; // Titulo { Title of the Report}

$this->qtd_lote = $lote; // Inicializa/Atualiza o lote atual { Start or update the batch }

$this->linhas_Pagina = $linhas_pagina;

$this->conectaDB(); // Conecta-se ao Banco de Dados { Connects with the DB }

}

}

/*

Exemplo de utilização:

{Example}

#Instrução SQL {SQL Query}

$sql = 'Select * from users';

#Título {Title}

$titulo = 'Relatório de Usuários';

#Linhas por pagina {Lines per Page}

$linhas_pagina = 20;

#Lote atual {This batch}

$lote = NULL;

if($lote == NULL){

$relatorio = new Relatorio('mssql','192.***.*.***','******','******','*****',$sql,$titulo,$linhas_pagina);

else {

$relatorio = new Relatorio('mssql','192.***.*.***','******','******','*****',$sql,$titulo,$linhas_pagina,$lote);

}

*/

?>

 

 

Grato pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu falar besteira, alguém me corrija... Mas você não pode fazer assim:

var $qtd_lote = 1;// isto aqui não dá pra fazer... O problema está aqui... Tire este igual 1 e faça de outra forma.
// Número total de Páginas do Relatório
// { Number of Report Pages }
var $paginas; é onde está o erro não consigo definir o nº de páginas
var $linhas_pagina;

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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