Foros del Web » Programando para Internet » PHP »

Renderizado para construir tabla dinamica con adodb

Estas en el tema de Renderizado para construir tabla dinamica con adodb en el foro de PHP en Foros del Web. Buenos Dias foreros, gracias por leer mi post, espero me ayuden Estoy realizando las bases de un proyecto con Adodb, y paginación con arreglos, todo ...
  #1 (permalink)  
Antiguo 25/08/2011, 07:39
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 16 años
Puntos: 19
Pregunta Renderizado para construir tabla dinamica con adodb

Buenos Dias foreros, gracias por leer mi post, espero me ayuden

Estoy realizando las bases de un proyecto con Adodb, y paginación con arreglos, todo bien, pero tengo un pequeño problema con la renderizacion.

Me funciona solo con el primer elemento que especifico, y con el segundo en adelante no me funciona.

Les coloco el codigo de la funcion completa

Código PHP:
function Construye_Tabla($query_a_ejecutar,$campos,$columnas,$renderizacion,$inicio,$enlace,$estilo_tabla,$titulos)
{
    
$db conectarse();
    
$campo explode(",",$campos);
    
$renders explode(",",$renderizacion);
    if (
count($renders)!=count($campo)) {
        echo 
"ERROR Construye_Tabla (1)";
        exit();    
    }
    for (
$l=0;$l<count($renders);$l++)
    {
        
$render[$l][$renders[$l]] = explode(":",$renders[$l]);
    }
    
$arreglo Consulta($query_a_ejecutar,$campos);
    
$perpage $columnas
    if(isset(
$inicio)) 
        
$start $inicio
    else 
        
$start 0;
    
$numposts count($arreglo);
    
$data array_slice($arreglo$start$perpage);
    if (
$estilo_tabla!=""
    {
        
$tabla "<table align='center' style='".$estilo_tabla."'>";
    } else {
        
$tabla "<table align='center' >";
    }
    if (
$titulos=="Y"
    {
        
$tabla .= "<tr>";
        for (
$i=0;$i<count($campo);$i++)
        {
            
$tabla .= "<th>";
            
$tabla .= $campo[$i];
            
$tabla .= "</th>";
        }
    }
    
$tabla .= "</tr>";

    foreach(
$data as $k => $v)
    {
        
$tabla .= "<tr>";
        for (
$m=0;$m<count($campo);$m++)
        {
            
$tabla .= "<td>";
            
$dato =  $data[$k][$campo[$m]];
            if (
$render[$m][$renders[$m]][0] == $campo[$m]) {
                if (isset(
$render[$m][$renders[$m]][1])) {
                    
$dato str_replace("%".$campo[$m]."%",$data[$k][$campo[$m]],$render[$m][$renders[$m]][1]);    
                }
            }
            
$tabla .= $dato;
            
$tabla .= "</td>";
        }
        
$tabla .= "</tr>";
    }
    
$tabla .= "</table><br />";
    
    
$text "<table align='center'><tr>";
    if(
$start 0)
    {
        
$text .= "<td><a href='".$enlace."?start=0'>
        <img src='imagenes/First.gif' /> 
        </a></td><td><a href='"
.$enlace."?start=".($start $perpage)."'>
        <img src='imagenes/Previous.gif' /> 
        </a></td>
        "
;
    }
    if(
$start && $numposts $perpage && $start $numposts $perpage)
    {
        
$text .= "";
    }
    if(
$numposts $perpage && $start $numposts $perpage)
    {
        
$total count($arreglo);
        
$paginas $total $columnas;
        
$p 0;
        
$q 0;
        for (
$n=0;$n<$paginas;$n++)
        {
            if (
$n<$paginas
            {
                
$p $n;    
            }
            for (
$o=0;$o<$columnas;$o++)
            {
                
                if ((
$p == $n) && ($o == 0))
                {
                    
$ultimo $q;    
                }
                
$q $q+1;
            }
        }
        
$text .= "<td><a href='".$enlace."?start=".($start $perpage)."'>
        <img src='imagenes/Next.gif' />
        </a></td><td><a href='"
.$enlace."?start=".$ultimo."'>
        <img src='imagenes/Last.gif' /> 
        </a></td>"
;
    }
    
$text .= "</tr></table>";
    
$tabla .= "<center>".$text."</center>";
    
    
    
$db->Close();
    return 
$tabla;

Para resumir se que el problema esta en este fragmento

Código PHP:
foreach($data as $k => $v)
    {
        
$tabla .= "<tr>";
        for (
$m=0;$m<count($campo);$m++)
        {
            
$tabla .= "<td>";
            
$dato =  $data[$k][$campo[$m]];
            if (
$render[$m][$renders[$m]][0] == $campo[$m]) {
                if (isset(
$render[$m][$renders[$m]][1])) {
                    
$dato str_replace("%".$campo[$m]."%",$data[$k][$campo[$m]],$render[$m][$renders[$m]][1]);    
                }
            }
            
$tabla .= $dato;
            
$tabla .= "</td>";
        }
        
$tabla .= "</tr>";
    } 
Llamo la funcion de la siguiente forma:

Código PHP:
echo  Construye_Tabla(
"SELECT `id`  AS 'ID', `title` AS 'TITULO', `note` AS 'NOTAS'
FROM `todolist`"
,
"ID,TITULO,NOTAS",
2,
"ID:<a href='prueba.php?recordID=%ID%' target='_top'>%ID%</a>,TITULO:<p style='color:red'>%TITULO%</p>,NOTAS:<p style='color:green'>%NOTAS%</p>",
$_GET['start'],
"index.php",
"",
"Y") ; 
La parte de renderizar la especifico en esta linea

"ID:<a href='prueba.php?recordID=%ID%' target='_top'>%ID%</a>,TITULO:<p style='color:red'>%TITULO%</p>,NOTAS:<p style='color:green'>%NOTAS%</p>"

Cualquier duda que tengan respondanme a este post, estare pendiente todo el tiempo, gracias y saludos
__________________
http://www.solucionesrios.tk/

Visita mi Web!
  #2 (permalink)  
Antiguo 25/08/2011, 08:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Renderizado para construir tabla dinamica con adodb

¿Haz verificado que tengas todos los datos a listar?

Realiza un var_dump($arreglo) y verifica si tienes todos los datos.

Saludos.
  #3 (permalink)  
Antiguo 25/08/2011, 08:22
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 16 años
Puntos: 19
Respuesta: Renderizado para construir tabla dinamica con adodb

Cita:
Iniciado por GatorV Ver Mensaje
¿Haz verificado que tengas todos los datos a listar?

Realiza un var_dump($arreglo) y verifica si tienes todos los datos.

Saludos.
Hola GatorV gracias por responder, si lo he comprobado, sin el renderizado, me trae los datos perfectamente con paginado y todo.

El problema es a la hora de renderizar, que me da el problema, probe solo renderizando el primer elemento (en este caso el ID), como un enlace, me funciono sin problema alguno.

Cuando puse el renderizado en los otros elementos me trae estos en blanco, de verdad he estado dando vueltas desde hace unos dias pero tuve que venir a pedir ayuda aca.

Espero cuando termine estas funcionas poderlas aportar al foro, de verdad estan buenas para aligerar mucho el trabajo con Adodb
__________________
http://www.solucionesrios.tk/

Visita mi Web!
  #4 (permalink)  
Antiguo 25/08/2011, 10:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Renderizado para construir tabla dinamica con adodb

Hice esta pequeña versión de prueba y me funciona correctamente:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $aDatos = array(
  4.     array(
  5.         'id' => 1,
  6.         'marca' => 'vw',
  7.         'nombre' => 'jetta',
  8.         'color' => 'rojo',
  9.         'puertas' => '4',
  10.         'version' => 'GL',
  11.         'anio' => '2001'
  12.     ),
  13.     array(
  14.         'id' => 2,
  15.         'marca' => 'vw',
  16.         'nombre' => 'jetta',
  17.         'color' => 'azul',
  18.         'puertas' => '4',
  19.         'version' => 'GL',
  20.         'anio' => '2006'
  21.     ),
  22.     array(
  23.         'id' => 3,
  24.         'marca' => 'vw',
  25.         'nombre' => 'golf',
  26.         'color' => 'negro',
  27.         'puertas' => '2',
  28.         'version' => 'GL',
  29.         'anio' => '2002'
  30.     ),
  31.     array(
  32.         'id' => 4,
  33.         'marca' => 'vw',
  34.         'nombre' => 'beetle',
  35.         'color' => 'rojo',
  36.         'puertas' => '4',
  37.         'version' => 'GL',
  38.         'anio' => '2003'
  39.     )
  40. );
  41.  
  42. $aCampos = array(
  43.     'id' => '#',
  44.     'marca' => 'Marca',
  45.     'nombre' => 'Nombre',
  46.     'color' => 'Color',
  47.     'puertas' => 'Puertas',
  48.     'version' => 'Version',
  49.     'anio' => 'Año'
  50. );
  51.  
  52. $aRenders = array(
  53.     'id' => '<a href="test.php?id=%id%">%id%</a>',
  54.     'color' => '<span class="color_%color%">%color%</a>'
  55. );
  56.  
  57. echo Construye_Tabla($aDatos, $aCampos, $aRenders, "test", "Y");
  58.  
  59. function Construye_Tabla(array $datos,array $campos,array $renders,$estilo_tabla,$titulos)
  60. {
  61.     if ($estilo_tabla!="")
  62.     {
  63.         $tabla = "<table align='center' style='".$estilo_tabla."'>";
  64.     } else {
  65.         $tabla = "<table align='center' >";
  66.     }
  67.     if ($titulos=="Y")
  68.     {
  69.         $tabla .= "<tr>";
  70.         foreach ($campos as $campo => $titulo) {
  71.             $tabla .= "<th>$titulo</th>";
  72.         }
  73.     }
  74.     $tabla .= "</tr>";
  75.  
  76.     foreach($datos as $index => $row)
  77.     {
  78.         $tabla .= "<tr>";
  79.         foreach ($campos as $campo => $titulo) {
  80.             if (isset($row[$campo])) {
  81.                 if (isset($renders[$campo])) {
  82.                     $celda = str_replace('%'.$campo.'%', $row[$campo], $renders[$campo]);
  83.                 } else {
  84.                     $celda = $row[$campo];
  85.                 }
  86.                
  87.                 $tabla .= "<td>" . $celda . "</td>";
  88.             }
  89.         }
  90.         $tabla .= "</tr>";
  91.     }
  92.     $tabla .= "</table><br />";
  93.    
  94.    
  95.     return $tabla;
  96. }

Puedes compararla y ver las diferencias.

Saludos.
  #5 (permalink)  
Antiguo 25/08/2011, 15:08
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 16 años
Puntos: 19
De acuerdo Respuesta: Renderizado para construir tabla dinamica con adodb

Gracias GatorV demos este tema como finalizado igual comparto las funciones con la comunidad:

Código PHP:
<?php
//Me conecto a cualquier base de datos segun sea el caso
function conectarse()
{
         
$dbdriver "mysql";
         
$server "localhost"
         
$user "root"
         
$password "vladssj4";
         
$database "mytinytodo";
         
         include(
'clases/adodb/adodb.inc.php');
         
$db ADONewConnection($dbdriver); # eg 'mysql' or 'postgres'
         #$db->debug = true; //Solo para Debug
         
         //Depende de que tipo de base de datos use, me conecto segun un metodo (no estan todos)
         
switch ($dbdriver) {
            case 
"mysql":
                
$db->Connect($server$user$password$database);
                break;
            case 
"odbc_mssql":
                
$dsn "Driver={SQL Server};Server=".$server.";Database=".$database.";";
                
$db->Connect($dsn,$user,$password);
                break;
         }
              
         return 
$db;
}
//Ejecuto cualquier query de insercion o actualizacion
function Ejecutar_Query($query_a_ejecutar)
{
    
$db conectarse();
    
$db->Execute($query_a_ejecutar);
    
$db->Close();
}
//Construyo una tabla con paginacion desde una consulta
function Construye_Tabla(
$query_a_ejecutar//El query que deseo utilizar para generar el arreglo (lo genera a partir de la funcion  Consulta($query_a_ejecutar,$campos)
array $campos,  /* Un arreglo donde especifico los campos y los nombres de los titulos de las tablas*/
array $renders/* Un arreglo donde especifico de que forma desde que salgan los datos */
$columnas//El numero de columnas que deseo que salgan por pagina
$inicio// Aca siempre colocare $_GET['start'] par paginacion
$enlace//Coloco el mismo nombre del archivo php donde colocare la tabla
$estilo_tabla//Especifico el estilo que deseo que tenga la tabla (clase CSS)
$titulos // Especifico si deseo los titulos de la tabla, Ej: "Y" si quiero titlos, si no solo coloco ""
)
{
    
$db conectarse();

    
$arreglo Consulta($query_a_ejecutar,$campos);
    
$perpage $columnas
    
/* Tomo el querystring para realizar el paginado */
    
if(isset($inicio)) 
        
$start $inicio
    else 
        
$start 0;
    
/* Si se modifica esta parte el paginado no funcionaria */
    
$numposts count($arreglo);
    
$datos array_slice($arreglo$start$perpage);
    
/* ------------------------------------------------------ */
    
if ($estilo_tabla!=""
    {
        
$tabla "<table align='center' class='".$estilo_tabla."'>";
    } else {
        
$tabla "<table align='center' >";
    }
    
/* 
    Creditos a GatorV de foros del web por ayudar a mejorar la funcion con renderizado
    */
    
if ($titulos=="Y")
    {
        
$tabla .= "<tr>";
        foreach (
$campos as $campo => $titulo) {
            
$tabla .= "<th>".$titulo."</th>";        
        }
        
$tabla .= "</tr>";
    }

    foreach(
$datos as $index => $row)
        {
            
$tabla .= "<tr>";
            foreach (
$campos as $campo => $titulo) {
                if (isset(
$row[$campo])) {
                    if (isset(
$renders[$campo])) {
                        
$celda str_replace('%'.$campo.'%'$row[$campo], $renders[$campo]);
                    } else {
                        
$celda $row[$campo];
                    }
                   
                    
$tabla .= "<td>" $celda "</td>";
                }
            }
            
$tabla .= "</tr>";
        }
    
$tabla .= "</table><br />";
    
    
$text "<table align='center'><tr>";
    if(
$start 0)
    {
        
$text .= "<td><a href='".$enlace."?start=0'>
        <img src='imagenes/First.gif' /> 
        </a></td><td><a href='"
.$enlace."?start=".($start $perpage)."'>
        <img src='imagenes/Previous.gif' /> 
        </a></td>
        "
;
    }
    if(
$start && $numposts $perpage && $start $numposts $perpage)
    {
        
$text .= "";
    }
    if(
$numposts $perpage && $start $numposts $perpage)
    {
        
$total count($arreglo);
        
$paginas $total $columnas;
        
$p 0;
        
$q 0;
        for (
$n=0;$n<$paginas;$n++)
        {
            if (
$n<$paginas
            {
                
$p $n;    
            }
            for (
$o=0;$o<$columnas;$o++)
            {
                
                if ((
$p == $n) && ($o == 0))
                {
                    
$ultimo $q;    
                }
                
$q $q+1;
            }
        }
        
$text .= "<td><a href='".$enlace."?start=".($start $perpage)."'>
        <img src='imagenes/Next.gif' />
        </a></td><td><a href='"
.$enlace."?start=".$ultimo."'>
        <img src='imagenes/Last.gif' /> 
        </a></td>"
;
    }
    
$text .= "</tr></table>";
    
$tabla .= "<center>".$text."</center>";
    
    
    
$db->Close();
    return 
$tabla;
    
#return $arreglo;
}
//Ejecuta cualquier consulta y la transforma en un Array
function Consulta($query_a_ejecutar,array $camposX)
{
    
$conn conectarse();
    
$campoZ = array();
    
$q=0;
    foreach (
$camposX as $campo => $v) {
        
$campoZ[$q] = $campo;        
        
$q++;
    }
    
    if (
count($campoZ)>1) {
        
$camposY implode(",",$campoZ);
        
$campo explode(",",$camposY);
    } else {
        
$campo $campoZ[0];    
    }
  
    
$recordSet = &$conn->Execute($query_a_ejecutar);
    if (!
$recordSet
    {
         print 
$conn->ErrorMsg();
    } else {
        
$j 0;
        if (
count($camposX) > 1) {
            while (!
$recordSet->EOF) {
                 for (
$i=0;$i<(count($camposX));$i++) {
                     
$results[$j][$campoZ[$i]] = $recordSet->fields[$i];
                }
                 
$recordSet->MoveNext();
                 
$j $j+1;
             }              
        } else { 
            while (!
$recordSet->EOF) {
                
$results[0][$campo[0]] = $recordSet->fields[0];
            }
        }
    } 
    
    
$recordSet->Close(); # optional
    
$conn->Close(); # optional
    
    
return $results;
    
#return $campos;
}

?>
__________________
http://www.solucionesrios.tk/

Visita mi Web!

Etiquetas: adodb, construir, dinamica, renderizado, tabla
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




La zona horaria es GMT -6. Ahora son las 22:14.