[Resolvido] Erro ao com mysql_fetch_array()
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);
?>Discussão (2)
Carregando comentários...