Modérateur PHPfrance |
7636 Messages
06 déc. 2006, 20:59
sur la page suivante
"L'astuce" du DISTINCT ne fonctionera donc pas puisque tu refait une requete par page.
Le distinct sert dans le cas où tu as plusieurs fois la même valeur pour un champ pour n'en récupérer qu'un exemplaire.
Il te faudrais récupérer les "id" des citations déjà affichées et effectuer une requête avec NOT IN par exemple.
Supposons que tu enregistre les "id" en session" tu as donc:
// variable qui va servir pour construire une requete dynamique en fonction des id déjà affichés une fois
$query_plus = "";
// si la variable de session existe alors on construit la requete avec un implode() sur les id déja affichés.... résultat => AND id NOT IN (1,5,12) .... par exemple
if(isset($_SESSION['les_id']))
$query_plus = " AND id NOT IN (".implode(",",$_SESSION['les_id']).")";
else
$_SESSION['les_id'] = array(); // sinon on initialise la variable de session à vide.
//requete dynamique avec le bout de requete à ajouter le cas échéant
$query = "SELECT DISTINCT mon_champ FROM ma_table ".$query_plus." ORDER BY RAND()";
$tab_id = array();
//exécution requete et boucle
{
$tab_id[] = $id; //id de la requete, citation affichée
}
// récupération des id en sesion en "concaténant" les tableaux de session et des "id" actuellement affichés pour les exclure de la requete suivante
$_SESSION['les_id']=array_merge($_SESSION['les_id'],$tab_id);
Modifié en dernier par
Truc le 06 déc. 2006, 21:30, modifié 1 fois.
/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute