Tips: Sélectionner suivant et précedent à partir d’une BDD MySQL

Bonjour à tous,

C’est bien souvent après coup que l’on découvre certaines astuces ou certaines voies pour débloquer une situation, un code dans lequel on a été parfois embourbé des heures avant de trouver une solution qui ne s’avère pour finir pas tellement esthétique.

Mon dernier exemple en date concernait le fait d’ajouter des liens suivants et précédents sur des « fiches » qui ne possédaient évidemment pas de clef numérique.

Et ma solution assez peu esthétique était celle-ci:

  1. span class= »st0″>"SELECT * FROM `ma_table` WHERE `dir` = ‘""’  ORDER BY `fichier` ASC"‘fichier’"SELECT * FROM `ma_table` WHERE `dir` = ‘""’  ORDER BY `fichier` ASC LIMIT ".($i-1).", 1""SELECT * FROM `ma_table` WHERE `dir` = ‘""’  ORDER BY `fichier` ASC LIMIT ".($i+1).", 1");
  2. ;}

En gros, je pointais mon item actuel par un $i qui me servait ensuite à limiter ma sélection global à l’item suivant ou précédant.

Mais voilà que 2 jours plus tard, cela m’a fait « TILT »: Même si ma clef n’est pas numérique, j’en possède une que je peux trier par ordre alphabétique croissant ou décroissant (comme je le fais lors de l’affichage des liens vers les différents items).
Or si je peux les classer, je peux également les comparer et selectionner ainsi ceux qui sont « plus petits » ou « plus grands ». En restreignant cette recherche au premier résultat, j’ai ainsi ma solution!

Pour sélectionner l’item précédent:

  1. span class= »st0″>’".$fichier."’‘".$dossier."’

Pour sélectionner l’item suivant:

  1. span class= »st0″>’".$fichier."’‘".$dossier."’

Et vous, que faites-vous en pareille situation?

Tags: , , ,