entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Contador de descargas en PHP y MySQL desde Select

Quería pediros ayuda porque me estoy volviendo loco con esto y no consigo sacarlo.

Tengo una página en PHP en la que hay un combo con varias opciones para seleccionar y que carga las diferentes opciones del combo desde una tabla en MySQL. Dependiendo de la elección, descarga un fichero. El link de ese fichero también la lee desde una columna de la misma tabla.

El problema es que me gustaría que dependiendo de que opción elija para descargas el fichero, querría hacer un contador que me sumase las descargas por cada uno de esos ficheros independientemente para saber cuantos archivos se bajan de cada opción.

La tabla la llamo: copilot
Las columnas que forman la tabla son:

  • Id (empieza en 0 cuyo valor es "selecciona una opción" y en donde no se descarga nada, y a partir de 1, 2, 3, etc pertenecería a cada una de las opciones del combo a descargar)
  • Opción (aquí indico el nombre del fichero a descargar)
  • Enlace (aquí esta el link al fichero del estilo: ../prueba/mifichero.zip
  • Descripción (incluye apuntes míos internos)
  • Descargas (su valor inicial es 0. Aquí es donde quiero que se vayan sumando +1, pero en la fila de la opción que se descargue)
    Digamos que hay 3 opciones a descargar incluidas en 4 filas:
    -Opción 1
    -Opción 2
    -Opción 3

Bien si selecciono en el combo la opción 3 y abre el link a dicha opción, mi objetivo es que sume +1 en la columna "descargas" de la opción 3.
Pongo el código que uso en la página PHP para llamar al combo y como lo tengo ahora:

<?php
function generaopciones()
{
include 'miconexion.php';
conectar();
mysql_set_charset('utf8');
$consulta=mysql_query("SELECT enlace, opcion FROM copilot ORDER BY id");

// Voy imprimiendo opciones a elegir de copilot
echo "<select name='$opcionSeleccionada' id='$opcionSeleccionada' onchange='if (this.value) window.location.href=(this.value)'>";

while($registro=mysql_fetch_row($consulta))
{
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
}
echo "</select>";
desconectar();
}
?>

<div class='post format-quote box' style="left: 0px; top: -20px; height: auto;">
     <div id='contenido' class='seleccion' style="width: 100%; height: auto;">
   <div class="seleccionletrapeque" style="height: auto;"><h4><strong>
   Avisos no oficiales radares copilot android gps gratis<br><br>actualizacion 
    2/11/2.016</strong></h4></div><div class="descripcion"><h1>En esta categoría puedes <strong>descargar gratis los avisos de radares fijos y 
    móviles para GPS Copilot Android, así como radares de tramo y radares de semáforo con avisos de velocidad máxima de España y Portugal</strong>. 
    <br>Estos avisos de radares no son oficiales y pertenecen a una base de datos distinta a la original.
    <br>Selecciona descargar los avisos de radares para Copilot Android o un manual de ayuda para la instalación.</h1></div><br>
  <div>  

   <?php generaopciones(); ?><br>
  </div>
  </div>
  </div>

Os agradecería muchísimo que me indicaseis lo que tengo que cambiar y agregar porque no doy con ello y no tengo muchos conocimientos de MySQL y PHP.

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @todopoi,

para implementar este contador, en vez de que el al elegir la opción se vaya directamente a descrgar el archivo, lo que tenés que hacer es que las descargan vayan a otro archivo PHP, el que debe recibir como parámetro el archivo a descargar, idealmente el ID del archivo (lo que implica que en vez de la columna "enlace", tenés que poner la columna "id" en el formulario de descarga:

<select name='nombreSelect' id='nombreSelect' onchange='if (this.value) window.location.href=("descargas.php?id="+this.value)'>
  <option value='1'>descripción</option>
  <option value='2'>descripción</option>
  ...
</select>

Suponiendo que este archivo PHP se llama descargas.php, lo que tiene que hacer es:

  • leer el valor recibido
  • hacer una query para con el ID
  • obtener el nombre del archivo
  • hacer el UPDATE para sumar 1 al valor de la descarga
  • enviar el archivo al navegador.

Es una forma de interceptar las peticiones de descarga para poder hacer algo antes de enviar el archivo al que lo pide...

Saludos cordiales!

PD: no ponés la estructura de las tablas completas, pero pareciera que no estás normalizando bien.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta