Como puedo hacer que me muestre articulos simlares

  • Autor Autor blogers
  • Fecha de inicio Fecha de inicio
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
 
Tienes que utilizar LIKE en la consulta

Insertar CODE, HTML o 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

Insertar CODE, HTML o 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
 
Atrás
Arriba