Foros del Web » Programando para Internet » PHP »

Sistema de Tags con Posts Relacionados

Estas en el tema de Sistema de Tags con Posts Relacionados en el foro de PHP en Foros del Web. Hola, ¿Cómo están? espero que bien :D Tengo una duda con el Sistema de Tags. Tengo un sitio, en el cual las noticias tienen tags, ...
  #1 (permalink)  
Antiguo 17/09/2009, 17:35
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 4 meses
Puntos: 7
Exclamación Sistema de Tags con Posts Relacionados

Hola, ¿Cómo están? espero que bien :D

Tengo una duda con el Sistema de Tags.

Tengo un sitio, en el cual las noticias tienen tags, y cuando se guardan en la tabla POSTS hay un campo llamado tags, y los guardo ahí por coma (hola, como, estas, sistema, tags)

Entonces para mostrarlos con links los tags hago lo siguiente:
Código PHP:
$tags    =    $row['tags'];
$mytags    =    split(", ",$tags);
$cant_tags count($mytags);
foreach (
$mytags as $tag){
  echo 
'<a href="/tags/'.$tag.'" rel="tag">'.$tag.'</a>';
  
if    (
$cant_tags+1)
{
echo 
", ";
}} 
Hasta ahí todo bien.

Pero mi duda es la siguiente:
Allado de la noticia, hay una opción que son POST RELACIONADOS que deberían ser mediante tags.

Osea si está la noticia 1 y la 2, si la noticia 1 tiene el tag hola, y la 2 también, en la noticia 1, se muestra en la opción POST RELACIONADOS la noticia 2 y lo mismo con la 2.

el código que tengo para que se relacionen es la siguiente:
Código PHP:
<?php
$PTags    
=    $row['tags'];
$PMytags    =    split(", "$PTags);

$Post_Relacionados    =    "SELECT p.id AS PID, p.categoria, p.titulo, p.tags, c.link_categoria, c.id_categoria
                        FROM (posts AS p, categorias AS c, posts AS k)
                        WHERE p.categoria=c.id_categoria
                        AND p.tags='$PMytags'
                        ORDER BY p.id DESC"
;
                        
$Post_Relaciona2    =    mysql_query($Post_Relacionados$con) or die ("Error en la query $Post_Relacionados, el error es".mysql_error());
while(
$PR mysql_fetch_array($Post_Relaciona2));
{
?>
<li><a rel="dc:relation" href="/posts/<?=$PR['PID']?>/<?=$PR['link_categoria']?>/<?=$PR['titulo']?>.html" title="<?=$PR['titulo']?>"><?=$PR['titulo']?></a></li>
<?php
}
?>
Pero los posts relacionados no se muestran, ninguno ¿Cuál es el error? o ¿Cómo se hace para que se relacionen?
  #2 (permalink)  
Antiguo 17/09/2009, 21:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: [Ayuda] Sistema de Tags con Posts Relacionados

El error esta en tu query para traer los posts relacionados. Es mejor si haces un join en tus dos tablas, y no unirlas 3 veces ya que no tiene chiste unir dos veces tu tabla posts.

Saludos.
  #3 (permalink)  
Antiguo 17/09/2009, 21:56
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: [Ayuda] Sistema de Tags con Posts Relacionados

Hola
Si mal no recuerdo, al hacer esto

$PMytags = split(", ", $PTags);

Esto te queda como un array verdad???
Y si es asi, entonces debes recorrerlo, cosa que no estas haciendo, y pues tienes 2 opciones

1. Recorrerlo y hacer una consulta por cada elemento
2. Recorrerlo creando el select antes de enviarlo a consultar para que luego sea solo una consulta la que ejecutes
En ambos casos puedes usar, como en tu codigo anterior, el foreach
Prueba y nos cuentas

Saludos
  #4 (permalink)  
Antiguo 18/09/2009, 19:54
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: [Ayuda] Sistema de Tags con Posts Relacionados

Bueno, si me dieran alguna idea de cómo debería ser el código (Correctamente) sabría, no soy Programador Avanzado o Experto para hacer lo que me dicen. ¿Alguna ayuda porfavor? :D
  #5 (permalink)  
Antiguo 20/09/2009, 16:55
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: [Ayuda] Sistema de Tags con Posts Relacionados

Hola
Ya te dije que podrias reusar lo que tenias en tu codigo anterior, o es que ese codigo no es tuyo?

bueno, como sea, algo asi propongo yo


Código php:
Ver original
  1. $PTags    =    $row['tags'];
  2. $PMytags    =    split(", ", $PTags);
  3. $Post_Relacionados    =    "SELECT p.id AS PID, p.categoria, p.titulo, p.tags, c.link_categoria, c.id_categoria
  4.                        FROM (posts AS p, categorias AS c, posts AS k)
  5.                        WHERE p.categoria=c.id_categoria";
  6.                         foreach ($PMytags as $mytag){
  7.                             $Post_Relacionados.= " AND p.tags='$mytag' ";
  8.                         }
  9.                         $Post_Relacionados.= "ORDER BY p.id DESC";
  10.                        
  11. $Post_Relaciona2    =    mysql_query($Post_Relacionados, $con) or die ("Error en la query $Post_Relacionados, el error es".mysql_error());[COLOR=#000000][COLOR=#0000BB][/COLOR][/COLOR]
Y pues propondría quitar "post AS k" pues no veo para que se esta usando, o bueno, tal vez la uses para otra cosa, espero te sirva
Saludos
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 13:48.