Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

tabla anidada con foreach controlador con cakephp

Estas en el tema de tabla anidada con foreach controlador con cakephp en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos dias, amigos foreros, aqui con un problemas q tengo hace varios dias, tengo una consulta en donde quiero pasarla a PDF, elcual utilizo a ...
  #1 (permalink)  
Antiguo 11/01/2011, 08:26
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 11 meses
Puntos: 1
tabla anidada con foreach controlador con cakephp

Buenos dias, amigos foreros, aqui con un problemas q tengo hace varios dias, tengo una consulta en donde quiero pasarla a PDF, elcual utilizo a traves de TCPDF, en si es una tabla bastante compleja en donde consigo imprimir la cedula, nombres y apellidos, las siguiente columnas son mas compleja ya que cada personas tiene una serie de planilla la cual se distribuye segun la orde de pago para cancelar ese monto de inscripción, es decir si el semestre cuesta 2000 bs.f el estudiante puede pagarla con varios depsoito, por lo q puedo tener varios vaucher por planilla.
Logro llegar hasta el apellido para mandarlo a PDF, pero al llegar al numero de planilla se me complica construir la tabla. Esto lo hago en el controlador con el siguiente codigo:
Código PHP:
private function generarTablaHTML($postgrado,$trimestre,$secc)
     {
         
//$datos = $this->getPosts();
    //print_r($secc);

     
$this->Expediente->recursive=2;
               
$vercurso $this->Expediente->find('all', array('conditions' => array('Expediente.programa_id' => $postgrado,'Expediente.trimestre_id' => $trimestre,'Expediente.aula_id' => $secc)));
    
//print_r($vercurso);
    
$inicial0;
    
$fila 0;
    
$contadorRegistro=1;
         
$tablaHTML '<table border="3" cellspacing="2" cellpadding="2">
                         <tr>
                           <th align="center" WIDTH="50">Nª.</th>
                           <th align="center" WIDTH="80">Cédula</th>
                           <th align="center">Nombres</th>
                           <th align="center">Apellidos</th>
                           <th align="center">Nº. Planilla</th>
                         </tr>'
;
                            
         foreach(
$vercurso as $nrg=>$estu)
         {
         
$cedula=number_format($estu['Estudiante']['cedula'],0,'.''.');     
             
//$this->log($estu , LOG_DEBUG);
               
$tablaHTML .= '<tr>
                             <td align="center" WIDTH="50">' 
$nrg '</td>
                 <td WIDTH="80">'
$cedula'</td>
                             <td>' 
$estu['Estudiante']['nombre'] . '</td>
                             <td>' 
$estu['Estudiante']['apellido'] .'</td>';
               foreach(
$estu['Planilla'] as $estu) {
                      
$tablaHTML .='<td><table border="2"><tr><td>'.$estu['numplanilla'].'</td></tr></table></td></tr>';
               }
                          
                
         }
        
// $contadorRegistro++;
    
$tablaHTML .= '</table>';
    
//$tablaHTML .= 'lolo'; 
    
return $tablaHTML;
        
     } 
En la vista utilizo:

Código PHP:
App::import('Vendor','tcpdf');
 
$tcpdf = new TCPDF('L','mm','LETTER',true,'UTF-8',false);
 
//$textfont = 'freesans';
 
$tcpdf->SetCreator(PDF_CREATOR);
 
$tcpdf->SetAuthor("autor");
 
$tcpdf->SetTitle("Título");
 
$tcpdf->SetSubject("Tutorial TCPDF en cakePHP");
 
$tcpdf->SetKeywords("TCPDF, PDF, cakePHP, ejemplo");
 
$tcpdf->setPrintHeader(true);
 
$tcpdf->setPrintFooter(true);
 
$tcpdf->SetMargins(PDF_MARGIN_LEFTPDF_MARGIN_TOPPDF_MARGIN_RIGHT);
 
$tcpdf->SetAutoPageBreak(TRUEPDF_MARGIN_BOTTOM);
 
$tcpdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
 
$tcpdf->setLanguageArray($l);
 
$tcpdf->AliasNbPages();
 
$tcpdf->AddPage();
 
$tcpdf->SetFont("times""BI"12);
 
//$tcpdf->Cell(0,10,$contenido,1,1,'C');
 //$tcpdf->writeHTML();
 
$this->log($contenido LOG_DEBUG);
 
$tcpdf->writeHTML($contenidotrue0true0);
 
$tcpdf->Output($nombreArchivo.".pdf""F"); 
A partir de Nº planilla hay 6 columna mas( vaucher, mono, descripcion costo, resta)

es alli q solo e logrado imprimir en html, pero lo quiero en PDF, es alli q la tabla se anida ya que como dije ante una planilla puede ser pagada con varios depositos, y durante la vida del estudiante tendra varias planillas y por ende muchos depsoitos

Por favor alguien q me pueda orientar a resolver este problema, como puedo atarves de FOREACH anidar tablas e enviarla a la vista desde controlador. Gracias
__________________
Miguel Padrón :cool:
  #2 (permalink)  
Antiguo 11/01/2011, 13:53
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: tabla anidada con foreach controlador con cakephp

Que tal 8461277, cual es el problema que estas teniendo ? , algún error de cake ? , de TCPDF ?, al generar la estructura HTML ?
  #3 (permalink)  
Antiguo 11/01/2011, 14:10
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: tabla anidada con foreach controlador con cakephp

Cita:
Iniciado por masterpuppet Ver Mensaje
Que tal 8461277, cual es el problema que estas teniendo ? , algún error de cake ? , de TCPDF ?, al generar la estructura HTML ?
Si masterpuppet, lo q pasa es a partir de Nº planilla alli se deberia crear una tabla anida la cual no me la genera en PDF, sale todo disparejo.
Ya q en la base de datos tengo 3 registros de la forma siguiente:
Nº cedula Apellidos Nombres Nº planilla
0 9883255 parra jose 2548
1 16254878 paez carlo 25658
322134
215
2 2514875 alcasa lalo 2154

Asi deberia salir, pero cuandio imprimo los nº de planilla sale todo regado y se pierde la tbala, EL ERROR ESTA EN LA ACCION Q GENERA LA TABLA Y LA MANAD A LA VISTA PARA GENERAR EL PDF

Puedes ayudarme a resolver este prblema
__________________
Miguel Padrón :cool:
  #4 (permalink)  
Antiguo 11/01/2011, 14:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: tabla anidada con foreach controlador con cakephp

En tu ejemplo estas cerrando el tr en el foreach anidado, no sera ese el problema ?, debería ser:
Código PHP:
Ver original
  1. ...
  2. foreach($estu['Planilla'] as $estu) {
  3.    $tablaHTML .='<td><table border="2"><tr><td>'.$estu['numplanilla'].'</td></tr></table></td>';
  4. }
  5. $tablaHTML .= '</tr>';
  6. ...
  #5 (permalink)  
Antiguo 12/01/2011, 08:54
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: tabla anidada con foreach controlador con cakephp

Cita:
Iniciado por masterpuppet Ver Mensaje
En tu ejemplo estas cerrando el tr en el foreach anidado, no sera ese el problema ?, debería ser:
Código PHP:
Ver original
  1. ...
  2. foreach($estu['Planilla'] as $estu) {
  3.    $tablaHTML .='<td><table border="2"><tr><td>'.$estu['numplanilla'].'</td></tr></table></td>';
  4. }
  5. $tablaHTML .= '</tr>';
  6. ...
Sos un genio, ese era el problema, pero tengootro, el segundo registro tiene varia planillas, y sale en en una misma fila una seguidade la otra, y deberia salir dentro de la misma celda los 3 codigos de la planilla ya que pertenece a ese estudiante
Aqui te muestro como se ve:
__________________
Miguel Padrón :cool:

Última edición por 8461277; 12/01/2011 a las 09:01
  #6 (permalink)  
Antiguo 12/01/2011, 09:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: tabla anidada con foreach controlador con cakephp

