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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Tabla con ficheros para descargar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tabla con ficheros para descargar  (Leído 2,380 veces)
bgnumis

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Tabla con ficheros para descargar
« en: 10 Abril 2016, 20:03 pm »

Hola quisiera hacer una tabla para mostrar en una página listado.PHP que acudiera a mi base de datos de MySQL donde habría por cada archivo idreg, fecha, nombre corto, nombre largo, descripción y el propio archivo.

Lo que quiero es que al acceder a listado.PHP me saqué todos los registros para poder descargar el que sea.

He visto que el link a los archivos que estén en una carpeta se hace con el href. Pero ¿los ficheros no están en la base de datos no? Están en una carpeta que si la habré subido al servidor pero no se no veo claro como podría hacerlo.

¿Alguien podría ayudarme un poco a un vídeo o manual o código ejemplo para iniciarlo?

Gracias por adelantado


En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Tabla con ficheros para descargar
« Respuesta #1 en: 10 Abril 2016, 22:34 pm »

¿Tienes dudas con todo en general? ¿O solo es para crear el link al archivo? Especifica mejor lo que quieres.

Para tablas lo mejor que hay ahora mismo es el plugin de jquery datatables. Creas una función que coja las columnas y con ajax recoges los datos. Datatables se encarga de todo lo demás.

Ahora bien, lo del link, no sé que dudas tienes respecto a esto pero lo normal es subir los archivos a un dominio o subdominio de tu web que sea estatico (con php, perl, etc desactivado) y de ahí se descargan, el link sería algo así: http://static.tuweb.com/archivos/archivo1.pdf

En la base de datos se suele subir el link del archivo, no el archivo en sí (que se puede).

En el script php, imprimes el link dentro del href.

Como la documentación de datatables es un poco liosa (muchas cosas innecesarias) te dejo como lo haría yo:

Código
  1. public function get_files_table() {
  2.    $mysqli = $this->aet->getAetSql();
  3.  
  4.    $query = 'SELECT * FROM files';
  5.  
  6.    if ($stmt = $mysqli->prepare($query)) {
  7.        $stmt->execute();
  8.  
  9.        $stmt->bind_result($idreg, $fecha, $nombre_corto, $nombre_largo, $description, $link);
  10.  
  11.        $data = [];
  12.        while ($stmt->fetch()) {
  13.            $nestedData                 = [];
  14.            $nestedData['idreg']        = $idreg;
  15.            $nestedData['fecha']        = $fecha;
  16.            $nestedData['nombre_corto'] = $nombre_corto;
  17.            $nestedData['nombre_largo'] = $nombre_largo;
  18.            $nestedData['description']  = $description;
  19.            $nestedData['link']         = '<a href="' . $link . '">Descargar</a>';
  20.            $data[]                     = $nestedData;
  21.        }
  22.    }
  23.  
  24.    return $data;
  25. }

Ahora el get para el ajax:

Código
  1. $op = isset( $_GET['op'] ) ? (int) $_GET['op'] : 0;
  2.  
  3. if ($op === 1) {
  4.    $result = $functions->get_prop_table();
  5.  
  6.    header('Content-type: text/json');
  7.    header('Content-type: application/json');
  8.    echo json_encode($result);
  9. }

Si necesitas hacer más cosas mediante ajax, puedes crear más ifs con distintos números para cada función que tengas.

Código
  1. $('#example').DataTable( {
  2.    processing: true,
  3.    lengthChange: false,
  4.    ajax: {
  5.        url: '/get',  // la url donde tienes el archivo que gestiona los get
  6.        dataSrc: '',
  7.        data: function(d) {
  8.            d.op = 1;  // la opción, en este caso 1
  9.        }
  10.    },
  11.    language: {
  12.        "url": "//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json"
  13.    },
  14.    columns: [
  15.        { data: 'idreg' },
  16.        { data: 'fecha' },
  17.        { data: 'nombre_corto' },
  18.        { data: 'nombre_largo' },
  19.        { data: 'description' },
  20.        { data: 'link' }
  21.    ]
  22. });


« Última modificación: 10 Abril 2016, 22:40 pm por gAb1 » En línea

bgnumis

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: Tabla con ficheros para descargar
« Respuesta #2 en: 11 Abril 2016, 22:15 pm »

Hola gaB1

Muchas Gracias de verdad. Una duda chorra jeje. Como ves, aprendo muy poco a poco.

El primer código más o menos lo tengo claro. El segundo no, pero entiendo que también es necesario para que Ajax muestre los ficheros? Ya el tercero ejeje no sé muy bien que diferencia hay con el primero ¿que numera?

La duda principal: El código 1 y 2 los pondo en el mismo archivo listado.php ? O van en archivos diferentes=? Hasta ahora nunca había utilizado Ajax.

Muchas Gracias por adelantado y disculpas si lo que pregunto es una tontada.
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Tabla con ficheros para descargar
« Respuesta #3 en: 12 Abril 2016, 02:24 am »

No, tienen que ir en archivos distintos. El primero código es el script que coge los datos de la base de datos y crea las filas de la tabla. El segundo código es el get donde el ajax hace la petición de los datos a mostrar en la tabla.

El tercer código inicializa el plugin datatables en la tabla con id example, es javascript. Tienes que crear el html de la tabla, entra en la web de datatables y en los ejemplos tienes el código html. También tienes que descargarte el plugin (js y css) o puedes usar más facil el link del CDN así no tienes que descargarte nada.

Ahora bien, para montarlo todo, el primer código es una función; deberías de tener un archivo que recoja las funciones que usas en tu web, puedes crear una clase functions así llamas facilmente tus funciones desde cualquier parte de tu web. El segundo código va en un archivo a parte, crea un archivo llamado get.php y ahí vás poniendo los distintos get que necesites:

Código
  1. $op = isset( $_GET['op'] ) ? (int) $_GET['op'] : 0;
  2.  
  3. if ($op === 1) {
  4.    // primer get
  5. }
  6.  
  7. if ($op === 2) {
  8.    // segundo get
  9. }
  10.  
  11. // etc...

Basicamente lo que hacen los get es llamar a una función que devuelve datos, por ejemplo si necesitas llenar una lista de paises, ciudades, etc pues creas la funcion y haces un get con ajax jquery a la url (/get.php?op=1 o 2 o 3...) y así llenas las listas de manera dinamica, en este caso la tabla que necesitas.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre insersion a tabla html desde tabla sql
Bases de Datos
mokoMonster 2 3,928 Último mensaje 20 Febrero 2010, 01:20 am
por Shell Root
no me borra la tabla haciendo delete on cascade tabla n:m
Bases de Datos
kinos 2 4,101 Último mensaje 31 Julio 2010, 13:05 pm
por kinos
iDStore lista ficheros y directorios ocultos de ficheros .DS_Store
Nivel Web
MichBukana 0 3,230 Último mensaje 29 Agosto 2013, 09:21 am
por MichBukana
Conversión .sec a .py para tabla PAT
Scripting
LesterVynn 0 1,816 Último mensaje 19 Agosto 2015, 21:12 pm
por LesterVynn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines