PHP - while

   
Vista:

while

Publicado por alejon (27 intervenciones) el 25/05/2011 14:59:30
estoy desarrollando un reporte con WHILE (!$VARIABLE->EOF) y presenta este error:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1048576 bytes) in C:\wamp\www\condominio\fpdf.php on line 1104


pero el proceso se queda en un ciclo indefinido de espera.

si alguien pudiera darme una ayuda. gracias

este es el codigo:

<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=/*parW");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript" src="calendario.js"></script>
<script language="JavaScript" src="overlib_mini.js"></script>
<!-- Este script permite Máscara de entrada de la fecha (en
./) -->

</head>
<style type="text/css">
.sr {
background-color: #FFFFCF;
color: #000000;
font-family: Arial;
font-size: 12px;
}
</style>
<body>
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<form name="form1" action="deudaprop.php" method="post"><fieldset style="width:auto"><LEGEND>Deuda</LEGEND>
<TABLE align="center" class="div1">
<tr>
<td>Apto:</td>
<td><input TYPE="text" NAME="apto" SIZE="10" maxlength="10"></td>
</tr>

<tr>
<td><input TYPE="submit" NAME="buscar" VALUE="Buscar">
</TD>
</tr>
</TABLE>
</fieldset><br />

<?php
if ($_POST['apto'] && $_POST['buscar']):
//$recibos = "SELECT propietarios.nroapto,propietarios.nombres,propietarios.cedula,deuda.monto FROM propietarios INNER JOIN deuda ON (propietarios.nroapto = deuda.nroapto) where propietarios.nroapto = '{$_POST['apto']}'";
$recibos = "SELECT * FROM vrecibo ORDER BY nombres,descripcion";

$resultado = @pg_query($conexion,$recibos);

endif;
require('WriteTag.php');

class PDF extends PDF_WriteTag
{
//Cabecera de página
function Header()
{
//150 = Indica el margen derecho
// ('./imagenes/logo.JPG',180=Margen derecho,5= Margen Izquierdo,30,25);

$this->Image('./imagenes/logo.JPG',180,5,30,25);
//Select Arial bold 15
$this->SetFont('Arial','B',15);

$this->Ln(25);

//Move to the right
$this->Cell(80);
//Framed title
$this->Cell(30,10,'Rxxxxx',1,0,'C');
$this->SetFont('Arial','B',8);
$this->Cell(95, 5, 'Fecha: '.date('d/m/Y'), 0, 0, 'R');
//Line break
$this->Ln(40);
$this->SetFont('Arial','B',8);
}

//Pie de página
function Footer()
{
//Posición: a 1,5 cm del final
$this->SetY(-12);
//Arial italic 8
$this->SetFont('Arial','I',8);
//Número de página
$this->Cell(0,10,'Pag '.$this->PageNo(),0,0,'C');
}

}//--Fin de la Clase

//Creación del objeto de la clase heredada
$pdf=new PDF('P','mm','Letter');
$tot = $total = $totalmonto = 0;
$nro = $recibo->fields["nroapto"];

//while($select2 = @pg_fetch_array($resultado)):

while (!$recibos->EOF)
{
$pdf->Ln(3);
$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
$pdf->Cell(100,4,number_format($TotalApto,2,',','.'),0,1,'R');
$TotalApto = 0;
$pdf->AddPage();
$pdf->SetFont('Arial','B',8);
$pdf->Cell(20,4,'Cédula:');
$pdf->Cell(26,4,$recibos['cedula'],0,1,'R');
$pdf->Cell(20,4,'Nombres:',0);
$pdf->Cell(26,4,$recibos['nombres'],0,1,'R');
$pdf->Cell(20,4,'Nro Apto:',0);
$pdf->Cell(26,4,$recibos['nroapto'],0,1,'R');
$pdf->Cell(20,4,'Deuda:',0);
$pdf->Cell(20,5,number_format($gasto,2,',','.'),0,1,'R');
$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
$pdf->Ln(8);
$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
$pdf->Ln(6);
$monto = $select2['monto'];
$TotalEdificio +=$monto;
$TotalApto +=$monto;
$nroapto = $select2['nroapto'];
$pdf->SetFont('Arial','I',8);
$pdf->Cell(47,4,$select2['descripcion'],0,0,'L');
$pdf->Cell(90,4,number_format($monto,2,',','.'),0,0,'R');
$pdf->Ln(2);
}
$nro = $recibo->fields["nroapto"];
//$recibo->MoveNext();
//endwhile;
$pdf->Cell(90,4,number_format($TotalApto,2,',','.'),0,1,'R');
$pdf->Cell(47,1,"Total--->",0,0);
$pdf->Cell(100,4,number_format($TotalEdificio,2,',','.'),0,1,'C');
$TotalEdificio = 0;
$pdf->Output("deudaprop.pdf",'I');
$pdf->Close();
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

while

Publicado por xve (5525 intervenciones) el 25/05/2011 15:41:14
Hola Alejon, por el error que me comentas, puede ser que este bucle que ejecutas, se ejecute hasta el infinito??

Supongo que el problema lo tienes en la linea: while (!$recibos->EOF)

$recibos es un result de la base de datos, por lo que el blucle, creo que no termina nunca.

Prueba con:
1
while($row=pg_fetch_array($recibos))

Cuando quieras hacer referencia a un campo de la base de datos, puedes hacerlo así:
1
$row['cedula']

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

while

Publicado por alejon (27 intervenciones) el 27/05/2011 22:53:53
amigo xve hice tal como dijiste y no funciona.
hice esto: claro es un trozo nada mas

while($select2 = @pg_fetch_array($seleccionados)):
$nombres = $select2['nombres'];
$monto = $select2['monto'];
if ($select2['nroapto']!=$nroapto)
{
$pdf->Ln(3);
$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
$pdf->Cell(100,4,number_format($TotalApto,2,',','.'),0,1,'R');
$TotalApto = 0;
$pdf->AddPage();
$pdf->SetFont('Arial','B',8);
$pdf->Cell(20,4,'Cédula:');
$pdf->Cell(26,4,$select2['cedula'],0,1,'R');
$pdf->Cell(20,4,'Nombres:',0);
$pdf->Cell(26,4,$nombres,0,1,'R');
$pdf->Cell(20,4,'Apellidos:',0);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

while

Publicado por xve (5525 intervenciones) el 27/05/2011 23:54:20
No me comentas donde te esta fallando, pero el while creo que esta mal... no puede terminar con dos puntos (:)

Si puedes, indícame que error te produce, y en que linea, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

while

Publicado por alejon (27 intervenciones) el 30/05/2011 15:47:38
Amigo xve ya esta solucionado. Partí el codigo en dos, por un lado coloqué el codigo en html y en otro el de php y al while le coloque { } y funciono. Gracias por tu buena voluntad. si quieres te envio el codigo para compartir conocimientos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar