Como posso fazer para mostrar artigos similares

  • Autor Autor blogers
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
B

blogers

Pi
SEO
Hola vengo apedir una ayudita de php y estoy atorado con este codigo

PHP:
 <?php
                    $query = mysqli_query($c, 'SELECT codigo, title, description, link, serial, query, death FROM '._table_.' WHERE title = \''.$info['title'].'\' ORDER BY '.mt_rand(1,6).','.mt_rand(1,6).' LIMIT 5'); // ORDER BY RAND()
                    while($data = mysqli_fetch_assoc($query))
                    {
                        if(empty($data)) {echo 'No hay trabajos relacionados'; break;}                        
                        echo '<div><h2><a  href="/m/similar/'.trim(strip_tags(str_replace(' ', '-', $data['title']))).'_'.$data['serial'].'.html">'.utf8_encode($data['title']).'</a></h2></div><p class="description" style="text-transform: lowercase"> '.strip_tags(strtolower(str_ireplace('jos', '', substr($data['description'],0, 300)))).'</p>';
                    }

                ?>


Lo que quiero es que me muestre 5 articulos similares cuando entran al articulo.

Pero como esta ahorita el codigo si muestra los articulos pero si el articulo no tiene exactamente el mismo titulo no muestra lista de 5 similares o bien muestra solo el mismo arituculo al cual se entro.

Alguien tiene idea de que me muestre similares pero que no tenga que ser exactamente el mismo titulo
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Tienes que utilizar LIKE en la consulta

Inserir CODE, HTML ou PHP:
$query = mysqli_query($c, 'SELECT codigo, title, description, link, serial, query, death FROM '._table_.' WHERE title LIKE \%''.$info['title'].'\%' ORDER BY '.mt_rand(1,6).','.mt_rand(1,6).' LIMIT 5'); // ORDER BY RAND()

Saludos
 
Hola vengo apedir una ayudita de php y estoy atorado con este codigo

PHP:
 <?php
                    $query = mysqli_query($c, 'SELECT codigo, title, description, link, serial, query, death FROM '._table_.' WHERE title = \''.$info['title'].'\' ORDER BY '.mt_rand(1,6).','.mt_rand(1,6).' LIMIT 5'); // ORDER BY RAND()
                    while($data = mysqli_fetch_assoc($query))
                    {
                        if(empty($data)) {echo 'No hay trabajos relacionados'; break;}                        
                        echo '<div><h2><a  href="/m/similar/'.trim(strip_tags(str_replace(' ', '-', $data['title']))).'_'.$data['serial'].'.html">'.utf8_encode($data['title']).'</a></h2></div><p class="description" style="text-transform: lowercase"> '.strip_tags(strtolower(str_ireplace('jos', '', substr($data['description'],0, 300)))).'</p>';
                    }

                ?>


Lo que quiero es que me muestre 5 articulos similares cuando entran al articulo.

Pero como esta ahorita el codigo si muestra los articulos pero si el articulo no tiene exactamente el mismo titulo no muestra lista de 5 similares o bien muestra solo el mismo arituculo al cual se entro.

Alguien tiene idea de que me muestre similares pero que no tenga que ser exactamente el mismo titulo

PHP:
$A = explode(' ',$info['title']);
$C = "";
foreach($A as $B){
	$C.='title LIKE \'%'.$B.'%\' OR ';
}
$C = substr($C,0,strlen($C)-4);

$query = mysqli_query($c, 'SELECT codigo, title, description, link, serial, query, death FROM '._table_.' WHERE '.$C.' ORDER BY '.mt_rand(1,6).','.mt_rand(1,6).' LIMIT 5');

esto arma varios LIKE OR... para separar el titulo como si fueran keys... tmb podes limitar que las keys a buscar sean mayores de 3 caracteres, para evitar, el, a, no,...etc...
PHP:
foreach($A as $B){
	if(strlen($B)>3) $C.='title LIKE \'%'.$B.'%\' OR ';
}


Tienes que utilizar LIKE en la consulta

Inserir CODE, HTML ou PHP:
$query = mysqli_query($c, 'SELECT codigo, title, description, link, serial, query, death FROM '._table_.' WHERE title LIKE \%''.$info['title'].'\%' ORDER BY '.mt_rand(1,6).','.mt_rand(1,6).' LIMIT 5'); // ORDER BY RAND()

Saludos
no funcionaria porque si tengo el titulo 'hola como estas' buscaria LIKE '%hola como estas%'... y el titulo tendria que coincidir con eso, solo que puede variar el inicio y final...
 
Me funciono con uno gracias [MENTION=41713]nestornoe[/MENTION]


Quedo de maravilla gracias [MENTION=9679]cicklow[/MENTION]

Lo que no entendi fue de las keys del ultimo codigo

PHP:
foreach($A as $B){
    if(strlen($B)>3) $C.='title LIKE \'%'.$B.'%\' OR ';
}
 
Me funciono con uno gracias[MENTION]
nestornoe[/MENTION]


Quedo de maravilla gracias[MENTION]cicklow[/MENTION]

Lo que no entendi fue de las keys del ultimo codigo

PHP:
foreach($A as $B){
    if(strlen($B)>3) $C.='title LIKE \'%'.$B.'%\' OR ';
}

"tmb podes limitar que las keys a buscar sean mayores de 3 caracteres, para evitar, el, a, no,...etc..."......
 
usa FULLINDEX y MATCH AGAINST
 
Voltar
Topo