elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Resuelto] configurar jquery datatables en client side usando enteros en la db
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] configurar jquery datatables en client side usando enteros en la db  (Leído 3,283 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
[Resuelto] configurar jquery datatables en client side usando enteros en la db
« en: 11 Enero 2016, 06:37 am »

Me gustaría hacer funcionar correctamente el buscador y de paso optimizar la tabla, pasar de server side a client side. Como no tengo idea de como funciona el client side de datatables pues active la opción para scriptearlo con php.

"El problema" si es que se le puede llamar así, es que no almaceno strings en la tabla a buscar, en lugar uso enteros para trabajar y luego con php muestro los strings desde otras tablas. Entonces, actualmente estoy usando joins (unos 5) entonces si quiero buscar tiene que ser con enteros (y eso no es profesional, el cliente y los usuarios tienen que poder buscar por el nombre...).

Un simple select a la tabla de la db devolveria enteros, menos un texto largo (descripción). ¿Hay alguna manera, al usar datatables en modo clientside, de acceder a las tablas donde están los nombres asociados a los enteros? O es mejor crear un objeto manualmente con los nombres?

Así es como lo inicializo:

Código
  1. $('#example').DataTable( {
  2.    processing: true,
  3.    serverSide: true,
  4.    lengthChange: false,
  5.    ajax: '/get?op=2',
  6.    language: {
  7.        "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Spanish.json"
  8.    },
  9.    columns: [
  10.        { data: 'id' },
  11.        { data: 'test' }
  12.    ],
  13.    select: true
  14. });

¿Sería muy dificil hacer esto?

Gracias!


« Última modificación: 5 Febrero 2016, 11:59 am por #!drvy » En línea

eLank0
eLhAcKeR r00Lz


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: configurar jquery datatables en client side usando enteros en la db
« Respuesta #1 en: 12 Enero 2016, 14:53 pm »

Primera duda al respecto.

¿Por qué si usas 'client side' tienes activada la propiedad serverSide?

Segunda duda.

¿De dónde sacas los datos? ¿Dónde está esa tabla? Es que me da la sensación de que hablas de client side cuando realmente haces consultas aún servidor.

Salu2


En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: configurar jquery datatables en client side usando enteros en la db
« Respuesta #2 en: 13 Enero 2016, 18:57 pm »

Sorry, parece que me explique mal. (Cuando digo tabla me refiero a una tabla de la base de datos)

Dije que quiero configurar datatables en modo clientside, no que lo este usando. Actualmente manejo todo en el script php y datatables simplemente recibe los datos y los muestra.

Es bastante complicado hacer funcionar el buscador de esta manera ya que cuando el script recibe la palabra del buscador lo que esta comparando son enteros y no strings.

Lo que necesito saber es:

1. Configurar datatables para que trabaje en modo cliente, pasandole la tabla entera (SELECT * FROM table) y que todo el trabajo lo soporte datatables.

2. Sustituir los enteros por los strings (de otra tabla). Digamos que la tabla principal contiene enteros y otras tablas contienen el entero como ID (primary key) y en la segunda columna el string (el nombre legible).

3. Hacer que funcione el buscador usando strings (y que datatables sea capaz de "traducir" la palabra o letras a los ids asociados).

Mi fuerte no es el javascript, por eso intento evitarlo a toda costa y cargar al servidor con todo  :-\

Edito: Aclaro la segunda pregunta.
« Última modificación: 13 Enero 2016, 19:03 pm por gAb1 » En línea

eLank0
eLhAcKeR r00Lz


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: configurar jquery datatables en client side usando enteros en la db
« Respuesta #3 en: 14 Enero 2016, 09:16 am »

Tendrás que cargar previamente los datos y luego ejecutarlos en jQuery Datatables. En la web oficial tienes miles de ejemplos:

https://www.datatables.net/examples/data_sources/js_array.html

Salu2
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: configurar jquery datatables en client side usando enteros en la db
« Respuesta #4 en: 15 Enero 2016, 06:38 am »

Vale, pero esa es la parte facil, pasarle un array con toda la info, el problema viene para sustituir los ids con los nombres. ¿Como puedo hacer esto?

Si data contiene enteros y quiero mostrar nombres... Se me ocurre crear otro array con los strings y el key como id, pero lo que no sé es como decirle a datatables que sustituya los enteros de data con los strings del otro array... Estoy mirando en los ejemplos pero no encuentro ninguno.

¿Sabes si es posible hacer esto?

Si no es posible con datatables habrá que hacerlo manualmente y pasarle el array con los nombres en lugar de los enteros. Tendré que pensar en como hacerlo, aunque primero me gustaría saber si datatables tiene esa opción.

Gracias.

Edito: Se me ocurre crear otro script php, o en el mismo que seleciona toda la tabla. Coger los nombres de las diferentes tablas y pasarlos en un array (cada entero de la principal es una tabla distinta) y luego devolver todos los arrays en uno. En el script separar los arrays y dentro de cada columna hacer que el valor de la columna sea, por ejemplo columna 2 "$strings[0][$coldata2]". Donde no estoy seguro es como sacar "$coldata2", que seria el entero de data.

La función dentro de cada columna como sería? render?

En terminar de trabajar armo el código, a ver si con tu ayuda consigo hacerlo funcionar.
« Última modificación: 15 Enero 2016, 07:01 am por gAb1 » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: configurar jquery datatables en client side usando enteros en la db
« Respuesta #5 en: 16 Enero 2016, 02:22 am »

Vale ya lo he solucionado todo de la manera mas sencilla posible.

Código
  1. $('#example').DataTable( {
  2.    processing: true,
  3.    lengthChange: false,
  4.    ajax: {
  5.       url: '/get?op=2',
  6.       dataSrc: ''
  7.    },
  8.    language: {
  9.        "url": "//website.com/js/DataTables-Spanish.json"
  10.    },
  11.    columns: [
  12.        { data: 'id' },
  13.        { data: 'columns' }
  14.        // more columns
  15.    ],
  16.    select: true
  17. });

Lo único que habia que hacer era dejar la query completa (con todos los joins) pero quitar el where y el order by, solo coger datos sin ninguna opción más ya que todo eso lo manjea datatables.

Y el buscador también funciona ya que la información que se le pasa es la que muestra.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda para configurar file Zilla server and client « 1 2 »
Hacking
Paul Young 18 8,276 Último mensaje 27 Mayo 2011, 18:02 pm
por y0g-s0th0th
[Resuelto] Jquery y foreach
Desarrollo Web
dimitrix 3 1,535 Último mensaje 6 Febrero 2015, 01:08 am
por dimitrix
[Resuelto] problema con datatables para acceder a un valor del objecto json
Desarrollo Web
gAb1 0 1,170 Último mensaje 6 Enero 2016, 02:52 am
por gAb1
Vulnerabilidades visibles en el codigo client side
Nivel Web
Schaiden 1 2,582 Último mensaje 29 Noviembre 2017, 06:06 am
por Luis Leon B
Diferencias entre CSP con meta tag client side y CSP en cabecera de respuesta?
Seguridad
@XSStringManolo 3 850 Último mensaje 26 Diciembre 2019, 03:43 am
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines