Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
archivos bajados

Hola compañeros

Es posible con php contar cuantas veces pulsa un internauta en uno de los lincs de le web para descargarse un archivo? Me gustaria saber cuanta gente se baja el qué para ver que es lo que mas interesa

Si no se puede con php, sabeis como lograrlo?

Gracias
Responder Con Cita
  #2  
Antiguo 30-05-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 22
Julià T. Va por buen camino
Si te sireve un ejemplo en asp te lo mando
Responder Con Cita
  #3  
Antiguo 30-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
ups, pos no se si el servidor del Club soporta asp, le tendre que preguntar a Emilio

De todas maneras, si no es mucha molestia, podrias ponerlo?

Gracias de antemano
Responder Con Cita
  #4  
Antiguo 30-05-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
No sirve. El php y el asp están reñidos, por lo menos en este servidor.
Responder Con Cita
  #5  
Antiguo 30-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vamos a ver si estoy entendiendo.

Contar cuántas veces se da click a un enlace no sé (ni creo que se pueda), pero contar cuantas veces se baja un archivo seguro que debe poderse.

Te haces una tabla de archivos:

archivos = (nombre, ruta, cuenta)

Y en lugar de poner el enlace directo:

Código:
<a href=ruta>nombre</a>
pones un enlace a un script:

Código:
<a href='download.php?nombre=nombre del archivo&ruta=ruta al archivo'>nombre</a>
El script download.php usa un header para bajar el archivo y aumenta la cuenta:

Código PHP:
<?
  header
("location: $ruta");

  
mysql_connect(blablabla);
  
mysql_query("update archivos set cuenta=cuenta+1 where nombre=$nombre");
?>
¿Es esto lo que quieres?


// Saludos
Responder Con Cita
  #6  
Antiguo 30-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
pues es muy probable que sea eso roman , lo pruebo y te cuento

muchas gracias
Responder Con Cita
  #7  
Antiguo 30-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Desde luego tendrás que hacer un mejor diseño de la tabla

Y ya que andas en esto te dejo un ejercicio:

En tu página usa un contador fiable

// Saludos
Responder Con Cita
  #8  
Antiguo 02-06-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Hola roman

siento haber tardado tanto en responder, pero es que he estado liadillo haciendo otras cosillas pa la gues

Bueno, he probado lo que me dijiste y, el tema de actualizar la tabla, de coña, pero el tema de "lanzar" la URL para descargar lo que sea... como que no me ha salido ya que el "header" me devuelve un error

Pero no te apures, que sigo investigando

Gracias a todos
Responder Con Cita
  #9  
Antiguo 02-06-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por cadetill
...pero el tema de "lanzar" la URL para descargar lo que sea... como que no me ha salido ya que el "header" me devuelve un error
...
¿Y podría saberse cuál es el error?

Recuerda que header debe ejecutarse antes de que se mande cualquier salida al navegador. Por ejemplo,

Código PHP:
<?
  
echo 'Yuupi!!';
  
header(...);
?>
te producirá un error. Incluso si dejas una línea en blanco antes de "<?" te mandara un error porque ya mandó una línea en blanco al navegador.

// Saludos
Responder Con Cita
  #10  
Antiguo 03-06-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
vale, otro fallo de principiante. Primero habia puesto un "echo" para ver si recibia biem los parametros, y despues, en el parametro de la URL le pasaba toda la URL entera (es decir, www.clubdelphi.com/.....) y me decia que el archivo no existia. Le he puesto el path relativo y....... A FUNCIONAR!!!!!

Mil gracias de nuevo!!!!!!

Bueno, me voy a la cama a ver si puedo dormir
Responder Con Cita
  #11  
Antiguo 03-06-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Una última nota:

Me parece que debería funcionar con el URL completo (y creo que es lo que recomiendan), sólo que debe ser completo, esto es, debe incluir "http://"

// Dulces sueños
Responder Con Cita
  #12  
Antiguo 03-06-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Bueno amigos, para aquel que lo quiera o le interese el tema, os envío la solución final.

