• ¡Bienvenido a XenFácil!

    Estás viendo el sitio como Invitado. Para poder participar en este sitio

    y obtendrás privilegios adicionales, acceso a otras áreas y mucho mas.

    ¡Es gratis!


    ¿Ya eres miembro? Inicia sesión

Solucionado Crear una página que lea de la base de datos

Estado
Cerrado para nuevas respuestas

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Has quitado los límites. Si vas a usar sólo un número y no una matríz, usa:
Insertar CODE, HTML o PHP:
    public function getData($Id)
    {
        return $this->fetchAllKeyed('
            SELECT COUNT( * ), data.id AS id
            FROM xf_data as data
            WHERE data.Id = '.$Id.'
            ', 'id');
 
    }
Los resultados deben de ser idénticos. La que te pongo es para el COUNT.

Salud2
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
Gracias, esto ya lo tengo y ya puedo irle dando un avance.

Ahora cambio de tercio: ¿Para mostrar una matriz como una tabla con el jQuery y que sea ordenable sin recargar la página aquí cómo se haría?
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
No Poseo Información
Salud2
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
Listo. Sólo hay que añadir los JS y cargarlos en template. Después, meter el script que carga el sorter y la tabla entre <script></script> en el template donde tengas la tabla.
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Ya nos irás diciendo como.

Salud2
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
Es fácil, a ver si cuando termine todo hago algunos tutoriales. Básicamente es eso, busca cualquier js que haga el sorting por jQuery y súbelo. Después, incluye (o en el head para el foro en general o en el template específico si sólo lo vas a usar ahí) el archivo JS en el template y por último tan solo pon la función sorting como un script en la cabecera de la página donde tengas la tabla.

---

Estoy probando más consultas, pero no me van. No se pueden usar el sum y el count? Me dice que no encuentra esas funciones.. (Mysqli prepare error: FUNCTION xenforo.SUM does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual, igual para el count)


Insertar CODE, HTML o PHP:
    public function getCountUser($userId)
    {
        return $this->_getDb()->fetchOne('
            SELECT COUNT ( * )
            FROM xf_data as data
            WHERE data.user_id = ('.$this->_getDb()->quote($userId).')
            ');
 
    }


Insertar CODE, HTML o PHP:
    public function getMoneyTrack($userId)
    {
        return $this->fetchAllKeyed('
            SELECT SUM ( money )
            FROM xf_money as money
            WHERE money.user_id = ('.$this->_getDb()->quote($userId).')
            ', 0);
 
    }
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
y si usas en vez de $this->fetchAllKeyed('... $This->fecthRow o fetchOne

Yo lo he hecho sin mayores problemas.

Salud2
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
No sé, no me va ni con fetchAllKeyed, ni con fetchRow ni con fetchOne. Lo raro es que me dice que tengo error de sintaxis en la del count y en la de sum que no existe la función xenforo.SUM

Supongo que cómo las llamo no tiene el problema, ya que el resto funcionan perfectamente:
Insertar CODE, HTML o PHP:
        $money = ($this->getModelFromCache('XenForo_Model_Money')->getMoneyTrack($userId));
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
¿Y usar:
Insertar CODE, HTML o PHP:
    public function getMoneyTrack($userId)
    {
        return $this->fetchAllKeyed('
            SELECT SUM( money )
            FROM xf_money as money
            [B][COLOR=#0000ff]GROUP BY[/COLOR][/B] money.user_id
            [COLOR=#0000ff][B]HAVING[/B][/COLOR] money.user_id = '.$userId
            , 'user_id');
 
    }

Mira a ver si te va. Yo he usado el COUNT absolutamente sin ningún problema. El SUM no encuentro modo de usarlo para mis fines, salvo pruebas. Mira a ver si están instaladas las librerías de operaciones de mysqli.

Salud2
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
No, tampoco va :(

Le estuve echando un ojo pero no encuentro ni el count ni el sum... ¿Sabes en qué archivo están?
Si los encuentras,¿podrías pegármelos aquí por si no los tengo?
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Hablo de librerías para linux (o windows) de MySQLi. O están instaladas en tu server o no podrás hacer nada. No son de XenForo.

Salud2
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Por si te sirve para algo: Yo ejecuto sin ningún tipo de problema esta consulta
Insertar CODE, HTML o PHP:
        $sqlMale = $this->fetchAllKeyed($this->limitQueryResults('
            SELECT COUNT( gender ) AS male
            FROM xf_user
            WHERE gender = \'male\'
            ', 1)
        , 'gender');
aunque para listarla correctamente preciso poner $sqlMale[1]['male']

Por ello te digo que no entiendo el error que obtienes. Debe de faltar alguna librería mysqli o tienes instalado qué se yo (en el servidor, no en XenForo).

Salud2
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
Ahora voy a hacer pruebas con eso, a ver si saco algo.

Me miré toda la librería Db del Zend de Xenforo y no encontré ni el count ni el sum, así que no sé si es que no está implementad0 (??) o si es otra cosa. Que sea algo del servidor lo descarto, porque ya lo probé en 3 sitios diferentes (el servidor web, con linux y mysql 5.13 creo (la mínima que pide el xenforo), en windows 7 con xampp y el último mysql y en ubuntu con xampp y la versión mínima del mysql que requiere xenforo).


EDITO: La variable $user que se utiliza en los templates dónde está declarada? Me interesa hacer otra de ese estilo, pero mirando los modelos no la encontré.
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Cuando no es un helper, es en los params de view del template o en el php.

Salud2
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
Bueno, ya corregí lo del count. Al final era una chorrada, es SELECT COUNT(), sin el espacio después del COUNT. Ahora a ver si encuentro qué pasa con el SELECT SUM..
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Puedes poner espacio después del paréntesis SELECT COUNT( gender ) pero no puedes poner el espacio antes del paréntesis, SELECT COUNT (gender), ya que da error. Fíjate como te lo escribía.
Por si te sirve para algo: Yo ejecuto sin ningún tipo de problema esta consulta
Rich (BB code):
        $sqlMale = $this->fetchAllKeyed($this->limitQueryResults('
            SELECT COUNT( gender ) AS male
            FROM xf_user
            WHERE gender = \'male\'
            ', 1)
        , 'gender');
aunque para listarla correctamente preciso poner $sqlMale[1]['male']

Por ello te digo que no entiendo el error que obtienes. Debe de faltar alguna librería mysqli o tienes instalado qué se yo (en el servidor, no en XenForo).

Salud2
Pienso que en el SUM te pasará tres cuartos de lo mismo, SUM( loquesea ).

Salud2
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
No, el SUM no va. Creo que la función está sin hacer, estoy buscando ya hasta ayuda generalista en zend.
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
Buff, no dije nada.

Va perfectamente, estaba testeando mal.Tenía 2 funciones con el sum (sum compras y sum ventas) y había inicializado la que no era, por lo que todo el código que iba modificando era del código comentado :S

Parte buena, puedo continuar :D
 

SmauG

XenForoUser
Mensajes
86
Puntuación de reacciones
9
Puntos
8
Vuelvo a tener un problemilla con lo de las rutas..

Partiendo de este prefix
Insertar CODE, HTML o PHP:
class Test_Route_Prefix_Index implements XenForo_Route_Interface
{
    public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router)
    {
        $action = $router->resolveActionWithIntegerParam($routePath, $request, 'test_id');
        return $router->getRouteMatch('Player_ControllerPublic_Index', $action, 'test');
    }
 
  public function buildLink($originalPrefix, $outputPrefix, $action, $extension, $data, array &$extraParams)
    {
        if (isset($extraParams['page']))
        {
            if (strval($extraParams['page']) !== XenForo_Application::$integerSentinel && $extraParams['page'] <= 1)
            {
                unset($extraParams['page']);
            }
        }
 
        return XenForo_Link::buildBasicLinkWithIntegerParam($outputPrefix, $action, $extension, $data, 'test_id', 'test_name');
    }
}

¿Cómo haría para leer el entero que le paso a través de la ruta (xfroot/test/1) en el Controller? Básicamente es el primer paso del Controller (acción Index) ya que a partir de ese entero lees la ID y puedes hacer el resto de funciones específicas para cada fila.
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Por el prefix:
Insertar CODE, HTML o PHP:
class Test_Route_Prefix_Index implements XenForo_Route_Interface
{
    public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router)
    {
        $action = $router->resolveActionWithIntegerParam($routePath, $request, '[B][COLOR=#ff0000]test_id[/COLOR][/B]');
        return $router->getRouteMatch('Player_ControllerPublic_Index', $action, '[B][COLOR=#0000ff]test[/COLOR][/B]');
    }
 
  public function buildLink($originalPrefix, $outputPrefix, $action, $extension, $data, array &$extraParams)
    {
        if (isset($extraParams['page']))
        {
            if (strval($extraParams['page']) !== XenForo_Application::$integerSentinel && $extraParams['page'] <= 1)
            {
                unset($extraParams['page']);
            }
        }
 
        return XenForo_Link::buildBasicLinkWithIntegerParam($outputPrefix, $action, $extension, $data, '[B][COLOR=#ff0000]test_id[/COLOR][/B]');
    }
}
test = ruta y test_id = id de la página o dato.
Fíjate que te he cambiado la última línea de código y te he suprimido ", 'test_name'"
Para leer el dato en el controller debes usar algo así:
Insertar CODE, HTML o PHP:
$test_id = $this->_input->filterSingle('test_id', XenForo_Input::UINT);
y luego obtener lo que desees a partir de esa id ($test_id)

Salud2
 
Estado
Cerrado para nuevas respuestas
Arriba