Une suite aléatoire : afficher images, textes… au hasard sans répétition

Un exemple, en PHP, qui permettra, à partir d’un tableau, d’afficher une suite d’éléments de manière aléatoire et unique (un élément ne peut être affiché qu’une seule fois).

Ici, nous souhaitons afficher une liste aléatoire de sites internet avec miniature.

L’image sera intégrée directement par le biais de Easy Thumb.net qui permet de créer automatiquement une miniature d’un site web.

Liste des adresses de site à prendre en compte

Nom Adresse de la page ou du site internet Titre
Le Trône de Fer http://letronedefer.internet-35.fr/ Le Trône de Fer : Livre fantasy et série TV
Site internet Reuni-web http://www.reuni-web.com Création de site internet Rennes
Guide Brocéliande http://www.guide-broceliande.fr/ Maquette de site : Guide Brocéliande
Ile de la Réunion http://www.guide-reunion.fr Guide Réunion
Les Amis de Noël du Fail http://www.lesamisdenoeldufail.fr Site association Les Amis de Noël du Fail
Cirque de Mafate http://www.reunion-mafate.com Mafate, paradis de la randonnée
Formation Writer http://www.reuni-web.com/writer-creation-d-un-modele-de-document/ Open Office Writer : création d’un modèle de document
Club Informatique http://cir.internet-35.fr Site du CIR
Billet avion réunion http://www.guide-reunion.fr/billet-avion/ Vol pas cher pour la Réunion

 

Le code en php

Il ne s’agit bien sûr d’une méthode – array_rand() – parmi d’autres. A noter que l’élément pris au hasard dans le tableau est supprimé de celui-ci dès qu’il est ajouté à la liste (voir la fonction supp($tableau,$indice))

<?php
$tableau= init_tab();
echo liste_alea($tableau,5);

function init_tab(){
   return array(
      array(
         'Le Trône de Fer',
         'http://letronedefer.internet-35.fr/',
         'Le Trône de Fer : Livre fantasy et série TV'),
      array(
         'Reuni-web',
         'http://www.reuni-web.com',
         'Création de site internet Rennes'),
      array(
         'Guide Brocéliande',
         'http://www.guide-broceliande.fr/',
         'Maquette de site : Guide Brocéliande'),
      array(
         'Ile de la Réunion',
         'http://www.guide-reunion.fr',
         'Guide Réunion'),
      array(
         'Les Amis de Noël du Fail',
         'http://www.lesamisdenoeldufail.fr',
         'Site association Les Amis de Noël du Fail'),
      array(
         'Cirque de Mafate',
         'http://www.reunion-mafate.com',
         'Mafate, paradis de la randonnée'),
      array(
         'Formation Writer',
         'http://www.reuni-web.com/writer-creation-d-un-modele-de-document/',
         'Open Office Writer : création d’un modèle de document'),
      array(
         'Club Informatique',
         'http://cir.internet-35.fr',
         'Site du CIR'),
      array(
         'Billet avion réunion',
         'http://www.guide-reunion.fr/billet-avion/',
         'Vol pas cher pour la Réunion')
   );
}
function liste_alea($tableau,$nb){
   $eldisponible=count($tableau);
   // vérifie que le nombre soit plus grand que 0 et inférieur au nombre d'éléments disponibles
   // si c'est le cas, affiche la totalité des sites du tableau
   if ($nb>$eldispo || $nb<1) $nb=$eldispo;
   $liste='<ul>';
   for($i=0; $i<$nb; $i++) {
      $indice = array_rand($tableau); // array_rand renvoie aleatoirement un indice du tableau
      $liste.= '<li>';
      $liste.= '<a href="'.$tableau[$indice][1] .'" target="_blank" title="'.$tableau[$indice][2] .'">';
      $liste.= $tableau[$indice][0] .'<br />' ;
      $liste.= '<img src="http://www.easy-thumb.net/min.html?url=' .$tableau[$indice][1] .'"' ;
      $liste.= ' alt="'.$tableau[$indice][2] .'" />';
      $liste.= '</a>';
      $liste.= '</li>';
      // on efface l'élément du tableau
      $tableau= supp($tableau,$indice);
   }
   $liste.= '</ul>';
   return $liste;
}
function supp($tableau,$indice){
   unset($tableau[$indice]);// efface l element
   $tableau= array_values($tableau);
   return $tableau;
}
?>

Le résultat

Avec un appel « liste_alea($tableau,9) » tous les éléments du tableau seront affichés dans un ordre aléatoire :
On pourrait aussi bien n’afficher que 3 sites internet par l’appel « liste_alea($tableau,3) ».

Il ne reste plus qu’à créer le style pour enlever les puces et présenter la liste comme on le souhaite.

 Vous appréciez cette page (son url courte est : http://goo.gl/a3BDy)? Faites le savoir.