Resultados 1 al 11 de 11

Mostrar en una tablas, datos extraidos de la Base de datos

Esta es una discusión en el tema Mostrar en una tablas, datos extraidos de la Base de datos dentro del foro Tutoriales de programación, parte de la categoría vBulletin; Reseña Este tutorial permite crear una pagina personalizada en vBulletin y llenarla con registros extraidos desde una tabla (similar a forumdisplay), mostrar10.php es un script básico con el que entenderás como mostrar datos en vBulletin usando consultas SQL Tutorial la idea de este ejemplo es aprender a hacer consultar que ...



  1. #1
    Administrador Avatar de Jhonnyf
    Fecha de ingreso
    21/jun/2012
    Mensajes
    1.472
    Gracias
    2
    Agradecido N veces en N mensajes :)
    Poder de Credibilidad
    10

    Smile Mostrar en una tablas, datos extraidos de la Base de datos

    Reseña
    Este tutorial permite crear una pagina personalizada en vBulletin y llenarla con registros extraidos desde una tabla (similar a forumdisplay), mostrar10.php es un script básico con el que entenderás como mostrar datos en vBulletin usando consultas SQL


    Tutorial

    la idea de este ejemplo es aprender a hacer consultar que nos den resultados multiples (query_read de vBulletin) recorrer los resultados y mostrarlos como si fuera una pagina más de vbulletin, Lo que haremos es mostrar los temas con el id de 1 al 10 en una pagina propia

    cuando hagas tu php, llama al global.php de vBulletin para tener todas sus funciones, conexion a la base de datos, stylos, etc.... la programacion usando el "Kit de vBulletin", es bastante facil.....

    vamos a crear 2 plantillas personalizadas en vbulletin, una la vamos a llamar mostrar10temas que será la que contena el navbar, y la apertura de la tabla para el listado, cerrado de la tabla, pie del foro, etc... y otro que se llamará mostrar10temasbit, que será cada uno de los registros a mostrar.
    por el momento solo vamos a definir que nombre vamos a usar, luego la codificaremos


    este seria el contenido del archivo que lo llamaremos mostrar10.php

    Código PHP:
    <?
    // ######################## SET ENTORNO PHP ###########################
    error_reporting(E_ALL & ~E_NOTICE);

    // ##################### DEFINIR COSNTANTES IMPORTANTES #######################

    define('THIS_SCRIPT''mostrar10');  
    /*
    este es el nombre de este Scrit, asi que en las plantillas podran usar una condicion asi:(en el Navbar o footer por ejemplo)
    <if condition="THIS_SCRIPT == 'mostrar10'">
        No mostrar Adsense, algo especial etc, etc
    </if>
    */
    // #################### PRE-CACHE DATOS Y PLANTILLAS ######################
    //Obtener Grupo de Frases  Especiales
    $phrasegroups = array();

    //Obtener Plantillas Especiales desde el datastore
    $specialtemplates = array();

    // pre-cache Plantillas usadas en todas las Acciones de este php
    $globaltemplates = array(
            
    // Pon aqui todas las plantillas que hayas creado, pero curiosamente si no las pones, igualito funciona (esto es lenguaje c pues
            
    'mostrar10'
    'mostrar10temasbit',//RECUERDA QUE ESTE ES EL NOMBRE DE LA PLANTILLA QUE CREASTE
    );

    // pre-cache Plantillas usadas para Acciones Estemplates used by specific actions
    $actiontemplates = array();

    // ########################## REQUERIDO ############################
    require_once('./global.php'); //con esto cargas todas las opciones de vBulletin, ademas de la conexion, acceso a MySQL, etc, etc

    // #######################################################################
    // ######################## COMIENZO DEL SCRIPT PRINCIPAL ############################
    // #######################################################################

        
    $temas_query $db->query_read("SELECT * FROM " TABLE_PREFIX "thread where threadid>1 and threadid<10"); //llenamos $temas_query con los resultados de la consulta, se va a comportar como un array
            
    if ($vbulletin->db->num_rows($temas_query) > 0//verificamos que tenga al menos 1 registro para comenzar a procesarlos
            
    {    
                while (
    $mis10temas $vbulletin->db->fetch_array($temas_query)) //haces que cada registro de la consulta, se guarde individualmente en $mis10temas para poder usar esta variable en nuestra plantilla
                
    {
                    
    //aqui la funcion para convertir la fecha de numero a fecha dd/mm/yyyy basado en vbulletin y la hora local del usuario
                    
    $mis10temas['dateline'] = vbdate($vbulletin->options['dateformat'], $mis10temas['dateline']);  
                    
    $mis10temas['lastpost'] = vbdate($vbulletin->options['dateformat'], $mis10temas['lastpost']);  
                    eval(
    '$listadosquecrece .= "' fetch_template('mostrar10temasbit') . '";'); //aqui estamos creando una nueva variable llamada $listadosquecrece en donde estamos guardando la plantilla mostrar10temasbit procesada por cada registro, 
                    //lo ideal seria llamarla $mostrar10temasbits (plural), pero por motivos de tutorial estoy usando otro nombre de variable para que no se equivoquen
                
    };
            }
            else
            {
            eval(
    '$listadosquecrece = "' "<tr><td class='alt1' colspan=5><center>No registros</center></td></tr>" '";');
            
    //si no hay registros muestro que ese mensaje como un TD en la tabla, le puse colspan=5 porque serán 5 las columnas que mostraré
            
    }                


    $navbits = array(); 
    $navbits[$parent] = 'Pagina de Prueba';  //esto se vera en el NavBar (el arbol que sale cuando entras a un tema, etc en el navbar)
    $navbits construct_navbits($navbits); //Que vBulletin lo compile a su manera
    eval('$navbar = "' fetch_template('navbar') . '";'); //Luego usamos esa compilacion con la plantilla navbar (que será llamado en la plantilla prueba
    eval('print_output("' fetch_template('mostrar10') . '");'); //y Finalmente llamamos a nuestra plantilla mostrar10, que ahi esta llamando a la variable que contiene los registros a mostrar :D
    ?>
    el contenido de las plantillas seria:

    mostrar10temasbit: (el que crea los registros individuales)
    Código HTML:
    <tr>
    <td class="alt1">$mis10temas[threadid]</td>
    <td class="alt2">$mis10temas[title]</td>
    <td class="alt1">$mis10temas[postusername]</td>
    <td class="alt2">$mis10temas[dateline]</td>
    <td class="alt1">$mis10temas[lastpost]</td>
    </tr>
    como verás, estamos usando la variable $mis10temas, que sale del php cuando usamos los registro de manera individiual, como se hizo un select *, tenemos todos los campos de la tabla thread disponibles para usarlo con esa variable

    -------------------------------
    mostrar10: El que arma la pagina principal, puedes quierle el navbar, el footer o todo lo que quieras
    Código HTML:
    $stylevar[htmldoctype]
    <html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
    <head>
    $headinclude
    <title>$vboptions[bbtitle] - Listado de los 10 primeros Temas</title>
    </head>
    <body>
    
    $header 
    $navbar <!--Esto llama a la variable que se construyó en el php-->
    
     <!--INICIO DEL CONTENIDO QUE DESEAS MOSTRAR-->
     <!--Basicamente se hace para que se vea una tabla usando los colores de su foro-->
    <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" 
    
    align="center">
    <tr>
    <td class="tcat">Id del tema</td>
    <td class="tcat">Titulo</td>
    <td class="tcat">Creador</td>
    <td class="tcat">Fecha de creacion</td>
    <td class="tcat">Ultimo que posteó</td>
    </tr>
    $listadosquecrece
    </table>
    
     <!--FIN DEL CONTENIDO QUE DESEAS MOSTRAR-->
    
    $footer
    </body>
    </html>
    Aqui usamos la variable $listadosquecrece que se creó en el php y que contiene la acumulacion de los registros a mostrar

    ************************************************** ************
    Espero que este tutorial les sea util al menos para entender como se crea una pagina propia para vbulletin con datos de la base de datos.

    como verán es bastante facil y nada complicado el usar las funciones y variables de vBulletin a nuestro beneficio..


    NOTA: si deseas mover este archivo a una ubicacion diferente de la raiz de tu foro, debes poner antes de la llama del global el cambio de directorio, asi que quedaria asi:

    Código PHP:
    chdir('/home/site/public_html/forums'); 
    require_once(
    './global.php'); 
    OJO que "/home/site/public_html/forums" depende de tu host, asi que es variable

    Recuerda que aqui hay un ejemplo más basico
    Guía para Agregar Paginas personalizadas a vBulletin (Test.php) - vBSoporte



    Temas Similares:

  2. El siguiente usuario ha agradecido a Jhonnyf por este útil mensaje:

    DEGEneradito (05/08/2011)

  3. codigo php para mostrar datos de una base de datos

    como mostrar los datos de una base de datos en php

    codigo php para listar registros de una base de datos

    como mostrar una tabla en php

    como mostrar los datos de mi base de datos en php

    como mostrar una tabla de una base de datos en php

    resultado de consulta de base datos en tabla php

    mostrar consulta sql en tabla html

    hacer una tabla en html con los datos de una consulta sql

    mostrar resultados de una consulta en php en una tabla

    listar de la base de datos en codigo php

    mostrar datos de registro de una base datos php en una tabla

    mostrar base de datos en htmlobtener archivos de una base de datos y mostrarlos en una tabla en phptemplate listar tabla phplistar datos de una tabla en phpcodigo php para listar registros de una basee de datoscomo listar una base de datos en phpmostrar contenido de varios registros de una tabla en phpcomo hacer un array para visualizar contenido de una base de datosmostrar tablas de una base de datoscodigo php para mostrar registros base datosmostrar resultados de bd en tablascodigos para hacer consultas y mostrarlas en una tabla htmlcomo mostrar todos los registros de una base de datos codigo
  4.     
  5. #2
    Usuario
    Fecha de ingreso
    26/nov/2009
    Mensajes
    84
    Gracias
    5
    Agradecido 33 veces en 27 mensajes
    Poder de Credibilidad
    5

    Predeterminado Respuesta: Mostrar en una tablas, datos extraidos de la Base de da

    Esta parte no es utilizable por vB4:
    Código PHP:
    eval('$navbar = "' fetch_template('navbar') . '";'); //Luego usamos esa compilacion con la plantilla navbar (que será llamado en la plantilla prueba
    eval('print_output("' fetch_template('mostrar10') . '");'); //y Finalmente llamamos a nuestra plantilla mostrar10, que ahi esta llamando a la variable que contiene los registros a mostrar :D
    ?> 
    ¿Como se puede hacer en vB4?

    Salud2



  6. #3
    Administrador Avatar de Jhonnyf
    Fecha de ingreso
    21/jun/2012
    Mensajes
    1.472
    Gracias
    2
    Agradecido N veces en N mensajes :)
    Poder de Credibilidad
    10

    Predeterminado Respuesta: Mostrar en una tablas, datos extraidos de la Base de da

    La primera Linea Compila la Plantilla y la ultima la muestra en pantalla, para vb4 seria:
    Código PHP:
    $templater vB_Template::create('mostrar10'); //Cargar Plantilla en el Objeto
    $templater->register_page_templates(); //Esta funcion registra el header,headerinclude,footer
    $templater->register('navbar'$navbar); //Registramos la variable Navbar para que pueda ser usada en las plantillas como $navbar
    $templater->register('listadosquecrece'$listadosquecrece); //registramos listado crece para que pueda ser usado en la plantilla
    print_output($templater->render());//Imprimos en Pantalla la plantilla 
    Más Informacion aqui: [HOW TO - vB4] Rendering templates and registering variables - a short guide - vBulletin.org Forum



  7. #4
    Usuario
    Fecha de ingreso
    26/nov/2009
    Mensajes
    84
    Gracias
    5
    Agradecido 33 veces en 27 mensajes
    Poder de Credibilidad
    5

    Predeterminado Respuesta: Mostrar en una tablas, datos extraidos de la Base de da

    Pues muchas gracias.

    Andaba yo más que perdido en esto.

    Salud2



  8. #5
    Usuario
    Fecha de ingreso
    21/nov/2009
    Edad
    41
    Mensajes
    45
    Gracias
    5
    Agradecido 0 veces en 0 mensajes
    Poder de Credibilidad
    0

    Predeterminado Respuesta: Mostrar en una tablas, datos extraidos de la Base de da

    Soylms, puedes poner como te quedo el archivo remplazando los eval???? No logro entenderlo.



  9. #6
    Usuario
    Fecha de ingreso
    26/nov/2009
    Mensajes
    84
    Gracias
    5
    Agradecido 33 veces en 27 mensajes
    Poder de Credibilidad
    5

    Predeterminado Respuesta: Mostrar en una tablas, datos extraidos de la Base de da

    Código PHP:
    <?
    // ######################## SET ENTORNO PHP ###########################
    error_reporting(E_ALL & ~E_NOTICE);

    // ##################### DEFINIR COSNTANTES IMPORTANTES #######################

    define('THIS_SCRIPT''mostrar10');  
    /*
    este es el nombre de este Scrit, asi que en las plantillas podran usar una condicion asi:(en el Navbar o footer por ejemplo)
    <if condition="THIS_SCRIPT == 'mostrar10'">
        No mostrar Adsense, algo especial etc, etc
    </if>
    */
    // #################### PRE-CACHE DATOS Y PLANTILLAS ######################
    //Obtener Grupo de Frases  Especiales
    $phrasegroups = array();

    //Obtener Plantillas Especiales desde el datastore
    $specialtemplates = array();

    // pre-cache Plantillas usadas en todas las Acciones de este php
    $globaltemplates = array(
            
    // Pon aqui todas las plantillas que hayas creado, pero curiosamente si no las pones, igualito funciona (esto es lenguaje c pues
            
    'mostrar10'
    'mostrar10temasbit',//RECUERDA QUE ESTE ES EL NOMBRE DE LA PLANTILLA QUE CREASTE
    );

    // pre-cache Plantillas usadas para Acciones Estemplates used by specific actions
    $actiontemplates = array();

    // ########################## REQUERIDO ############################
    require_once('./global.php'); //con esto cargas todas las opciones de vBulletin, ademas de la conexion, acceso a MySQL, etc, etc

    // #######################################################################
    // ######################## COMIENZO DEL SCRIPT PRINCIPAL ############################
    // #######################################################################

        
    $temas_query $db->query_read("SELECT * FROM " TABLE_PREFIX "thread where threadid>1 and threadid<10"); //llenamos $temas_query con los resultados de la consulta, se va a comportar como un array
            
    if ($vbulletin->db->num_rows($temas_query) > 0//verificamos que tenga al menos 1 registro para comenzar a procesarlos
            
    {    
                while (
    $mis10temas $vbulletin->db->fetch_array($temas_query)) //haces que cada registro de la consulta, se guarde individualmente en $mis10temas para poder usar esta variable en nuestra plantilla
                
    {
                    
    //aqui la funcion para convertir la fecha de numero a fecha dd/mm/yyyy basado en vbulletin y la hora local del usuario
                    
    $mis10temas['dateline'] = vbdate($vbulletin->options['dateformat'], $mis10temas['dateline']);  
                    
    $mis10temas['lastpost'] = vbdate($vbulletin->options['dateformat'], $mis10temas['lastpost']);  
                    eval(
    '$listadosquecrece .= "' fetch_template('mostrar10temasbit') . '";'); //aqui estamos creando una nueva variable llamada $listadosquecrece en donde estamos guardando la plantilla mostrar10temasbit procesada por cada registro, 
                    //lo ideal seria llamarla $mostrar10temasbits (plural), pero por motivos de tutorial estoy usando otro nombre de variable para que no se equivoquen
                
    };
            }
            else
            {
            eval(
    '$listadosquecrece = "' "<tr><td class='alt1' colspan=5><center>No registros</center></td></tr>" '";');
            
    //si no hay registros muestro que ese mensaje como un TD en la tabla, le puse colspan=5 porque serán 5 las columnas que mostraré
            
    }                


    $navbits = array(); 
    $navbits[$parent] = 'Pagina de Prueba';  //esto se vera en el NavBar (el arbol que sale cuando entras a un tema, etc en el navbar)
    $navbits construct_navbits($navbits); //Que vBulletin lo compile a su manera
    $templater vB_Template::create('mostrar10'); //Cargar Plantilla en el Objeto
    $templater->register_page_templates(); //Esta funcion registra el header,headerinclude,footer
    $templater->register('navbar'$navbar); //Registramos la variable Navbar para que pueda ser usada en las plantillas como $navbar
    $templater->register('listadosquecrece'$listadosquecrece); //registramos listado crece para que pueda ser usado en la plantilla
    print_output($templater->render());//Imprimos en Pantalla la plantilla 
    ?>
    Salud2



  10. #7
    Usuario
    Fecha de ingreso
    21/nov/2009
    Edad
    41
    Mensajes
    45
    Gracias
    5
    Agradecido 0 veces en 0 mensajes
    Poder de Credibilidad
    0

    Predeterminado Respuesta: Mostrar en una tablas, datos extraidos de la Base de da

    Gracias, pero mi sigue tirando el error

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: navbar in [path]/includes/functions.php on line 3893

    Parse error: syntax error, unexpected T_STRING in /www/docs/actors-studio.org/public_html/Foros/mostrar10.php(65) : eval()'d code on line 1

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10 in [path]/includes/functions.php on line 3893



    porque se sigue usando el fetchtemplate....



  11. #8
    Usuario
    Fecha de ingreso
    21/nov/2009
    Edad
    41
    Mensajes
    45
    Gracias
    5
    Agradecido 0 veces en 0 mensajes
    Poder de Credibilidad
    0

    Predeterminado Respuesta: Mostrar en una tablas, datos extraidos de la Base de da

    Bueno... vuelvo al ataque con esto....
    aparecen bien... pero siempre aparece esto antes

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10temasbit in [path]/includes/functions.php on line 3932

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10temasbit in [path]/includes/functions.php on line 3932

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10temasbit in [path]/includes/functions.php on line 3932

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10temasbit in [path]/includes/functions.php on line 3932

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10temasbit in [path]/includes/functions.php on line 3932

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10temasbit in [path]/includes/functions.php on line 3932

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10temasbit in [path]/includes/functions.php on line 3932

    Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: mostrar10temasbit in [path]/includes/functions.php on line 3932



    QUe puede ser???



  12. #9
    Usuario
    Fecha de ingreso
    29/mar/2010
    Edad
    33
    Mensajes
    20
    Gracias
    3
    Agradecido 0 veces en 0 mensajes
    Poder de Credibilidad
    0

    Predeterminado Re: Mostrar en una tablas, datos extraidos de la Base de datos

    Perfecto, me salio 10 puntos y muy bien explicado, lo mejor es que va con ejemplo y eso hace que sea mas facil de entender.
    Una consulta, tengo 30 filas que se extraen de la tabla. Como se puede hacer para "paginarlas", es edcir que por ejemplo, se muestren 10 files en 3 paginas??

    Saludos



  13. #10
    Administrador Avatar de Jhonnyf
    Fecha de ingreso
    21/jun/2012
    Mensajes
    1.472
    Gracias
    2
    Agradecido N veces en N mensajes :)
    Poder de Credibilidad
    10

    Predeterminado Respuesta: Mostrar en una tablas, datos extraidos de la Base de da

    Lo primero que necesitas es una Variable para indicar los registros por pagina (este ejemplo es para paginar todos los post NO TEMAS, ojo con eso)

    Código PHP:
    $perpage 10//si pones 30, paginará de 30 en 30 registros 
    luego necesitas saber cuantos registros hay en total para poder paginar (aqui se crea el $itemcount['itemcount'])

    Código PHP:
    $itemcount $db->query_first("SELECT count(post.postid) as itemcount
                                    FROM " 
    TABLE_PREFIX "post as post
                                    WHERE post.visible=1 
    la siguiente secuencia está explica Linea, por linea

    Código PHP:
    $pagenumber $vbulletin->input->clean_gpc('r''pagenumber'TYPE_UINT); //Obtenemos el parametro pagenumber de la URL
        
    sanitize_pageresults($itemcount['itemcount'], $pagenumber$perpage,$perpage,$perpage); //se hace una iniciacion del paginador de vBulletin usando los parametros básicos
        
    $limitlower = ($pagenumber 1) * $perpage 1// se obtiene el rango actual de registros a visualizar
        
    $limitupper $pagenumber $perpage//Rango Maximo a visualizar

        
    if ($limitupper $itemcount['itemcount'])
        {
            
    $limitupper $itemcount['itemcount'];
            if (
    $limitlower $itemcount['itemcount'])
            {
                
    $limitlower $itemcount['itemcount'] - $perpage;
            }
        } 
    // correccion de errores en rango

        
    if ($limitlower <= 0)
        {
            
    $limitlower 1;
        } 
    //correcion de errores en rango

        
    $pagenav construct_page_nav($pagenumber$perpage$itemcount['itemcount'], 'mostrar10.php?');//Crea el Paginador, ojo con el nombre del archivo PHP 
    Eso del Rango de visualizacion, es por ejempo si estas viendo la pagina 10, y de 10 en 10 registros, solo debes traer el rango de 101 al 110 y no todos los N registros que existan

    Llamas a los regitros en el rango que se generó con el Script anterior (LIMIT)

    Código PHP:
    $get_temas_query $vbulletin->db->query_read("SELECT *
                                            FROM " 
    TABLE_PREFIX "post as post
                                            WHERE post.visible=1
                                            order by dateline desc
                                            LIMIT " 
    . ($limitlower 1) . ", $perpage"); 
    Finalmente solo llamas en la Plantilla a esta variable: $pagenav y tendrá un paginas standar de vBulletin

    Ojo, vuelvo a repetir, este es un Script que llama a los Ultimos POST no a los TEMAS, asi que modificalo segun el uso que le quieras dar



  14. #11
    Usuario
    Fecha de ingreso
    29/mar/2010
    Edad
    33
    Mensajes
    20
    Gracias
    3
    Agradecido 0 veces en 0 mensajes
    Poder de Credibilidad
    0

    Predeterminado Re: Mostrar en una tablas, datos extraidos de la Base de datos

    Muy Groso Jony!!!....Muchisimas Gracias!!!
    Con suerte, el lunes tendre terminado un HACK para vbulletin 3.8 (aun tengo que pulirlo)
    Gracias nuevamente!!



Etiquetas de este tema