Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Contador de "cargas" en php/Mysql??

Estas en el tema de Contador de "cargas" en php/Mysql?? en el foro de Bases de Datos General en Foros del Web. Hola buenas, resulta que tengo una base de datos con información a cerca de discos, y luego un script php llamado verdisco.php que es el ...
  #1 (permalink)  
Antiguo 03/02/2005, 09:38
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Contador de "cargas" en php/Mysql??

Hola buenas, resulta que tengo una base de datos con información a cerca de discos, y luego un script php llamado verdisco.php que es el que según la ID del disco pasado, muestra un disco u otro.

Hasta ahí todo normal y correcto, pero me gistaría saber cómo puedo hacer un contador en php/mysql de las veces que se ha visto un determinado disco (ID de disco), para así luego poder hacer una especie de consulta en plan "discos más visitados". O sea que me imagino que tendré que añadir otra columna a discos e ir incrementando el valor de la columna "visto" por cada carga de página?¿

¿Cómo sería más o menos?

venga muchas gracias.

Última edición por apañero; 03/02/2005 a las 09:43
  #2 (permalink)  
Antiguo 03/02/2005, 11:39
Avatar de gualicho  
Fecha de Ingreso: enero-2005
Ubicación: Capital Federal - Argentina
Mensajes: 55
Antigüedad: 19 años, 3 meses
Puntos: 0
Yo creo que tendrías que usar cookies para que si un usuario actualiza la pagina no vuelva a sumar a menos que hayan pasado, por ejemplo, 24 horas... entendes?
Lo anterior es lo más comunmente usado.
Y sino si los usuarios son registrados, entonces si para ver el disco tienen que estar logueados, a lo sumo subis una visita por usuario.
  #3 (permalink)  
Antiguo 03/02/2005, 20:56
Avatar de H0m3r0J4y  
Fecha de Ingreso: abril-2002
Mensajes: 123
Antigüedad: 22 años
Puntos: 0
Usa secciones

El tema de las cookies es muy delicado, mucha gente no las acepta, ademas que pasa si estan usando una pc en un lugar público? la cookie solo contaria una visita de tantas.

Por el lado de PHP tenes que hacer un script que utilice sesiones para ejecutar una sentencia SQL en caso de que la sesion sea nueva, y por el lado de MySQL tendrias que hacer una tabla de 2 columnas, una que guarde el id del disco y la otra que sea un counter. La sentencia que actualiza los datos seria algo asi

UPDATE tablename SET counter = counter+1 WHERE id = $id

Espero que te sea util
Salutes!
  #4 (permalink)  
Antiguo 11/02/2005, 11:28
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Ok lo mejor me parece el tema de las sesiones, pero tengo un problema. Hay varios discos, luego si la variable de sesión se incrementa en uno de los discos, en otro disco estará incrementada, luego necesito una variable por disco.

Pongamos que tengo un disco de $id determinada. Hago en el script verdisco.php una cosa como:

Código:
//Registramos sesión Contador de disco determinado

session_register('contadord$id');    //contador01 por ejemplo, contador02 para otro..
  If ($contadord$id==0){  //ESTO ESTÁ MAL, NO SÉ CÓMO PONERLO BIEN
     $contadord$id ++;     //PASA LO MISMO
     $sql="UPDATE Discos SET D_VW = D_VW+1 WHERE D_ID = $id"; 
     mysql_query($sql,$conexion);
  }
El problema que tengo es que como hago el nombre de la variable contador de disco usando otra variable ($id), ¿cómo hago el If? Tengo que ver el contenido de un nombre formado por una variable.... Es gramática de php pero no sé cómo :P

Última edición por apañero; 11/02/2005 a las 11:34
  #5 (permalink)  
Antiguo 11/02/2005, 13:36
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
vale solucionado con un array:

session_register('CD');
//Registramos sesión Contador de disco
If ($CD[$id]==0){
$CD[$id] ++;
$sql="UPDATE Discos SET D_VW = D_VW+1 WHERE D_ID = $id";
mysql_query($sql,$conexion);
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:34.