• Domingo 22 de Diciembre de 2024, 23:48

Autor Tema:  Cuenta descarga  (Leído 2651 veces)

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Cuenta descarga
« en: Sábado 27 de Septiembre de 2008, 01:37 »
0
Hola:

En una web html sensillo, cambiando la extensión a .php. Quiero incluir esta frase: Descargar Manual WinPic800 PDF XPS.

En la palabra PDF que tenga un enlace a un archivo llamado Winpic800.pdf guardado en un directorio llamado manuales. Con el formato XPS lo mismo. La extensiones también podrían ser .zip si me interesa que se lo descarguen comprimido.

Subo estos archivos al servidor de Lycos y funciona. Lo que no se hacer es un cuenta click de descarga con PHP y MySQL.

Bueno, en un lado del texto "Descargar Manual WinPic800 PDF XPS" debe aparecer el número de descargas tanto en el enlace de PDF como en XPS ya que los datos descargados o que en cada click se guarda en la base de datos. Lo mismo que cuando visitamos un foro, al hacer click en un tema, se cuenta el números de visitas.

Me bajé el manual de php aquí, pero no se nada ni buscar en él.

Eso si, incluye el phpmyadmin para crear tablas  de MySQL que es donde se va a guardar los datos descargados.

Un cordial saludos.

EDIT:
En este código quiero hacer un contador de descarga. Que al descargar el archivo cuente esa descarga en MySQL y se muestre las cantidad de descargas al lado donde pone PDF.


Código: HTML
  1.  
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3. <title>Documento sin t&iacute;tulo</title>
  4. </head>
  5.  
  6. Descargar Winpic800 PDF XPS
  7. </body>
  8. </html>
  9.  

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Cuenta descarga
« Respuesta #1 en: Lunes 29 de Septiembre de 2008, 14:03 »
0
Create una tabla con los nombres de los documentos y un campo para el conteo, cuando entres a la página lo que puedes hacer es tomar el campo del conteo, sumarle +1 y actualizar la tabla de documentos, es bastante sencillo.
El pasado son solo recuerdos, el futuro son solo sueños

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Re: Cuenta descarga
« Respuesta #2 en: Lunes 29 de Septiembre de 2008, 14:54 »
0
Ahora me dice: La consulta SQL contiene errores. Aquí.

He puesto el código completo:

[php:255mdcxs]
  1.  
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Cuenta descargas</title>
  5. </head>
  6. <body>
  7. <p>Download Winpic800 PDX XPS</p>
  8. <p>
  9.   <?php
  10. // http://www.forosdelweb.com/f18/cuenta-d ... ost2598064
  11. $myconn = @mysql_connect("127.0.0.1","electronicapic"); // No utiliza contraseña
  12.  
  13. if (! $myconn){
  14. echo "Error al intentar conectarse con el servidor MySQL";
  15. exit();
  16. }
  17.  
  18. if (! @mysql_select_db("electronicapic_es_db",$myconn)){
  19. echo "No se pudo conectar correctamente con la Base de datos";
  20. exit();
  21. }
  22.  
  23. $sql = "UPDATE contador SET descargas = descargas + 1
  24. WHERE id = $GET[id]";
  25. $result = mysql_query($sql);
  26.  
  27. if (! $result){
  28. echo "La consulta SQL contiene errores.";
  29. exit();
  30. }
  31.  
  32. //while ($row = mysql_flech_array($result)){
  33. //echo "<P>",$row["nombre"]," - ",$row["apellido"],"</P>";
  34. //}
  35. ?>
  36. </p>
  37. </body>
  38. </html>
  39.  
  40.  
[/php:255mdcxs]

En el phpmyadmin que viene en Lycos me pone esto, no se si habré hecho algo mal.

Citar
Base De Datos electronicapic_es_db
MySQL ha devuelto un valor vacío (i.e. cero columnas).
 
SQL-query : [Editar]
SELECT * FROM `contador` LIMIT 0, 30  



     Tabla   Acción Campos Tipo Tamaño
   contador    Examinar  Seleccionar  Insertar  Propiedades  Eliminar  Vaciar  0   MyISAM      1.0 KB



Ver Foto:
« última modificación: Martes 30 de Septiembre de 2008, 03:14 por Meta »

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Cuenta descarga
« Respuesta #3 en: Lunes 29 de Septiembre de 2008, 15:44 »
0
Primero que todo edita el post y no coloques tus datos de lo que estás trabajando.
$sql = "UPDATE contador SET descargas = descargas + 1 WHERE id = ".$GET_[id];
El final dejalo de esa manera ya lo que estás capturando es texto dejando el $_GET[id] como una cadena.
El pasado son solo recuerdos, el futuro son solo sueños

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Cuenta descarga
« Respuesta #4 en: Lunes 29 de Septiembre de 2008, 15:46 »
0
Cuidado con lo que posteas si no quieres que te hackeen la web...

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Re: Cuenta descarga
« Respuesta #5 en: Lunes 29 de Septiembre de 2008, 16:15 »
0
Hola:

Gracias por la ayuda, voy a investigar.

Me asustaron  lo de hackear, espero que sea solo la dirección.

Saludos

EDIT:
Me sigue dando el mismo problema.

http://usuarios.lycos.es/electronicapic/prueba.php

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Re: Cuenta descarga
« Respuesta #6 en: Lunes 6 de Octubre de 2008, 05:47 »
0
Hola de nuevo:

He puesto esto aquí abajo.

[php:2popzj87]
  1.  
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Cuenta descargas</title>
  5. </head>
  6. <body>
  7. <p>Download Winpic800 PDX XPS</p>
  8. <p>
  9.   <?php
  10. $myconn = @mysql_connect("127.0.0.1","electronicapic"); // No utiliza contraseña
  11.  
  12. if (! $myconn){
  13. echo "Error al intentar conectarse con el servidor MySQL";
  14. exit();
  15. }
  16.  
  17. if (! @mysql_select_db("electronicapic_es_db",$myconn)){
  18. echo "No se pudo conectar correctamente con la Base de datos";
  19. exit();
  20. }
  21.  
  22. $sql = "UPDATE contador SET descargas = descargas + 1
  23. WHERE id = '".mysql_real_escape_string($GET[id])."';";
  24. $result = mysql_query($sql);
  25.  
  26. if (! $result){
  27. echo "La consulta SQL contiene errores.";
  28. exit();
  29. }
  30.  
  31. //while ($row = mysql_flech_array($result)){
  32. //echo "<P>",$row["nombre"]," - ",$row["apellido"],"</P>";
  33. //}
  34. ?>
  35. </p>
  36. </body>
  37. </html>
  38.  
[/php:2popzj87]

Parece que funciona. ¿Quiero poner el enlace que está en la carpeta manuales y el archivo se llama winpic800.pdf?

Prueba
http://usuarios.lycos.es/electronicapic/prueba.php

Un cordial saludos.

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Re: Cuenta descarga
« Respuesta #7 en: Martes 7 de Octubre de 2008, 14:07 »
0
Hola:

He optado por el método del archivo.txt que parece más fácil pero no logro contar nada.

Código: PHP
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Documento sin título</title>
  7. <style type="text/css">
  8. <!--
  9. .Estilo1 {color: #FFFFFF}
  10. -->
  11. </style>
  12. </head>
  13.  
  14. <body>
  15. <p class="Estilo1">.</p>
  16. <p class="Estilo1">.</p>
  17. <p class="Estilo1">.</p>
  18. <p class="Estilo1">.</p>
  19. <table width="520" border="10" align="center" cellpadding="1" cellspacing="1">
  20.   <tr>
  21.     <td colspan="4"><h1 align="center">Electrónica Pic</h1></td>
  22.   </tr>
  23.   <tr>
  24.     <td>Manual</td>
  25.     <td colspan="3"><div align="center">Formatos</div></td>
  26.   </tr>
  27.   <tr>
  28.     <td width="161"><div align="left">Minicom</div></td>
  29.     <td width="112"><div align="center"><a href="manual/minicom.pdf" target="_blank">PDF</a></div></td>
  30.     <td width="112"><div align="center"><a href="manual/minicom.xps" target="_blank">XPS</a></div></td>
  31.     <td width="112"><div align="center"><a href="http://www.pic16f84a.org/component/docman/doc_download/38-minicom-v110.html">ZIP</a>(pdf)</div></td>
  32.   </tr>
  33.   <tr>
  34.     <td><div align="left">WinPic800</div></td>
  35.     <td><div align="center">PDF</div></td>
  36.     <td><div align="center">XPS</div></td>
  37.     <td><div align="center"><a href="http://www.pic16f84a.org/component/docman/doc_download/41-winpic800-v11.html">ZIP</a>(pdf)</div></td>
  38.   </tr>
  39. </table>
  40. <p>
  41.   <?php
  42. //"file_id" es el numero de la descarga
  43. $fp= fopen( "micontador.txt", "r" );
  44. $i=0; //contador de ID's
  45. $big_buffer=""; //buffer gigante donde almacenamos todo el archivo
  46.  
  47. while( !feof($fp) )
  48.      {
  49.      $buf= fgets($fp);
  50.      if( $i==$_GET["file_id"] ) //si estamos leyendo el ID a descargar
  51.           {
  52.           $x= explode( "|", $buf ); //explotamos/partimos buffer por el delimitador
  53.           $big_buffer .= $x[0]; //concatenamos archivo
  54.           $big_buffer .= "|"; //concatenamos delimitador
  55.           $big_buffer .= ($x[1]+1); //concatenamos aumento +1 del contador
  56.  
  57.           echo file_get_contents( $x[0] ); //proporcionamos descarga
  58.  
  59.           unset($x);
  60.           }
  61.      else
  62.           $big_buffer .= $buf; //concatenamos buffer directo
  63.      unset($buf); //limpiamos buffer
  64.      $i++; //incrementamos
  65.      }
  66. fclose($fp); //cerramos archivo
  67. unset($fp); //limpiamos fp
  68.  
  69. $fp_out= fopen( "micontador.txt", "w" ); //abrimos archivo eliminando todo su contenido
  70. fwrite($fp_out, $big_buffer); //escribimos el buffer gigante
  71. fclose($fp_out);
  72. unset($fp_out); //limipiamos fp
  73. unset($big_buffer); //limpiamos buffer
  74. ?>
  75. </p>
  76. </body>
  77. </html>
  78.  
  79.  

La web de prueba es esta:
http://usuarios.lycos.es/electronicapic/index.php