IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

trouver la fiche d'avant et d'après selon un ordre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Par défaut trouver la fiche d'avant et d'après selon un ordre
    bonjour voilà ce que je souhaite faire:

    j'ai une fiche que j'ai trouvée grâce à son identifiant (disons "id_fiche")

    je souhaite connaitre la fiche qui se trouve juste avant et celle qui se trouve juste après (ou savoir s'il n'y en a aucune avant ou après), selon un ordre indexé en fonction du champ id_fiche

    sachant que certains fiches ont pu etre supprimées donc l'ordre des identifiants n'est pas linéaire


    le contexte: une galerie d'images, basée sur mysql pour les données supplémentaires, dont on peut supprimer des images, mais il faut pouvoir faire un permalink sur chaque photo (d'ou l'accès par identifiant), et puis deux boutons (precedent suivant) qui permettent ensuite d'accéder aux autres photos dont l'identifiant est juste au dessus ou juste en dessous

  2. #2
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Salut,

    Un truc qui serait intérréssant de faire c'est que quand tu supprime une fiche bah en gros tu réordonne l'ensemble des fiches en gros :

    Tu supprime la fiche 5 donc les fiches d'aprés reculeront genre la fiche 6 deviendra la fiche 5 et la fiche 7 deviendra la fiche 6 etc...

    Dans le genre de la réorganisation d'un tableau, un simple déplacement quoi...

    Dis moi ce que t'en penses.

    Tcho

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Par défaut
    C'est faisable oui mais je ne suis pas sûr que ça soit très propre, surtout si la galerie devient vraiment grosse les requetes vont etre lourdes.

    Ce que je cherche à faire est vraiment basique il doit y avoir une solution plus simple.

  4. #4
    Membre éclairé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Par défaut
    tu charges tous les id de tes images dans un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $result=mysql_query("select id_img from img");
    while($row=mysql_fetch_row($result))
    {
         $mes_ids[]= $row[0];
    }

    tu affiches l'image en fonction de l'indice du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if(empty($_GET['var'])) //var est une variable passé la fonction GET
    {
          $i=0;
    }
    else
    {
          $i=$_GET['var'];
    }
    $img=mysql_query("select nom_img from img where id_img='$mes_ids[$i]'");
    pour les boutons suivant et précédent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    $result2=mysql_query("select count(id_img) from img");
    while($row2=mysql_fetch_row($result2))	
    {
          $nbre_img=$row2[0];
    }
    if($i==0)
    {
          $prec=$nbre_img-1;
    }
    else
    {
          $prec=$i-1;
    }
    echo "<a href=\"mapage.php?var=$prec\" title=\"photo precedente\">precedent</a>";
     
    if($i==$nbre_img-1)
    {
           $suiv=0;
    }
    else
    {
           $suiv=$i+1;	
    }
    echo "<a href=\"mapage.php?var=$suiv\" title=\"photo suivante\">suivant</a>";
    qu'est ce que t'en penses ? je pense que ça peut répondre a ton problème

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Par défaut
    je pense que c'est une requete trop lourde
    et qu'il y a plus simple

    je vais essayer avec quelque chose comme WHERE id > $id_courant LIMIT 0,1

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Essaie avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE `test` (
      `id` int(10) unsigned NOT NULL auto_increment,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
     
    INSERT INTO `test` (`id`) VALUES 
    (1),
    (2),
    (3),
    (4),
    (5),
    (7),
    (8),
    (9),
    (10),
    (11);
    La requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT MAX(id) AS cle
    FROM test
    WHERE id < 5
    UNION
    SELECT id AS cle
    FROM test
    WHERE id = 5
    UNION
    SELECT MIN(id) AS cle
    FROM test
    WHERE id > 5
    Je ne sais pas si c'est la meilleure solution, mais ça fonctionne.

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Par défaut
    mon truc a marché, merci à tous de m'avoir mis sur la piste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. .apk OK avant soumission, CRASH après
    Par Manu0086 dans le forum Android
    Réponses: 7
    Dernier message: 22/07/2013, 09h16
  2. Réponses: 0
    Dernier message: 16/07/2013, 02h46
  3. Généré un PDF Avant compilation OK. Après compilation : Ereur
    Par tentsuken dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 09/06/2009, 21h14
  4. Récupèrer la ligne d'avant ou d'après mon SELECT
    Par okkix dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/04/2009, 11h23
  5. Réponses: 9
    Dernier message: 07/09/2004, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo