Al pinchar sobre un link ejecute php

No se si he entendido tu problema. Yo lo resolvería haciendo que el link enlazara a un script php que grabara los datos y lanzara la descarga.
No se si es así como tu lo deseas hacer.
Básicamente el enlace sería:
<a href="descargarFichero.php?nombreFichero">Descargar</a>
Y descargarFichero.php quedaría más o menos así:
if (!empty($_GET['nombreFichero']) {
funcionQueGrabaUsuarioyHora();
header ("location: " . $_GET['nombreFichero']);
} else {
echo "Error. Fichero No válido";
}

1 Respuesta

Respuesta
1
Con PHP no puedes hacer eso, ya que PHP se ejecuta en el servidor, generando un resultado que es ofrecido al usuario.
Lo podrías hacer con Javascript, pero así, no podrías grabar en la base de datos, solo lanzar la descarga del fichero.
De todos modos, la diferencia de tiempo entre que pulsas el enlace y se realiza la petición de ejecución del script PHP, es bastante pequeña, si es el tiempo lo que te da problemas.
Hola mi problema es el siguiente, tengo una serie de archivos en mi web que se pueden descargar pinchando en su correspondiente link. Lo que quiero hacer es que al pinchar en el link de alguno de los archivos me guarde el nombre de usuario y la hora en una tabla. Esto lo hago con php, pero lo que no se hacer es ejecutar el código de php justo cuando haga click en el archivo a descargar. ¿Cómo puedo hacer esto?
Gracias de antemano,
Hector Rucio Villegas
Me vuelvo a excplicar porque me parece que no lo he hecho bien. Te voy a dar más detalles haber si así me puedes ayudar.
En mi servidor tengo un directorio llamado ficheros que es en donde tengo los fichero que se pueden descargar.
En el directorio donde tengo mis paginas web tengo una que contiene el listado de los posibles ficheros a descargar de la siguiente manera <a herf="/ficheros/fichero.zip">Fichero</a>
Y luego tengo un script en php de la siguiente manera <? ¿php me conecto a una base de datos e introduzco el nombre del fichero y la fecha a la que se lo descargo?> Este script me funciona bien.
Pero lo que quiero hacer es que me ejecute dicho script justo cuando pinche en <a herf="/ficheros/fichero.zip">Fichero</a>
Y no se como hacer esto, que me ejecute ese código de php justo al pinchar en el link. no se si se podria hacer asi <a herf="/ficheros/fichero.zip" onClick=codigo de mi php>Fichero</a> o como debería hacerlo.
Gracias de antemano y espero me puedas echar una mano.
El problema es que el listado de ficheros ha descargar es para una empresa, pero en cuanto descargue un fichero ese fichero ya no debe de volver a salir en la lista de ficheros para descargar. Al mismo tiempo que tengo que guardar en una base de datos el usuario que se descargo el fichero y la hora ese es mi problema y no se como hacerlo.
Je je, vamos aclarando el asunto :-).
Bien, te cuento. El orden del proceso sería el contrario al que comentas.
Primero grabaría en la tabla los datos y luego procedería a la descarga. Aprovechando el código que te dí, tendríamos:
if (!empty($_GET['nombreFichero']) {
$query = "INSERT INTO BAJADOS VALUES ('" . $programa . "', '" . $usuario . "', '" . $fecha . "')";
if ($result=mysql_query($query, $conexion)) {
// Grabado correctamente
} else {
// No se grabó el registro
}
// Procedemos a la descarga.
header ("location: " . $programa);
} else {
echo "Error. Fichero No válido";
}
Espero que te sirva (no he profundizado demasiado en el código, ya que falta la conexión al servidor de base de datos, la selección de la base, etc...), pero básicamente sería así.
Claro, que podrías modificarlo y meter el header dentro del if, cuando se graba correctamente el registro en la tabla, para tener más control sobre la descarga.
Hay esta mi problema si eso es lo que quiero hacer. Pero no se como hacer que al pinchar en el link para descargar me marque en la tabla donde tengo el nombre de todos los ficheros a descargar que ese ya ha sido descargado para que la próxima vez no me lo descargue. DE ahí que quisiera ejecutar el código de php al pinchar en el link para que me hiciese eso precisamente pincho en el link de descarga y ejecuto el código de php el cual me cambia el valor de una tabla de mysql a true por ejemplo y ademas me mete el nombre del usuario en el campo nombre que inicialmente esta vacío. ¿Pero cómo hacer eso?
Puedes meter los ficheros a mostrar en una tabla e ir marcando los que se descarguen, el usuario que los descargue y la hora.
¿No?
Cuando saques por pantalla los ficheros, solo mostrarías los que no están descargados.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas