Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    [PHP-mysql] articoli correlati

    ho un blog dove gli articoli sono in un db mysql. ogni record corrisponde a un articolo..
    ci sono vari campi di questi record tra cui titolo contenuto e altre cose e anche i tag....
    la mia idea è sfruttare i tag per identificare gli articoli correlati all'articolo che l'utente legge facendo un confronto tra i tag dell'articolo e gli altri articoli...allora ho buttato giù questo codice
    questo è lo sviluppo dell'articolo: come si può notare nel while richiamo il campo tag...se facessi echo $tag mi uscirebbe qualcosa del tipo: parola1 parola2 parola3.
    cioè parole separate da spazio.
    Codice PHP:
    $query"SELECT *, DATE_FORMAT(datetime,'[b](%d.%m.%Y[/b] - [b]%H:%i:%s)[/b]') as datatime FROM articoli WHERE sezione='0' AND id=$pag LIMIT 1";
    $risultato mysql_query($query);
     
    // fine selezione articoli --------------------------------------------------
            
                    
    $flag_colore=0;

                    while(
    $articles=mysql_fetch_array($risultato)){
                        
    $titolo=$articles['titolo'];
                        
    $content=$articles['content'];
                        
    $url=$articles['url'];
                        
    $materia=$articles['materia'];
                        
    $id=$articles['id'];
                        
    $si=$articles['si'];
                        
    $no=$articles['no'];
                        
    $datetime$articles['datatime'];
                        
    $preview$articles['preview'];
                        
    $commentimysql_query("UPDATE articoli SET commenti=$n_commenti WHERE id = '$pag'");
                        if(isset(
    $_GET['segnala']) AND $_GET['segnala'] == 1){
                        include(
    "segnala_art.php");

                        }
                        else{
                        include(
    "page.php");
                        
                        echo 
    $pagea;

                        
                        
                        echo 
    "<h1>".ucfirst($titolo)."</h1><div class=\"corp\"><div class=\"cont2\">$preview</div></div>
    "
    ;
                
    // colore alternato
                        
    if($flag_colore==0){
                            
    $flag ="<div class=\"cont1\">";
                            
    $flag_colore=1;
                        }
                        else{
                            
    $flag"<div  class=\"cont2\">";
                            
    $flag_colore=0;
                        }
                        
                
    // pagine sviluppate
                        
    echo "<a name=\"articolo\"></a>";
                        echo 
    "<div class=\"corp\">";
                        echo 
    "<div class=\"cont1 tornasu\">";
                        echo 
    "<a href=\"../all.php\">Tutti gli articoli</a>";
                        echo 
    "</div>";
                        echo 
    "<div class=\"cont2\">";
                        echo 
    "<div class=\"inter\">";
                        echo 
    "<div class=\"left\">";
                            include (
    "vota.php");
                        echo 
    "</div>";
                        echo 
    "<div class=\"right\">
                        Pubblicato in <a href=\"http://www.atuttascienza.altervista.org/ricerca.php?search=
    $materia\">".ucfirst($materia)."</a> $datetime
     
                        <a href=\"
    $path&segnala=1\">Segnala ad un amico</a> | 
                            <a href=\"#commenti\">Commenta</a> [b](
    $n_commenti $show_commenti)[/b]

                            <a href=\"javascript:window.print()\">Versione stampa</a> | 
                            <a href=\"javascript:bookmarksite('Atuttascienza..nel mare del sapere','http://
    $path')\">Aggiungi a preferiti</a></div>";                      
                        echo 
    "<div class=\"clear\"></div>


    "
    ;
                    
                        
    $testo$content;
                        include (
    "replace.php");
                        echo 
    "</div></div>";
                        echo 
    "<div class=\"cont1 tornasu\">";
                        echo 
    "<a href=\"../all.php\">Tutti gl articoli</a> | <a href=\"#articolo\">Torna su</a>";
                        echo 
    "</div>";
                        echo 
    "</div>";
                
                        echo 
    "
    "
    ;

                        
                        include(
    "commenti.php");
                        echo 
    $pagea;

                        include(
    "correlati.php");
                        echo 
    "
    "
    ;
                        
                        }
                                
                        
        } 
    sopra si può notare come richiamo il codice per gli articoli correlati con include correlati.php
    questo è il file correlati.php
    Codice PHP:
    $tagtitoloexplode(" "$tag); 
    $tagdefinitiviimplode("%' OR '%"$tagtitolo);
    $tagdefinitivi"'%".$tagdefinitivi."%'";

    $vedianchemysql_query("SELECT titolo,url FROM articoli WHERE tag LIKE $tagdefinitivi ORDER BY rand()");
    if(
    mysql_num_rows($vedianche) > 0){
    echo 
    "<h1>Vedi anche...</h1>";
    echo 
    "<div class=\"corp\"><div class=\"cont2\">";
    while(
    $correlatomysql_fetch_array($vedianche)){
    $titolo$correlato['titolo'];
    $url$correlato['url'];


    echo 
    "<a href=\"$url\">" .ucfirst($titolo). "</a>
    "
    ;

    }
    echo 
    "</div></div>";

    prelevo il $tag che abbiamo detto sarà una cosa del tipo parola1 parola2 parola3
    invece degli spazi inserisco or e relativi apici e % e alla fine ottengo
    '%parola1%' or '%parola2%' ecc in modo da poterlo inserire nel where della query postata nel codice

    il problema che quando vado testarlo non credo che funzioni bene...
    ho creato 5 articoli di prova
    questi i relativi tag
    1 vita extraterrestre alieno
    2 vita
    3 alieno
    4 vita alieno
    5 alieno

    se io vado nel primo articolo dovrebbe trovarmi tutti e 4 gli articoli come correlati..sbaglio?
    invece me ne ritrovo 3.
    però mi è sorto un dubbio non è che l'articolo 4 lo conta due volte poi? dato che ha vita e alieno
    ho notato una cosa che quando l'articolo ha un solo tag la ricerca funziona...almeno credo...quindi l'errore sta su come ho scritto il where?
    spero di essere stato chiaro...

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    CREDO DI aver risolto finalmente mi son dimenticato di ripetero
    tag like 'parola' or tag like parola2 ecc ecc

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.