La tabla tiene solo dos campos (que se puede ampliar segun necesidades) y se llama seguimiento con los campos nombre (varchar15) y contador (integer)

el php se llama download.php y seria
Código:
<?php
	header("location: $ruta");
	
	// realizamos conexion
   	$Servidor = "myserver";
	$Usuario  = "myuser";
	$Clave    = "mykey";
	$IdConexion = mysql_connect($Servidor, $Usuario, $Clave);
	
	// seleccionamos base de datos
	$NombreBD = "mybd";
	mysql_select_db($NombreBD, $IdConexion);
	
	if ($IdConexion == 0)
	{
	  echo "Error de conexión con la base de datos mySQL";
	  exit(-1);
	}

        // miramos si existe el registro
        $sql = "select nombre from seguimiento where nombre = '$nombre'";
        $IdConsulta = mysql_query($sql, $IdConexion);
        $NFilas = mysql_num_rows($IdConsulta);

        if ($NFilas == 0)
        { // si no existe, insertamos 
	   $sql = "insert into seguimiento values('$nombre', 1)";
           $IdConsulta = mysql_query($sql, $IdConexion);
	   if ($IdConsulta == 0)
	   {
	     echo "Error en la sentencia SQL o no tiene permisos para ejecutarla";
	     exit(-1); 
	   }
        }
        else
        { // si existe hacemos update
           $sql = "update seguimiento set contador = contador + 1 where nombre = '$nombre'";
           $IdConsulta = mysql_query($sql, $IdConexion);
           if ($IdConsulta == 0)
           {
             echo "Error en la sentencia SQL o no tiene permisos para ejecutarla";
             exit(-1);
           }
        }
	 
	// cerramos conexion con MySQL
	mysql_close();
?>
y la llamada, como indicó el amigo roman

Código:
<a href="download.php?nombre=winzlb&ruta=winzlb.zip">
No he probado todabia la ruta absoluta poniendo el "http://" aunque lo probare, pero si lo dice el amigo roman, seguro que funciona

Por supuesto, los nombres de tabla, campos y archivo php son obcionales

Seguro que es mejorable, asi que, estoy abierto a mejoras en el codigo

Gracias a todos por la ayuda
Responder Con Cita
  #13  
Antiguo 03-06-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Me parece que hay un error en la lógica de tu procedimiento:

Si el nombre de archivo no existe insertas un registro en la tabla de seguimientos. Esto conlleva a que cualquier listo ponga en su navegador el url

download.php?nombre='lo que se me ocurra'&ruta=...

lo que ocasionará el registro de un archivo que no existe.

Me parece que sería mejor que en tu tabla de seguimientos (o en la de archivos disponibles, porque hay una no?) pongas todos los archivos de que dispongas inicializando contador a 0. Así, en la consulta

"select nombre from seguimiento where nombre = '$nombre'";

si no hay registros ya sólo indicas el error.

// Saludos

pd: Por cierto, el mysql_close() del final no es necesario.
Responder Con Cita
  #14  
Antiguo 03-06-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por roman
Si el nombre de archivo no existe insertas un registro en la tabla de seguimientos. Esto conlleva a que cualquier listo ponga en su navegador el url

download.php?nombre='lo que se me ocurra'&ruta=...
Pos no habia caido en eso!!! Pero claro, lo que yo pretendia con eso era precisamente el no tener que poner yo "a pelo" en la tabla en nombre del archivo, despreocuparme de ello, pero si no hay mas remedio....

Gracias de nuevo
Responder Con Cita
  #15  
Antiguo 24-12-2007
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 21
MAXIUM Va camino a la fama
¿Y como sería llevar la cuenta en un.txt y no una base de datos?
Responder Con Cita
  #16  
Antiguo 25-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por MAXIUM
¿Y como sería llevar la cuenta en un.txt y no una base de datos?
Especifica un poco más. En PHP existen no pocas funciones para trabajar, directamente, con archivos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:24:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi