TUTORIEL PHP 
Un gestionnaire de liens à base de mots-clefs en PHP
Un script complet reprenant l'idée popularisée par le site del.icio.us pour mieux gérer ses favoris. (26/02/2005)
<< 1. Présentation et mise en place
2. Fonctionnement (1) | 3. Fonctionnement (2)

Le fonctionnement
Autre fonction appelée par afficherLiens() : afficherMots(). Celle-ci liste l'ensemble des mots-clefs uniques contenus dans notre base, accompagnés de leurs liens et du nombre d'entrées pour chacun :

function afficherMots() {
  $mots = array();
  $motsdavant = array();

  $req = "SELECT mots FROM delicieux;";
  $res = mysql_query($req);
  while ($row = mysql_fetch_array($res)) {
    $leMot = split(" ", $row['mots']);
    $motdavant = array_merge($mots);
    $mots = array_merge($motdavant, $leMot);
    }

  $unique = array_unique($mots);
  $nombre = array_count_values($mots);

  echo '<div class="mots">';
  foreach ($unique as $mot) {
    $i = $nombre[$mot];
    echo "$i <a href='index.php?m=$mot'>$mot</a><br/> ";
    }
  if (isset($_REQUEST['m'])) {
    echo '<a href="index.php">Retour</a>';
    }
  echo '</div>';
  }


Après avoir récupéré tous les mots-clefs de la base, nous les plaçons dans le tableau $mots, dont nous retirons les doublons(avec array_unique())et comptons le nombre (avec array_count_values()).
C'est ensuite une boucle foreach() qui se charge de parcourir $unique (la liste des mots uniques) et de la mettre en correspondance avec le nombre d'occurrences pour ce mot (contenus dans $nombre). Le tout est affiché au sein d'une balise div.
Nous testons enfin si la variable "m" est disponible : dans ce cas, l'utilisateur a demandé l'affichage d'une partie de la liste des mots, et nous lui fournissons un lien vers la liste complète (la page d'accueil).

La fonction prenant en charge l'affichage par mots-clefs s'appelle afficherLiensPourMot(), que voici :

function afficherLiensPourMot($mot) {
  $req = 'SELECT * FROM delicieux ';
  $req.= 'WHERE mots LIKE "%'.$mot.'%" GROUP BY datation DESC;';

  $res = mysql_query($req);
  echo '<div class="liens">';
  afficherMots();
  while ($row = mysql_fetch_array($res)) {
    echo "<p><a href='$row[1]'>$row[2]</a><br/>";
    echo $row[3].'<br/>';
    echo "<small>dans ";
    echo separerMots($row[4]);
    echo ", le $row[5]</small></p>";
    }
  echo '</div>';
  }

  Forum

Réagissez dans les forums de JDN Développeurs

Celle-ci est très proche de afficherLiens(), sauf qu'ici nous précisons ce que nous recherchons dans la base, en l'occurrence les lignes contenant le mot $mot, n'importe où. Après cela, le reste est identique à sa fonction soeur.

Le script est complet et fonctionnel.

<< 1. Présentation et mise en place
2. Fonctionnement (1) | 3. Fonctionnement (2)
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages