Llamar a una Tabla y mostrar los datos en una pagina propia (mostrar10.php)

imported_Jhonnyf Seguir

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
Recuerda que aqui hay un ejemplo más basico
Enlace eliminado

este tutorial es para listar el contenido de alguna tabla tal y como se muestra los temas cuando uno entra en los foros :D, solo vamoa a mostrar los temas con el id de 1 al 10

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

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 :D


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

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)
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
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:

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

Aqui el ejemplo de como quedaria
http://www.ciudadanime.com/mostrar10.php
 

SenDoh

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
28 Jul 2008
Mensajes
60
hay cosas que no me quedan muy claras... donde va el mostrar10.php ???

despues de eso tengo que crear 2 plantillas verdad?
mostrar10temasbit y mostrar10temas

luego para visualizar la pagina con las variables llamadas del .php tengo que crear una nueva pagina o modulo mostrando la plantilla mostrar10temas ????

estoy en lo correcto???

gracias!
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
hay cosas que no me quedan muy claras... donde va el mostrar10.php ???

despues de eso tengo que crear 2 plantillas verdad?
mostrar10temasbit y mostrar10temas

luego para visualizar la pagina con las variables llamadas del .php tengo que crear una nueva pagina o modulo mostrando la plantilla mostrar10temas ????

estoy en lo correcto???

gracias!
  1. el mostrar10.php es un archivo, va en la raiz de tu foro
  2. si, tienes que crear las plantillas, aunque puedes evitarlas siguiendo este tema: http://www.vbhispano.com/foros/f5/solucionado_vbulletin_php_db-8227/#post42740
  3. mostrar10.php llama a mostrar10 (la plantilla) y esta a si vez a la variable $listadosquecrece que es la sumatoria del listado, registro por registro (concatenacion) basado en la plantilla mostrar10temasbit
si me preguntan con numeros, será más facil responderles :D
 

SenDoh

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
28 Jul 2008
Mensajes
60
ahhhh me funciono.. bien! gracias.. pero aun tengo algunas dudas (ahora preguntare con numeros hehehe ^^)

1) Para modificar la pagina .php tengo que modificar el mismo archivo?? o la plantilla mostrar10 ????
2) Llamando al global.php puedo usar CUALQUIER variable?? osea puedo llamar las variables $home[leftblocks], $show['left_column'] (adv portal) o $forumbits (FORUMHOME) ?????
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
  1. Eso ya depende de lo que quieres hacer, el estilo de programacion que usé es para que el php te facilite los datos y en las plantillas tu las manipules para presentacion, asi que si quieres agregar un campo más, si este existe en la consulta, pues con modificar las plantillas es suficiente, te recuerdo en el ejemplo, tienes todos los campos de la tabla thread a tu disposicion porque se usó un "select *"
  2. con el Global tienes las variables GLOBALES, las que recuerdo ahorita son:
    $navbar, $footer, $bbuserinfo[CAMPO], configuraciones de plantillas, todas las opciones de vBulletin , etc... en el caso de $forumbits puedes usarlo como variable, pero recuerda que estará vacio porque esa variable se llena cuando es llamada desde forundisplay.php, en la caso de FORUMHOME es llenado desde el index.php
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
Jhonny, la sigo aqui... fijate en Actors Studio Teatro® - Foros - Listado de los 10 primeros Temas

y ahi veràs que en la variable pagetext sigue apareciendo con html del vbullettins pero no en html.

Salute.
ahora usa el parse que te indiqué en este link
http://www.vbhispano.com/foros/f58/que_tipo_html-8895/#post46597

esa parte del codigo quedaria asi
PHP:
$temas_query = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "post where postid in(29,37,45)"); //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
        {    
            
            if (!is_object($bbcode_parser))
            {
            require_once(DIR . '/includes/class_bbcode.php');
            $bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
            }
            
            
            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']);  
                $mis10temas['pagetext'] = $bbcode_parser->parse($mis10temas['pagetext'],0, true); //le aplicamos el parse
                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é
        }
PD1: estoy usando otra sentencia SQL para obtener los post que contengan BBCODES :D
PD2: Ejemplo: Ciudad Anime - Listado de los 10 primeros Temas
 

Actors

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
15 Oct 2008
Mensajes
141
Alabado seas Jhonny!!!!!!!!!!!!!!!!! Todo lo que he aprendido en estos tres dias es grandioso!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Ya te volveré a molestar!!!!!!!!!!!!!!

Gracias, gracias y más gracias.

Jhonny, una consulta tonta pero si miras mi web www.actors-studio.org he empleado todo lo aprendido en estos 3 dias... estoy tratando de que el fundo de esa pagina INICIO creada sea azul y no lo logro...

En inicio.php le he puesto <body bgcolor=blue> y nada, lo intente en la plantilla inicio y nada...

Se te ocurre algo?
 
Arriba