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

Langage PHP Discussion :

Organiser des pages [PHP5][SQL5]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Par défaut Organiser des pages [PHP5][SQL5]
    Bonjour,

    J'ai réaliser une petite application qui crée automatiquement des pages. Dans ma base j'ai un champ 'ID', un champ 'Ordre' et je peux organiser à la main l'ordre d'affichage depuis le champ ordre.

    La problématique qui me pousse d'abord à trouvé un algorithme valable puis ensuite son développement réel est que je n'arrive pas à automatisé cette tâche.

    En effet, lorsque je fait l'affichage, pour l'exemple j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ID|Ordre|Page|Bouton Up|bouton Down
    1 | 2 | Page 1 | Up | Down
    2 | 4 | Page 2 | Up | Down
    5 | 6 | Page 5 | Up | Down
    4 | 8 | Page 3 | Up | Down
    1 | 10 | Page 4 | Up | Down
    Si je clique sur sur up, mettons au lien Page 3. Il doit remplacer Page 5 avec le chiffre 6 dans le champ Ordre. Le chiffre 6 dois descendre pour le chiffre 8 dans le champ Ordre. L'ID ne change pas, bien entendu.

    Affin d'illustrer le résultat que ça devrais donner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ID|Ordre|Page|Bouton Up|bouton Down
    1 | 2 | Page 1 | Up | Down
    2 | 4 | Page 2 | Up | Down
    4 | 6 | Page 3 | Up | Down
    5 | 8 | Page 5 | Up | Down
    1 | 10 | Page 4 | Up | Down
    J'ai essayer la chose suivante :
    -Décaler indépendamment l'ordre, puis UPDATE. Sans succès.
    -Décaler d'un cran et refaire le count de 2 en 2. Sans succès.
    -Faire du multi-requêtage sir les ID, Sans succès.

    Ce que je cherche maintenant :
    -Un algorithme pour essayer de faire une automatisation de cette tâche
    -Le cas échéant un lien pouvant expliquer cette automatisation. Mes récherches étant infructueuses.

    Dans l'attente de votre aide.
    Merci

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    La solution la plus simple consiste à intervertir le champ "ordre" de deux éléments pour faire monter / descendre un élément par rapport à l'autre.
    Tu fais ça très simplement en envoyant deux requêtes UPDATE.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Par défaut
    Sur le principe, je suis entièrement d'accord avec toi.

    Mais voila, il y a un 'mais'...

    Je connais l'ID du champ qui donne l'ordre. En revanche je ne connais pas l'ID du second champ qui doit bouger.

    Cela supposerais que si je découpe logiquement ce qui devrais être fait, on obtiendrais les étapes suivantes:

    1. Placer Page 3, ordre 8 -1 = 7 dans un update (ok, je sait faire)
    2. Placer Page 5, ordre 6 + 2 dans un update (La je cherche un moyen simple sans requêtes complémentaire pour trouver le bon ID)
    3. Réorganiser de 2 en 2 les ordres en partant de 2 dans un update (Je pense que c'est faisable, mais sous mysqli, c'est moins sûr)
    4. Lancer un affichage du résultat à l'écran (Ok, j'ai ce qui faut sous la main)


    Peut-être une piste

  4. #4
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Avec les fonctions min() et max() de SQL tu peux t'en sortir.
    Il faut récupérer l'id d'ordre maximum qui est inférieur à ton ordre courant pour remonter ta page.
    Et il faut récupérer l'id d'ordre minimum qui est supérieur à ton ordre courant pour descendre ta page.

  5. #5
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Personnellement, j'ai eu un cas similaire:

    Réorganiser des lignes de tableau. (Tu peux faire une ligne de tableau = 1 page).

    http://www.isocra.com/2008/02/table-...jquery-plugin/

    Tu peux utiliser l'exemple du deuxieme tableau. Ca permet le "drag and drop" en js de ligne de tableau (<tr>) et ça appelle une fonction de callback lorsque tu as modifié l'emplacement d'une ligne.

    test l'exemple tu verras. A toi d'adapter la valeur des TR etc...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Par défaut
    Effectivement l'utilisation du JS est possible mais dans mon cas à éviter à tout prix. Donc je retourne sur l'idée de faire en tout PHP.

    Maintenant voyons pourquoi je donne une telle réponse négative.
    1. Déjà il y a le risque que cela ne s'exécute pas correctement partout.
    2. Il y a aussi le risque que le navigateur soit dépourvus de JS ou même désactivé (cas de certaines entreprises)
    3. Il faut songé que c'est une technologie non fiable car c'est un langage exécuté cotès client et d'ont les effets réels ne sont pas vérifiable
    4. Enfin c'est un langage que je ne maitrise pas complètement, donc une modification ne me sera pas aisée


    En Php maintenant, je m'interroge sur la fonction max() et min(). Je n'ai pas eu l'occasion de les employés et un exemple pourra peut-être me décider à gratté sur ce sujet.

    J'espère que je ne déçois pas trp en faisant une exclusion totale du JS mais je pense que c'est pas fiable à 100%. Je n'ai hélas pas droit à l'erreur, donc un script PHP est obligatoire.

  7. #7
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je connais l'ID du champ qui donne l'ordre. En revanche je ne connais pas l'ID du second champ qui doit bouger.
    Bien sûr que si ! Quand tu affiche la liste, il te suffit de mettre les deux id dans le lien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <a href="mon_site/move_page.php?id_page_1=X&id_page_2=Y">Up</a>
    <a href="mon_site/move_page.php?id_page_1=Y&id_page_2=X">Down</a>
    Après faire les requêtes c'est tout bête.

Discussions similaires

  1. [WPF] Organisation des pages / codes / usercontrols.
    Par takinelinfo dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 03/05/2011, 17h12
  2. organisation des pages
    Par yerimacm dans le forum Mon site
    Réponses: 5
    Dernier message: 18/02/2007, 23h25
  3. Gestion/organisation des pages de Préférences
    Par snoop dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/12/2006, 13h27
  4. Organisation des pages
    Par soad dans le forum Langage
    Réponses: 7
    Dernier message: 07/07/2006, 11h04
  5. [Conception] - Organisation des pages pour une requete.
    Par ShinJava dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 24/10/2005, 15h33

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