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 :

UI Sortable : mémoriser l'ordre des éléments 'li' après modification


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut UI Sortable : mémoriser l'ordre des éléments 'li' après modification
    Bonjour,

    Actuellement je travail sur cet outil Jquery UI qui me permet de changer l'ordre des valeurs de ma liste 'Sortable'. Mais ma liste viens du Base de donnée et je garde dans la BDD la position de chaque élément.

    J'affiche correctement ma liste code HTML généré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <ul id="sortable">		
            <li class="ui-state-default" lipos="1440">Contenus1</li>		
            <li class="ui-state-default" lipos="1441">Contenus2</li>	
    </ul>
    (j'ai volontairement caché le contenu s'agissant de données propre à une entreprise)

    comme vous le voyais j'ai tâté un peu le code fournit dans ce Topic, mais au final je ne cerne pas du tout comment ça fonctionne x).

    voici le code JS:
    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
     
    var lipos = null;
     
    function liposUpdade(){
            lipos = [];
     
    	$("#sortable li").each(function(i,item){
    		lipos.push($(item).attr("lipos"));
    	});
     
    	$("#affiche").append("<p>" + lipos.join(" , ") + "</p>");
    }
    $(function() {
    	$("#sortable").sortable({
    		placeholder: "ui-state-highlight",
    		update : function (event, ui){
    			liposUpdade();
    		}
    });
    $("#sortable").disableSelection();
    });
    bon jusque là ça tourne bien, je peux déplacer mes lignes comme bon me semble, mais comment enregistrer la position final dans la BDD?

    Voilà, avec tout ça je pensais pouvoir récupérer la position et la mettre à jour dans ma base de donnée. Malheureusement c'est pas si simple --'.

    Est il possible que l'on m'oriente afin que mon programme fonctionne correctement avec l'effet voulu?

    J'utilise postgreSQL.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Tu peux récupérer les valeurs des attributs lipos selon le rang.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var a = document.getElementById('sortable').getElementsByTagName('li');
    for(var i=0;i<a.length;i++)
    {
    	alert("Lipos "+i+" = "a[i].getAttribute('lipos'));
    }
    Tu sérialises ces valeurs puis l'envoyer au serveur avec une requête AJAX.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Donc il me faut utiliser l'Ajax d'accord ,

    Le Hic c'est que je n'y connais absolument rien à ce niveau. J'ai beau chercher des tutos ou autre explications, j'en trouve, mais je me retrouve totalement paumé à chaque coup...

    c'est possible d'avoir un exemple concret pour la requête Ajax ?

    edit: J'ai trouvé ce tutos, mais je ne pense pas que ça corresponde réellement --',

    Tu sérialises ces valeurs puis l'envoyer au serveur avec une requête AJAX.
    Je ne comprend pas le terme "sérialise"

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,
    Regardes comment utiliser AJAX avec jQuery.
    Je ne comprend pas le terme "sérialise"
    Tu faits en sorte que les valeurs envoyés sur le serveur est de la forme
    var[]=0&var[]=1&var[]=2
    Lesquelles tu les reçois comme en array du coté serveur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var=$_POST["var"];//$var est un array

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bon j'ai regardé et lu le lien vers Jquery et Ajax ,

    Une petite question pour être sure d'avoir compris:

    J'envois mes valeur soit en GET ou POST avec Jquery vers un programme PHP qui va lui interragir avec la base de données? c'est bien ça?

    Donnée à envoyer => envois avec Jquery (GET ou POST) vers .php => .php réalise la requête SQL = Les Données sont modifié sur le serveur.

    :p petit schéma très simple.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,
    Oui, t'as tous compris .

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup j'ai enfin compris comment ça fonctionne. Maintenant je vais passer au codage et je reviendrais pour montrer le résultat ou si j'ai d'autre question

    Je te remercie beaucoup pour ton aide qui m'a fait avancer :p

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 7
    Points
    7
    Par défaut re
    Re :p,

    Bien au final j'ai trouvé une solution bien plus simple à mon problème et je pense qu'elle arrangera beaucoup de gens

    dans un premier temps j'ai mon code JS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $(document).ready( function(){
    	$("#sortable").sortable();
    	$("#sortable").disableSelection();
    });
    et ensuite le HTML qui fait tout :p :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <form method="post" action="#">
    	<ul id="sortable">
    		<li class="ui-state-default" > 
    			<input type="hidden" name="list_ligne[]" value="1" />contenu</li>		
    		<li class="ui-state-default" > 
    			<input type="hidden" name="list_ligne[]" value="2" />contenu</li>		
    		<li class="ui-state-default" > 
    			<input type="hidden" name="list_ligne[]" value="3" />contenu</li>		
    		<li class="ui-state-default" > 
    			<input type="hidden" name="list_ligne[]" value="4" />contenu</li>
    	</ul>
    	<input id="save" value="enregistrer" type="submit"/>
    </form>
    Bien maintenant j'explique

    J'utilise un code javascript simplement pour avoir la possibilité de déplacer mes 'li' comme je l'entend.

    ensuite tout le travail de mémorisation d'ordre des lignes est effectué grâce à un formulaire.
    Ce formulaire a pour chaque 'li' une balise 'input' du type hidden. Cette balise a comme attribut name un tableau qui va s'indexer automatiquement lors de l'envoi du formulaire dans lequel je place les id de mes lignes grace à l'attribut value.

    ainsi j'envois au serveur un tableau list_ligne[] commençant à 0 rempli avec les id de mes lignes dans l'ordre où elle apparaisse à l'écran.

    :p je chercher à faire de l'AJAX alors que la solution était bien plus simple et surtout cela me permet de mettre à jour mon Jquery UI sans pour autant toucher à toute ma logique.
    Merci tout de même pour le coup de main car je sais maintenant utiliser l'AJAX pour d'autre choses :p c'est toujours utile ^^.

    Sur ce Bonne journée

  9. #9
    Nouveau membre du Club

    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 39
    Points
    39
    Par défaut
    Salut !
    Je découvre avec bonheur ce sujet, car j'ai le même problème. Pourrais tu donner plus de détail quand à la dernière partie de ton code, celui qui traite la donnée ?
    Merci !

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

Discussions similaires

  1. [C#] Inverser l'ordre des éléments d'une Hashtable
    Par lancer83 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 31/08/2006, 20h03
  2. [Struts] ordre des éléments dans un tableau de propriétés
    Par zais_ethael dans le forum Struts 1
    Réponses: 2
    Dernier message: 09/05/2006, 15h54
  3. [XSL][débutant]trié l'ordre des éléments d'un fichier xml
    Par pistache42 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/04/2006, 10h37
  4. [XSL] Ordre des éléments présentés
    Par Cupidon dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/01/2006, 13h58
  5. [C#] ordre des éléments dans un datagrid
    Par liliprog dans le forum ASP.NET
    Réponses: 3
    Dernier message: 19/09/2005, 16h31

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