¿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.pdfEn 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:
public function get_files_table() {
$mysqli = $this->aet->getAetSql();
$query = 'SELECT * FROM files';
if ($stmt = $mysqli->prepare($query)) {
$stmt->execute();
$stmt->bind_result($idreg, $fecha, $nombre_corto, $nombre_largo, $description, $link);
$data = [];
while ($stmt->fetch()) {
$nestedData = [];
$nestedData['idreg'] = $idreg;
$nestedData['fecha'] = $fecha;
$nestedData['nombre_corto'] = $nombre_corto;
$nestedData['nombre_largo'] = $nombre_largo;
$nestedData['description'] = $description;
$nestedData['link'] = '<a href="' . $link . '">Descargar</a>';
$data[] = $nestedData;
}
}
return $data;
}
Ahora el get para el ajax:
$op = isset( $_GET['op'] ) ?
(int
) $_GET['op'] : 0;
if ($op === 1) {
$result = $functions->get_prop_table();
header('Content-type: text/json'); header('Content-type: application/json'); }
Si necesitas hacer más cosas mediante ajax, puedes crear más ifs con distintos números para cada función que tengas.
$('#example').DataTable( {
processing: true,
lengthChange: false,
ajax: {
url: '/get', // la url donde tienes el archivo que gestiona los get
dataSrc: '',
data: function(d) {
d.op = 1; // la opción, en este caso 1
}
},
language: {
"url": "//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json"
},
columns: [
{ data: 'idreg' },
{ data: 'fecha' },
{ data: 'nombre_corto' },
{ data: 'nombre_largo' },
{ data: 'description' },
{ data: 'link' }
]
});