Ir para conteúdo

POWERED BY:

Arquivado

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

jotaerre10

[Resolvido] Erro ao com mysql_fetch_array()

Recommended Posts

Boa tarde galera,

 

To com um script para a geração de um PDF de uma base SQLServer e o erro é simples:

 

1º Quando eu gero 4 pdfs somente com os valores principais ( como se fosse cabeçalho ) ele retorna tranquilo sem erros, ou seja, 4 páginas. com esse código abaixo:

 

ASSIM FUNCIONA...

<?php
$codigoSolicitante = $_POST['solicitante']; //array vindo de um checkbox
$dataInicio = $_POST['dataInicio']; // data de inicio
$dataFim 	= $_POST['dataFim']; // data de final

// fomata a página
$pdf = new FPDF('P','cm','A4');

for($i = 0; $i < count($codigoSolicitante); $i++)
{
// zera nomes
$EspecialPrin = "";
$CodSolicitante = "";
$NomeSolicitante = "";
// zera valores
$valor1 = 0; $valor2 = 0; $valor3 = 0; $valor4 = 0;
$valor5 = 0; $valor6 = 0; $valor7 = 0; $valor8 = 0;
// add página
$pdf->AddPage();
// seta o autor
$pdf->SetAuthor('{author}');
// define o título do documento
$pdf->SetTitle('{titulo}');
// imagem de fundo
$pdf->Image('{imagem}',0,0,21,30);
// fonte
$pdf->SetFont('Arial','',10);
// sql da base
$rs = mssql_query("{SQLServer}");
// efetua os calculos dos valores
$EspecialPrin = mssql_result($rs,0,'EpecialPrin');
$CodSolicitante = mssql_result($rs,0,'Solicitante');
$NomeSolicitante = mssql_result($rs,0,'NomeSolicitante');
$valor1 = mssql_result($rs,0,'TotalAtend');
$valor2 = (mssql_result($rs,0,'TotalConsultas') - $valor1);
if($valor1 == 0){$valor1=1;}
if($valor2 == 0){$valor2=1;}
$valor3 = (($valor2 / $valor1) * 100);
$valor4 = mssql_result($rs,0,'TotalConsultas');
$valor5 = ($valor1 * 46);
$valor6 = ($valor2 * 46);
$valor7 = "";
$valor8 = ($valor5 + $valor6);
// monta os valores principais dentro do PDF
// linha 1
$pdf->Cell(12,1,$CodSolicitante . ' - ' . ucwords($NomeSolicitante),0,0,'L');
$pdf->Cell(10,1,ucwords($EspecialPrin),0,1,'L');
// linha 2
$pdf->Ln();
$pdf->Ln();
$pdf->Cell(4.2);
$pdf->Cell(4.3,0.5,$valor1,0,0,'L');
$pdf->Cell(5.6,0.5,$valor2,0,0,'L');
$pdf->Cell(2.5,0.5,$valor3 = strlen($valor3 >= 4) ? substr($valor3,0,3). "%" :  substr($valor3,0,1). "%",0,0,'C');
$pdf->Cell(2.7,0.5,$valor4,0,1,'L');
// linha 3
$pdf->Cell(4.2);
$pdf->Cell(4.3,1,'R$ ' . number_format($valor5,2,',','.'),0,0,'L');
$pdf->Cell(5.6,1,'R$ ' . number_format($valor6,2,',','.'),0,0,'L');
$pdf->Cell(2.5,1,$valor7,0,0,'C');
$pdf->Cell(2.7,1,'R$ ' . number_format($valor8,2,',','.'),0,1,'L');
// linha 4 - ??
$pdf->Ln(2.5);
// período
$pdf->Ln(1.5);
$pdf->SetFont('Arial','B',10);
$pdf->Cell(0,0.5,'Período de '.dataToBase('out2',$_POST['dataInicio']).'  a '.dataToBase('out2',$_POST['dataFim']),0,0,'L');
}
// geração
$nome = '{caminho}/{arquivo}';
$pdf->Output($nome);
?>

 

Até ai tudo bem, mas se eu incluir valores dentro desse laço ele começa a dar "tiute" tipo se eu colocar outro FOR ele gera a metade das páginas ou seja, eram 4 agora são duas geradas.

 

ASSIM NÃO FUNCIONA

<?php
$codigoSolicitante = $_POST['solicitante']; //array vindo de um checkbox
$dataInicio = $_POST['dataInicio']; // data de inicio
$dataFim 	= $_POST['dataFim']; // data de final

// fomata a página
$pdf = new FPDF('P','cm','A4');

for($i = 0; $i < count($codigoSolicitante); $i++)
{
// zera nomes
$EspecialPrin = "";
$CodSolicitante = "";
$NomeSolicitante = "";
// zera valores
$valor1 = 0; $valor2 = 0; $valor3 = 0; $valor4 = 0;
$valor5 = 0; $valor6 = 0; $valor7 = 0; $valor8 = 0;
// add página
$pdf->AddPage();
// seta o autor
$pdf->SetAuthor('{author}');
// define o título do documento
$pdf->SetTitle('{titulo}');
// imagem de fundo
$pdf->Image('{imagem}',0,0,21,30);
// fonte
$pdf->SetFont('Arial','',10);
// sql da base
$rs = mssql_query("{SQLServer}");
// efetua os calculos dos valores
$EspecialPrin = mssql_result($rs,0,'EpecialPrin');
$CodSolicitante = mssql_result($rs,0,'Solicitante');
$NomeSolicitante = mssql_result($rs,0,'NomeSolicitante');
$valor1 = mssql_result($rs,0,'TotalAtend');
$valor2 = (mssql_result($rs,0,'TotalConsultas') - $valor1);
if($valor1 == 0){$valor1=1;}
if($valor2 == 0){$valor2=1;}
$valor3 = (($valor2 / $valor1) * 100);
$valor4 = mssql_result($rs,0,'TotalConsultas');
$valor5 = ($valor1 * 46);
$valor6 = ($valor2 * 46);
$valor7 = "";
$valor8 = ($valor5 + $valor6);
// monta os valores principais dentro do PDF
// linha 1
$pdf->Cell(12,1,$CodSolicitante . ' - ' . ucwords($NomeSolicitante),0,0,'L');
$pdf->Cell(10,1,ucwords($EspecialPrin),0,1,'L');
// linha 2
$pdf->Ln();
$pdf->Ln();
$pdf->Cell(4.2);
$pdf->Cell(4.3,0.5,$valor1,0,0,'L');
$pdf->Cell(5.6,0.5,$valor2,0,0,'L');
$pdf->Cell(2.5,0.5,$valor3 = strlen($valor3 >= 4) ? substr($valor3,0,3). "%" :  substr($valor3,0,1). "%",0,0,'C');
$pdf->Cell(2.7,0.5,$valor4,0,1,'L');
// linha 3
$pdf->Cell(4.2);
$pdf->Cell(4.3,1,'R$ ' . number_format($valor5,2,',','.'),0,0,'L');
$pdf->Cell(5.6,1,'R$ ' . number_format($valor6,2,',','.'),0,0,'L');
$pdf->Cell(2.5,1,$valor7,0,0,'C');
$pdf->Cell(2.7,1,'R$ ' . number_format($valor8,2,',','.'),0,1,'L');
// linha 4 - ??
$pdf->Ln(2.5);

// VALORES GERADOS
for($i = 0; $i < mssql_num_rows($rs); $i++)
{
	$x 				= mssql_fetch_array($rs); // acredito que o erro seja aqui. MAS O QUE FAÇO?????
	$AAAA[$i] 		= substr($x['{}'],0,32);
	$BBBB[$i] 		= $x['{}'];
	$CCCC[$i] 		= $x['{}'];
	$DDDD[$i] 		= $x['{}'];
	$EEEE[$i] 		= $x['{}'];
}

// SAIDA
for($y = 0; $y < 24; $y++)
{
	$pdf->Cell(7.5,0.7,	$AAAA[$y],0,0,'L');
	$pdf->Cell(1.9,0.7,	$BBBB[$y],0,0,'C');
	$pdf->Cell(2.8,0.7,	$CCCC[$y],0,0,'C');
	$pdf->Cell(2,0.7,	$DDDD[$y],0,0,'C');
	$pdf->Cell(0.2);
	$pdf->Cell(2.6,0.7,	$EEEE[$y],0,0,'C');
	$pdf->Cell(0.2);
	$pdf->Cell(2.1,0.7,'',0,1,'C');
}
// PERIODO
$pdf->Ln(1.5);
$pdf->SetFont('Arial','B',10);
$pdf->Cell(0,0.5,'Período de '.dataToBase('out2',$_POST['dataInicio']).'  a '.dataToBase('out2',$_POST['dataFim']),0,0,'L');
}
// geração
$nome = '{caminho}/{arquivo}';
$pdf->Output($nome);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá jotaerre10

 

você esta colocando um FOR dentro de outro FOR com a mesma variavel:

 

for($i = 0; $i < count($codigoSolicitante); $i++)
{
       ...
       // VALORES GERADOS
       for($i = 0; $i < mssql_num_rows($rs); $i++)
       {
               ....
       }

       // SAIDA
       for($y = 0; $y < 24; $y++)
       {
               ....
       }
       ...
}

 

No loop que tem o comentário "// SAIDA" você tomou o cuidado de trocar o famoso $i para $y, mas no FOR anterior (// VALORES GERADOS) não.

Testa alterar a variavel que acho que resolve ;)

 

 

Abs

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.