Podria ser la forma en la que lo estas armando, por cada planilla estas generando una tabla, esto es asi ? o deberia ser una tabla para las planillas ?, entiendo que seria lo último, teniendo esto en cuenta podria ser algo así:

Código PHP:
Ver original
  1. ...
  2. if(isset($estu['Planilla'])) {
  3.    $tablaHTML .= '<td><table border="2">';
  4.    foreach($estu['Planilla'] as $estu) {
  5.       $tablaHTML .='<tr><td>'.$estu['numplanilla'].'</td></tr>';
  6.    }
  7.    $tablaHTML .= '</table></td>';
  8. }
  9. ...

Saludos.
  #7 (permalink)  
Antiguo 12/01/2011, 09:27
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: tabla anidada con foreach controlador con cakephp

Papa estoy colocando el codigo segun tu sugerencia asi:
Código PHP:
private function generarTablaHTML($postgrado,$trimestre,$secc)
     {
         
//$datos = $this->getPosts();
    //print_r($secc);

     
$this->Expediente->recursive=2;
               
$vercurso $this->Expediente->find('all', array('conditions' => array('Expediente.programa_id' => $postgrado,'Expediente.trimestre_id' => $trimestre,'Expediente.aula_id' => $secc)));
    
//print_r($vercurso);
    
$inicial0;
    
$fila 0;
    
$contadorRegistro=1;
    
         
$tablaHTML '<table border="3" cellspacing="2" cellpadding="2">
                         <tr>
                           <th align="center" WIDTH="50">Nª.</th>
                           <th align="center" WIDTH="80">Cédula</th>
                           <th align="center">Nombres</th>
                           <th align="center">Apellidos</th>
                           <th align="center">Nº. Planilla</th>
                         </tr>'
;
                            
         foreach(
$vercurso as $nrg=>$estu)
         {
         
$cedula=number_format($estu['Estudiante']['cedula'],0,'.''.');
     
$subtable '<table border="1" cellspacing="6" cellpadding="4"><tr><td>a</td></tr></table>';     
             
//$this->log($estu , LOG_DEBUG);
               
$tablaHTML .= '<tr>
                             <td align="center" WIDTH="50">' 
$nrg '</td>
                 <td WIDTH="80">'
$cedula'</td>
                             <td>' 
$estu['Estudiante']['nombre'] . '</td>
                             <td>' 
$estu['Estudiante']['apellido'] .'</td>';
              
                         if(isset(
$estu['Planilla'])) {
                    
$tablaHTML .= '<td><table border="2">';
                       foreach(
$estu['Planilla'] as $estu) { 
                            
$tablaHTML .='<tr><td>'.$estu['numplanilla'].'</td></tr>'
           }
               
$tablaHTML .= '</table></td>';
        }         
                
         }
        
// $contadorRegistro++;
    
$tablaHTML .= '</table>';
    
//$tablaHTML .= 'lolo'; 
    
return $tablaHTML;
        
     } 
y mira como resulta:


Todo se corre, lo se quiere es q en el segundo registro en su misma celda, yo lo logre es imprimiendo en html, asi


pero lo quiero en PDF, sera q me puede ayudar en eso, soy nuevo con CAKEPHP, y me gusta mucho
__________________
Miguel Padrón :cool:
  #8 (permalink)  
Antiguo 12/01/2011, 09:35
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: tabla anidada con foreach controlador con cakephp

El problema no es cakephp, es o bien como estas armando la tabla o el parser de TCPDF, igualmente ahora veo lo mismo que antes, el cierre del tr donde esta ?.

Código PHP:
Ver original
  1. ...
  2. if(isset($estu['Planilla'])) {
  3.    $tablaHTML .= '<td><table border="2">';
  4.    foreach($estu['Planilla'] as $estu) {
  5.       $tablaHTML .='<tr><td>'.$estu['numplanilla'].'</td></tr>';
  6.    }
  7.    $tablaHTML .= '</table></td>';
  8. }
  9. $tablaHTML .= '</tr>';
  10. ...
  #9 (permalink)  
Antiguo 12/01/2011, 09:49
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: tabla anidada con foreach controlador con cakephp

Gracias master....., tenias razon, espero contar conigo y los demas programadores, voy a tratar de armar las demas columnas, si tengo problemas vendre por aqui para plantearlas..Saludos
__________________
Miguel Padrón :cool:
  #10 (permalink)  
Antiguo 12/01/2011, 13:59
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: tabla anidada con foreach controlador con cakephp

Continuo con la pela de armar esta tabla, se q tengo problema con armar los foreach, coloco el codigo siguiente:
Código PHP:
if(isset($estu['Planilla'])) {
               
$tablaHTML .= '<td><table border="2">';
               foreach(
$estu['Planilla'] as $estu) { 
                  
$tablaHTML .='<tr><td>'.$estu['numplanilla'].'</td>';
                if(isset(
$estu['Deposito'])) {
                  foreach(
$estu['Deposito'] as $depo) {
               
$tablaHTML .='<td>'.$depo['numvaucher'].'</td></tr>'
                  }
                  }
               }
//fin foreach $estu['Planilla']
               
               
$tablaHTML .= '</table></td>';
            }
//fin isset$estu['Planilla']
        
        
$tablaHTML .= '</tr>'
pèro me sale esto:



la idea es que al lado salga el numero de vaucher asiganado a las planillas
__________________
Miguel Padrón :cool:
  #11 (permalink)  
Antiguo 12/01/2011, 14:13
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: tabla anidada con foreach controlador con cakephp

Lo logre , aqui le dejo el codigo por si alguien le interesa:
Código PHP:
if(isset($estu['Planilla'])) {
               
$tablaHTML .= '<td><table border="2">';
               foreach(
$estu['Planilla'] as $estu) { 
                  
$tablaHTML .='<tr><td>'.$estu['numplanilla'].'</td>';
                   
$tablaHTML .='<td>l<table border="2">';
                    foreach(
$estu['Deposito'] as $depo) {
                   
$tablaHTML .='<tr><td>'.$depo['numvaucher'].'</td></tr>';
                    }
                   
$tablaHTML .= '</table></td></tr>';
               }
//fin foreach $estu['Planilla']
               
               
$tablaHTML .= '</table></td>';
            }
//fin isset$estu['Planilla']
        
        
$tablaHTML .= '</tr>';
        
         }
//fin $vercurso
        
             
$tablaHTML .= '</table>'
Seguire con las otras columnas
__________________
Miguel Padrón :cool:
  #12 (permalink)  
Antiguo 26/10/2012, 22:16
Avatar de Girll  
Fecha de Ingreso: octubre-2012
Ubicación: qwr
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: tabla anidada con foreach controlador con cakephp

HOLA OYE ESTOY TRABAJANDO CON CAKE PHP ENTONCES NECESITO ESO QUE HICISTE U.U COMO HACES LA TABLA Y AGREGAS DATOS?? COMO LO HACES COMO LO HACE CAKE.. ME PUEDES ENVIAR TU PROYECTO O UN TUTORIAL A MI CORREO ESPERO [email protected] saludos
  #13 (permalink)  
Antiguo 27/10/2012, 09:56
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: tabla anidada con foreach controlador con cakephp

Buenas tardes aqui te mando algunos enlaces, te sugiero que aprenda lo basico y luego ve a lo avanzado:

http://bakery.cakephp.org/articles/k...ephp-and-tcpdf
http://www.pedroventura.com/cakephp/...f-con-cakephp/

saludos
__________________
Miguel Padrón :cool:
  #14 (permalink)  
Antiguo 29/10/2012, 11:01
Avatar de Girll  
Fecha de Ingreso: octubre-2012
Ubicación: qwr
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: tabla anidada con foreach controlador con cakephp

hola amigo.. :) pues cheque tus links me serviran a futuro. realmente lo que me interesa mas es como haces las tablas en la vista?.. eso si se bastante de cakephp pero estoy trabada en esa parte de mi funcionalidad para poder seguir trabajando .. espero me ayudes saludos

Etiquetas: cakephp, controlador, foreach, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:29.