FrancaisAdobe Flex Tutorial
jeux flash gratuit
Les critiques des meilleurs sites de poker, comme Titan Poker, sont sur Launchpoker: lisez les attentivement avant de décider où aller jouer au Texas Holdem sur internet.

[Web] - Sélectionner les valeurs prédéntes / suivantes avec PHP et Mysql


La méthode pour afficher les valeurs immédiatement supérieures / inférieures en seulement deux requêtes
php mysql selectionner suivant

Pour améliorer la navigation et le référencement des articles de mon blog, j'ai décidé d'ajouter à la fin de chaque article, un lien vers un article de la même catégorie. Mon choix a été de prendre l'article de la même catégorie écrit juste avant et celui écrit juste après, s'il existe.

Toutes les entrées de mon blog étant stockées dans une base mysql, il me suffisait d'effectuer les bonnes requêtes pour sélectionner les articles précédents / suivants.
Pour éviter de faire plusieurs requêtes ou deux while imbriqués, j'ai du trouver une solution simple en SQL. La solution se passe avec les sélécteurs < et >.
Ce court tutorial présente la source PHP que j'utilise avec ses commentaires.







Le problème et les contraintes

Pour trouver les entrées immédiatement suivantes et précédentes, j'aurai pu effectuer une requête qui trie mes articles par date ASC, puis avec un (while $var = mysql_fetch_array($query-sql)){} puis vérifier si on trouve l'article correspondant et ensuite continuer une fois pour sélectionner l'article suivant.

Pour récupérer l'entrée précédente, il suffisait de faire la même manipulation mais en triant par date DESC. Cette methode est plutôt coûteuse en ressources pour uniquement récupérer l'entrée suivante, même si ma base de donnée n'est pas énorme.
De plus, le code serait assez complexe pour une opération aussi simple.
Ci-dessous, la solution en quelques lignes seulement.









La solution avec les sélecteurs SQL < / >

Tout d'abord, il vous faut l'id de l'enregistrement sur lequel on va chercher les valeurs adjacentes. Pour mon exemple, ce n'est pas un id mais une date ici ($date).
Pour sélectionner l'enregistrement suivant et précedent, effectuez ces requêtes :

$enregSuivant = mysql_query("SELECT * FROM `nom-table` WHERE `date` > '".$date."' ORDER BY `date` ASC LIMIT 0, 1");

$enregPrec = mysql_query("SELECT * FROM `nom-table` WHERE `date` < '".$date."' ORDER BY `date` DESC LIMIT 0, 1");

$dataSuiv = mysql_fetch_array($enregSuivant);
$dataPrec = mysql_fetch_array($enregPrec);

Les données des enregistrements précédents et suivants sont maintenant contenus dans les variables $dataSuiv et $dataPrec.
N'oubliez pas de vérifier l'existence des entrées avant de les afficher.

Les propositions d'articles ci-dessous sont affichées avec ce script PHP / MySql.













< La culture Web 2.0 et le design web, conseils et exemples




Commentaires

  • Le 25.02.2008, par GeekShadow

    En utilisant ton script, $dataSuiv et $dataPrec me renvoie "Array" au lieu de me renvoyer l'ID suivant ou précédent... pourquoi ?
  • Le 25.02.2008, par ninou

    salut,
    avec "mysql_fetch_array", tu récupère un tableau contenant les informations de tous tes champs. Pour récupérer la valeur d'un champ, utilise :

    $val_champ = $dataSuiv["nom_champ"];
  • Le 26.02.2008, par GeekShadow

    OK :) je m'était débrouillé autrement après avec mysql_result, et j'ai bien fait la vérification des entrées... tout marchait bien mais ça me renvoyait une erreur que j'ai cachée.
  • Le 26.02.2008, par GeekShadow

    Bon finalement j'ai fait comme tu as dit avec $dataSuiv["nom_champ"]; et ça marche beaucoup mieux :)
Vous devez être inscrit pour pouvoir ajouter un commentaire
bouton inscription jeux
Aide | Contact | Règlement | Plan du Site | tutorial illustrator flash css php