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

jQuery Discussion :

renseignement sur le principe du drag&drop


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut renseignement sur le principe du drag&drop
    Bonsoir à tous, j'ai une question qui me turlupine depuis un moment.
    J'ai une liste de news que l'ont peux previsualiser, modifier, etc ..
    Seulement mes clients souhaite pouvoir modifier l'ordre de celle-ci ce qui étais prévu au programme pour plus de faciliter
    Cependant, je n'arrive pas à me faire à l'idée de comment s'y prendre...
    Je vois bien le code jQuery avec le plugin UI sortable suivi d'une requête ajax mais ce que je ne pige pas c'est comment modifier cet ordre ???
    Je veux dire par la que le principe de la requête m'échappe, dois je mettre à jour tous les ID des news pour modifier l'ordre ?
    Je ne vois que sa pour que l'ordre ne change
    exemple :
    news ID 2
    news ID 3
    news ID 1
    Je souhaite avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    news ID 3
    news ID 1
    news ID 2
    Dois je faire à ce moment une requête de type update sur toutes la table et changer l'id de tout ??
    Bref j'ai besoin de comprendre comment réaliser cela sans partir dans des délire comme j'ai l'habitude de faire ces temps-ci

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    Le plugin de jquery ne change rien à tes données, il change juste des div de place chez le client. Par contre des événements Javascript peuvent être récupérés lors des changements. Si tu as besoin de synchroniser tes bases avec le nouvel ordre, tu peux lancer des requêtes ajax à partir de ces événements.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Je sais bien que le plugin ne change en rien les données ce n'est que visuel chez le client.
    Ce que je me demandais c'est justement quoi mettre à jour, bon logiquement c'est l'id mais dois on modifier tous les ID pour que cela corresponde, comment exécuter une tel requête sachant que pour l'instant quelque news sont intégrer mais sachant que je devrai procéder de la même façon pour un catalogue qui peut contenir des milliers d'ID.
    Bref je me prend certainement la tête pour rien mais c'est toujours bon de se renseigner correctement

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    salut,

    je pense que renuméroter les ids des news n'est pas une bonne approche.
    L'id est censé identifier une news, je ne l'utiliserai pas pour du tri. Si par la suite
    tu dois référencer des news depuis ailleurs ça t'obligerait à faire pas mal de
    changements. Tu pourrais ajouter une colonne pour l'ordre. Mais ça ne t'aide
    en rien au niveau de l'algo de renumérotation.

    Tu pourrais ajouter une colonne avec une référence sur l'ID de la news suivante,
    (principe d'une liste chainée). Cela n'est pas non plus très simple a gérer et il faut
    plusieurs requêtes pour la mise à jour et l'affichage.

    Peux être y a-t-il, ou y aura-t-il une notion de groupe de news. Dans ce cas:

    Tu pourrais créer une table groupe de news avec un champs texte assez long
    qui contient les IDs des news dans l'ordre d'affichage séparé par des virgules.

    Cette méthode a l'avantage de manipuler une liste d'IDs, c'est très facile pour
    la mise à jour, il suffit de reprendre les IDs dans ta page web et d'envoyer la
    nouvelle chaine.

    Et il y a encore surement plein d'autre idées Mais c'est pas un problème
    trivial, et le choix de la solution doit tenir compte de l'usage. Privilégier une
    solution rapide à l'affichage si la charge est importante par ex.

    J'espère que ça te donne des idées.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Ben ma table news par exemple est assez simpliste et je récupére les enregistrement avec PDO et smarty (pour l'affichage).
    Voici ma table des news :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `db_news` (
      `id_news` int(11) NOT NULL auto_increment,
      `sujet` varchar(255) NOT NULL,
      `texte` text NOT NULL,
      `news_date` date NOT NULL,
      PRIMARY KEY  (`id_news`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
    Comme vous pouvez constater elle est très simple (je dirai même trop lol) mais pour l'instant elle me suffit amplement mais un remaniement suivant votre idée peut bien entendu m'aider grandement.
    Seulement je ne vois pas très bien, Faut dire mes requêtes sont de nature simple et je suppose que votre idée est de lié cette table à celle qui contiendrai une liste pour l'ordre du moins si j'ai bien compris.
    Comme l'ordre des news sera personnalisable dans l'admin, voici la requête select pour l'affichage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM db_news WHERE id_news ORDER BY id_news DESC
    si je comprend le principe pour construire les requêtes sql et php pour modifier l'ordre (tout d'abord dans sql avec la bonne modif sur la table) je pourrai ainsi construire la requête ajax sans probléme.
    Mon cms repose uniquement sur jQuery mais il manque le drag & drop

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Si tu choisis l'option qui consiste à sauver une liste d'id, par ex: 12,4,7,8

    Alors pour l'affichage tu auras un code dans ce goût là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $liste = ... extraire depuis un groupe de news par exemple ...
    $ids = explode(',', $liste);
    foreach($ids as $id) {
      // SELECT * FROM db_news WHERE id_news=$id;
      $html = buildNews(...);
      echo $html;
    }
    Cette manière de faire facilite l'édition des positions, mais à l'affichage il
    y a une requête par news, à toi de voir si c'est bon dans ton cas.

    Coté Javascript, après le drag&drop tu parcours les news dans le DOM et
    tu range les ID dans un tableau javascript (par ex: liste) ensuite tu fais
    une requête Ajax avec un url du genre: "update-order.php?ids=" + liste.join(',');

    Je pense que quelque soit ton approche du problème il faut passer la liste
    des ID par ajax sous forme d'une chaine, ça me semble plus simple.

    Ensuite coté PHP tu utilise cette liste soit tel quel, soit tu l'utilise pour renuméroter une colonne de la table db_news (ou id_news si tu y tiens)

Discussions similaires

  1. Drag and drop sur une PictureBox
    Par abdiouldbody dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/06/2009, 15h55
  2. [VB.NET] Drag and Drop d'un fichier sur un objet Panel
    Par Mü dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/11/2005, 12h30
  3. Drag and drop sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 02/08/2005, 10h54

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