Foros del Web » Programando para Internet » PHP »

Problema con visitas de un articulo

Estas en el tema de Problema con visitas de un articulo en el foro de PHP en Foros del Web. Buenas una vez más, A ver, les comento mi problema. Pretendo mostrar el articulo mas visto de una categoria. Lo que tengo es lo siguiente: ...
  #1 (permalink)  
Antiguo 05/08/2009, 10:57
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Problema con visitas de un articulo

Buenas una vez más,

A ver, les comento mi problema.
Pretendo mostrar el articulo mas visto de una categoria.

Lo que tengo es lo siguiente:

Tabla categorias_articulos:

id_categoria, (Ej: 1)
id_articulo, (Ej: 150)


En esta tabla meto cada arituclo con su categoria, en este caso tengo un articulo que pertenece a la categoria 1.

Luego tengo otra tabla articulos:
id,
titulo,
desc,
total_visitas,


En esta tabla esta claro que tengo el articulo completo; su titulo, su descripcion,sus visitas, etc.

Mi intención es que cuando este visualizando una categoria y se me muestren todos los articulos de esa categoria, se me muestre el articulo mas visto de la categoria en la que me encuentro.

Lo que se me ha ocurrido, es sacar primero todos los articulos de la categoria en la que estoy, y posteriormente hacer una consulta a la tabla articulos con esas identidades, buscando cual de ellas, tiene mas visitas.

¿Se ve logico no?

Bueno, el problema lo tengo ahí. Muestro el código y os comento:

Código ejemplo:
Ver original
  1. <?php
  2. include ("config.php");
  3.  
  4. $sql= mysql_query("SELECT * FROM categorias_articulos where id_categoria='1' ORDER BY id",$conexion);
  5. $data = array();
  6. while ($row = mysql_fetch_assoc($sql))  $data[$row['id_articulo']] = $row['id_categoria'];
  7.  
  8.                foreach($data as $var => $val)
  9.                 {
  10.                     echo "<br>";
  11.                $sql2 = mysql_query("select * from aritculos where id='$var' ORDER BY total_visitas DESC ", $conexion) or die(mysql_error());
  12.                $row2=mysql_fetch_array($sql2);
  13.                $total_visitas=$row2["total_visitas"];
  14.                $titulo=$row2["titulo"];
  15.                echo "total de visitas: $total_visitas";
  16.                 }
  17.                
  18. ?>

Como ves utilizo un foreach para mostrar todas las identidades...
$val es el nombre de la categoria en el que me encuentro y
$var son las identidades de articulo que tiene esa categoria.

¿Donde esta el problema?
En la consulta que realizo a la tabla articulos.
Si en el where id='$var' coloco la id del articulo a mano, por ejemplo 150, pues correctamente me muestra el total de visitas del mismo... pero colocando $var me muestra el total de visitas de todos los articulos pertenecientes en la que me encuentro.

Espero se me haya entendido sino solo decirlo

Muchas gracias como siempre
  #2 (permalink)  
Antiguo 05/08/2009, 12:54
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Problema con visitas de un articulo

Creo que asi haria lo mismo sin enredarse tanto.

$a = mysql_query("select articulos.* from categoria inner join porducto on categorias.id_articulo = articulo.id and categoria.id_categoria=$IDCATEGORIA and articulo.id=$IDARTICULO order by articulo.total_visitas desc");
while ($b = mysql_fetch_array($a))
{
echo $b['total_visitas'];
}


si coloca como condicion el id del articulo en la consulta no le sirve porque esto implica que le muestre por ejemplo el articulo x cuyo numero de visitias sea mayor y es ilogico porque el producto x solo debe existir una vez en la bd.

Si quiere mostrar todos pero ordenasdos por puntuacion hagalo de cualqueira de las dos formas pero quite esa condicion de la consulta. Si quiere mostrar unicamente el de mayor puntuacion seria el mismo select sin esa condicion pero con un limit par aque le muestre unicamente el primer registro que arroja la consulta
  #3 (permalink)  
Antiguo 06/08/2009, 04:45
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Problema con visitas de un articulo

Buenas de nuevo,

Gracias por resoponder, probe tu ejemplo, pero me tiraba errores, y era por que la consulta no la estaba realizando bien. Asi que con el ejemplo trastee algunas cosillas, lo coloque de otra forma y me quedo asi:
Código ejemplo:
Ver original
  1. <?php
  2. include ("config.php");
  3.  
  4. $sql= mysql_query("SELECT * FROM categorias_articulos where id_categoria='1' ORDER BY id",$conexion);
  5. while ($row = mysql_fetch_array($sql))
  6. {
  7. $id_articulo = $row['id_articulo'];
  8. $sql2 = mysql_query("SELECT * FROM categorias_articulos, articulos where categorias_articulos.id_articulo and categorias_articulos.id_categoria='1' and articulos.id='$id_articulo' ORDER BY articulos.total_visitas desc LIMIT 1", $conexion) or die(mysql_error());
  9.                
  10.                $row2=mysql_fetch_array($sql2);
  11.                $total_visitas=$row2["total_visitas"];
  12.                echo "total de visitas: $total_visitas<br>";
  13. }
  14. ?>

Lo que sucede es que me muestra asi los resultados:



En la imagen me muestra el total de visitas que tienen los articulos pertenecientes a la cateogria 1.Bien.

El problema es que yo quisiera que me mostrará unicamente el total de visitas del articulo con mayor visitas perteneciente a la cateogria 1. En esta caso seria el que tiene 520 visitas.

¿Como puedo solucionarlo?

Gracias
  #4 (permalink)  
Antiguo 06/08/2009, 10:53
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Problema con visitas de un articulo

El primer select le esta sobrando solo es que le añada esa condicion al segundo
categorias_articulos.id_categoria=1

el el segundo no ponga el id del articulo porque usted esta buscando entre todos los articulos de la categoria el que tenga mayor visitas. osea que le sobra esto articulos.id='$id_articulo'


y le salen tantos resultados por el while de la primera consutla debe quitar esa primera consutla y el while solo dejar la segunda consulta haciendo las correcciones que le dije.


La consulta que le di en la anterior respeusta la hice a ojimetro obiamente debe tener errorcitos pequeños pero tratede arreglarla que esa consulta le hace lo que quiere. revise el nombre de las tablas y de los campos que debe ser eso lo que tiene mal.
  #5 (permalink)  
Antiguo 12/08/2009, 09:22
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Problema con visitas de un articulo

Buenas de nuevo,

Antes de nada, perdón por la tardanza, no he podido hasta ahora.

Bueno, acabo de hacer las modificaciones y me ha quedado asi:

Código ejemplo:
Ver original
  1. <?php
  2.    
  3.  include ("config.php");
  4.    
  5. $sql2 = mysql_query("SELECT * FROM categorias_articulos, articulos where categorias_articulos.id_articulo and categorias_articulos.id_categoria='1'  ORDER BY total_visitas desc LIMIT 1", $conexion) or die(mysql_error());
  6.       $row2=mysql_fetch_array($sql2);
  7.       $total_visitas=$row2["total_visitas"];
  8.       echo "total de visitas: $total_visitas<br>";
  9. ?>

¿Qué sucede?
Que resulta que me muestra el total de visitas del articulo que tiene más visitas independientemente de la categoria a la que pertenece.

O sea, que en este caso me esta mostrando el total de visitas de un articulo que no pertenece a la categoria 1.

Por más que cambie la id_categoria='X' me sigue mostrando el articulo más visitado pero sin importar la categoria.

Como ven, sigo sin poder solucionarlo

Saludos,
  #6 (permalink)  
Antiguo 12/08/2009, 18:38
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Problema con visitas de un articulo

El problema esta en la condicion de la consulta la tiene incompleta

Usted la tiene asi:

where categorias_articulos.id_articulo and

debe ser algo parecido a esto porque debe relacionar las dos tablas:

where categorias_articulos.id_articulo = articulos.id_articulo and
  #7 (permalink)  
Antiguo 13/08/2009, 11:47
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Problema con visitas de un articulo

Bff, muchisimas gracias, hice lo que comentars y listo. Solucionado .

Ya era hora después de estar dias con esto

Una v ez más, muchisimas gracias
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 04:54.