Foros del Web » Programando para Internet » PHP »

Contador de visualizaciones de temas

Estas en el tema de Contador de visualizaciones de temas en el foro de PHP en Foros del Web. Hola chicos, pues tengo una consulta que hacerles porque estoy creando un sistema de noticias con PHP y MySQL, todo marcha bien, pero ahora quiero ...
  #1 (permalink)  
Antiguo 08/02/2007, 15:10
Avatar de Paulina Velasco  
Fecha de Ingreso: marzo-2006
Ubicación: México DF
Mensajes: 8
Antigüedad: 18 años, 1 mes
Puntos: 0
Pregunta Contador de visualizaciones de temas

Hola chicos, pues tengo una consulta que hacerles porque estoy creando un sistema de noticias con PHP y MySQL, todo marcha bien, pero ahora quiero agregarle al sistema la capacidad de poder mostrar la cantidad de lecturas que tiene cada artículo y ahí es donde estoy estancada porque no encuentro nada de información en google.

Ojala alguien pudiera darme una pista de como hacer esto.

Las noticias que agrego tiene cada una su ID pero ahora como le agrego su contador de lecturas a la base de datos identificando a la noticia que pertenecen.

Gracias
  #2 (permalink)  
Antiguo 08/02/2007, 21:21
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Contador de visualizaciones de temas

agrega un campo a la tabla de noticias llamado lecturas y cada vez que la lean lo incrementas en 1
  #3 (permalink)  
Antiguo 08/02/2007, 22:29
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Contador de visualizaciones de temas

efectivamente como dice el amigo dopon

- Tienes que modificar la estructura de la Tabla, agregando un nuevo campo numerico (int) llamado visitas, contador, etc .. (en estructura en phpmyadmin)
- Luego en tu Script, debes tener un if que pregunte si estamos leyendo una noticia (es decir si existe la variable $_POST['id'] o la que usas), si existe, tenemos que aumentar el contador en la tabla segun ese id.

Saludos
  #4 (permalink)  
Antiguo 09/02/2007, 12:38
Avatar de Paulina Velasco  
Fecha de Ingreso: marzo-2006
Ubicación: México DF
Mensajes: 8
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Contador de visualizaciones de temas

Eso es lo que estaba pensando, en poner una tabla extra que se incremente pero me atoro con el script, pero voy a poner en práctica lo que me aconsejan pero si tienen algún ejemplo me ayudarán mucho.

Esto no me urge porque es para un proyecto personal con la finalidad de aprender más.

Gracias, pero si me regalan un ejemplo se los agradeceré mucho.
  #5 (permalink)  
Antiguo 12/02/2007, 02:31
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Contador de visualizaciones de temas

bueno Paulinita Velasco
aqui te doy un ejemplo mas practico que te puede solucionar tu duda.

Primero debemos ver la Tabla Articulo, la cual debe tener un estructura como esta.
id|titulo|articulo|fecha|contador
Entonces cada Articulo tiene un Identificador.

Entonces en tu Script principal, cuando mostremos la noticia, en alguna parte debe haber algo como esto.

Código PHP:
<?

if ( $_REQUEST['id']  )
{
    
// Es decir estamos Visualizando un Articulo
    // Debemos Obtener el Numero de Visitas
    
    // Tu Conexion MYSQL
    
    
$select $mysql->query("SELECT `contador` FROM `articulos`");
    if ( 
$row $mysql->f_array$select ) )
    {
        
$contador=$row['contador'];
    }
    
    
// Aumentamos el Contador
    
$contador++;
    
    
// Lo volvemos a Insertar a la Tabla
    
    
$mysql->query("UPDATE `articulos` SET `contador` = '".$contador."' WHERE `id`=".$_REQUEST['id']."  ");
    
    
}

?>
Como puedes ver, veemos si estamos leyendo un articulo, obtenemos el contador, aumentamo el contador, y insertamos denuevo el contador.

Este es un metodo simple.

Saludos :P
  #6 (permalink)  
Antiguo 12/02/2007, 14:04
Avatar de Paulina Velasco  
Fecha de Ingreso: marzo-2006
Ubicación: México DF
Mensajes: 8
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Contador de visualizaciones de temas

Muchas gracias Deer por el script, ya con el voy a poder hacer lo que necesito porque ya vi donde estaba mal y que me faltaba agregar, muchas gracias, eres muy lindo.

Saludines.
  #7 (permalink)  
Antiguo 12/02/2007, 14:28
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: Contador de visualizaciones de temas

Creo que es mas facil hacerlo directamente en una consulta:
Código PHP:
$mysql->query("UPDATE articulos SET contador= contador+1 WHERE `id`=".$_REQUEST['id']."  "); 
__________________
Sin Ideas
  #8 (permalink)  
Antiguo 12/02/2007, 17:08
Avatar de Paulina Velasco  
Fecha de Ingreso: marzo-2006
Ubicación: México DF
Mensajes: 8
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Contador de visualizaciones de temas

Pues tomé prestado algo de lo que me sugirieron Deer y Oso_... para terminar el conteo de lecturas y ya funciona , aquí les dejo el código que estoy usando en la página donde se muestra la noticia completa por si alguien tiene la misma necesidad que yo, y/o también para saber si ustedes tendrían sugerencias para mejorarlo y hacerlo más efectivo. No olviden que estoy aprendiendo aún, asi que no sean malos si ven una burrada de mi parte.

Gracias chicos.

El código...

Página: ver_noticia.php

<?
include('../db/db_site.php'); // Link a mi password y contaseña de usuario.

//Recibo la variable "id" enviada en el enlace por GET desde donde muestro las noticias disponibles.
$id=$_GET[id];

//Consulto la base de datos
$result=mysql_query("select * from news where ID='$id'",$db); // Tabla número 1 donde se guarda el titulo, autor, fecha, ID, lecturas, fuente. etcétera.

$url_image = '/images/news';
$url_publi_pic = '/images/publicidad';
$url = 'news_view.php';

//Tomo las consultas en un array para mostrarlas
while($row=mysql_fetch_array($result))
{
$id = $row['ID'];
$comid = $row['ID'];
$date = $row['post_date'];
$title = $row['post_title'];
$author = $row['post_author'];
$brief = $row['post_brief'];
$cat = $row['post_cat'];
$source = $row['post_source'];
$theme = $row['post_theme'];
$content = nl2br($row['post_content']);
$cont = substr($content,0,150);
$pic_l = $row['photo_link'];
$pic_t = $row['photo_text'];
$pub_pic = $row['advertising'];
$result2 = mysql_query("select * from news_com where id_noticia='$id'",$db); // Tabla número 2 exclusiva para los comentarios.
$total_com = mysql_num_rows($result2);
$select = mysql_query("select post_views from news");
$select = mysql_query("update news set post_views= post_views+1 where ID='$id'", $db); // Tabla número 1, para actualizar la cantidad de lecturas. Esto es lo que acabo de agregarle al sistema de noticias.


echo "
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>
<meta http-equiv='Content-Language' content='es-mx'>
<title>Noticias: $title. </title>
<link rel='stylesheet' href='../css/admin.css' type='text/css'>
<meta name='robots' content='noindex,nofollow'>
</head>

<body>
<div id='overall'><h1>Sistema de noticias. (beta)</h1>

<p>Contenido donde se muestra la noticia, chalala, chalala...</p>

</div>
</body>
</html>
"; }

mysql_free_result($result);
mysql_free_result($result2);
mysql_free_result($select);
mysql_close($db);
?>
  #9 (permalink)  
Antiguo 12/02/2007, 17:35
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: Contador de visualizaciones de temas

Que bueno que lo has conseguido, aqui te dejo unos pequeños consejos:
Cambia esto
Código PHP:
$id=$_GET[id]; 
por esto otro
Código PHP:
$id = (isset($_GET['id']) && ctype_digit($_GET['id'])) ? $_GET['id'] : 0
Con eso evitaras un notice en caso de que uses error_reporting(E_ALL), y es una mejor programacion.. ademas, el ctype_digit es para verificar que el ID sea solo un numero, nada de caracteres raros ahi.

Tambien seria bueno que revisaras que exista ese ID en la base de datos, despues de:
Código PHP:
$result=mysql_query("select * from news where ID='$id'",$db); 
puedes poner algo como:
Código PHP:
if(mysql_num_rows($result) == 0) {
echo 
"No existe esa ID en la base de datos".
die();

Puedes quitar esta linea, ya que no esta haciendo nada ahi:
Código PHP:
$select mysql_query("select post_views from news"); 
Y pues eso, suerte ^^
__________________
Sin Ideas

Última edición por oso96_2000; 12/02/2007 a las 17:43
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 01:36.