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. Organisation dynamique d'un menu


Sujet :

jQuery

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Points : 229
    Points
    229
    Par défaut UI Sortable. Organisation dynamique d'un menu
    Bonjour à tous.

    J'ai découvert depuis quelque temps la librairy jquery UI. J'ai donc lu de fond en comble la documentation de cette librairy.
    J'ai donc essayé de mettre en place un système pour organiser mon menu.
    Voici le menu de base

    Rubrique 1
    Rubrique 2
    Rubrique 3
    Rubrique 4

    Pour organiser ce menu j'utilise l'attribut sortable:
    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
     
    $("#sortable").sortable(
    		{
    			placeholder: "ui-state-highlight",
    			update : function (event, ui)
    			{
    				var list = ui.item.parent("ul");
    				var pos = 0;
    				$(list.find("li")).each(function()
    				{
    					pos++;
    					$(this).find("input.positionInput").val(pos);
    				});
    			}
    		});
    et le code html qui fonctionne avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <ul id="sortable">
    <li>Rubrique 1</li>
    <li>Rubrique 2</li>
    <li>Rubrique 3</li>
    <li>Rubrique 4</li>
    </ul>
    Sur une structure à un niveau, le code fonctionne très bien, par contre, sur une structure à 2 niveaux, je n'y arrive pas.
    Cette structure est celle là.
    Rubrique 1
    sous Rubrique 1
    sous Rubrique 2
    Rubrique 2
    sous Rubrique 3
    sous Rubrique 4

    Pour effectuer cette organisation, voici le code html permettant l'organisation de mon menu
    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
     
    <ul id="sortable">
        <li>Rubrique 1
             <ul class="sortable2">
                 <li>sous Rubrique 1</li>
                 <li>sous Rubrique 2</li>
             </ul>
        </li>
        <li>Rubrique 2
             <ul class="sortable2">
                  <li>sous Rubrique 3</li>
                  <li>sous Rubrique 4</li>
             </ul>
        </li>
    </ul>
    J'aimerais pouvoir organiser via le système sortable mon menu. En gros, j'aimerais pouvoir déplacer une sous rubrique d'une rubrique à une autre mais également déplacer et organiser les rubriques entre elle.

    Le but est ensuite d'enregistrer dans la base de donnée mes rubriques et mes sous rubriques. Pour l'enregistrement, il s'agira de simple requete update.
    Mais le problème est que malgré que le code js pour l'organisation que je veux, la numérotation des positions des rubriques et des sous rubriques foirent. Pour voir si la position des menus fonctionnent correctement, j'utilise les <input type="text" .... /> qui prenent la numérotation de la position.

    Voici le code js que j'utilise actuellement:
    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
    26
    27
    28
    29
    30
     
    		$("#sortable").sortable(
    		{
    			placeholder: "ui-state-highlight",
    			update : function (event, ui)
    			{
    				var list = ui.item.parent("ul");
    				var pos = 0;
    				$(list.find("li")).each(function()
    				{
    					pos++;
    					$(this).find("input.positionInput").val(pos);
    				});
    			}
    		});
    		$(".sortable2").sortable(
    		{
    			placeholder: "ui-state-highlight",
    			connectWith: '.sortable2',
    			update : function (event, ui)
    			{
    				var list = ui.item.parent("ul");
    				var pos = 0;
    				$(list.find("li")).each(function()
    				{
    					pos++;
    					$(this).find("input.childpositionInput").val(pos);
    				});
    			}
    		});
    Je sais pas si vous avez compris quelque chose à mon charabiat, si vous voulez plus d'explication, n'hésitez pas.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Voici un exemple.

    Je stocke le numéro de chaque <li> dans l'attribut lipos.

    À l'ouverture de la page et après chaque modification, la liste des lipos, contenue dans un array, est affichée.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<meta name="Author" content="Daniel Hagnoul" />
    	<title>Page type</title>
    	<link rel="stylesheet" type="text/css" href="../lib/humanity/jquery-ui-1.7.2.custom.css" media="screen" />
    	<style type="text/css">
    		body {
    			background-color:#FFFFFF;
    			color:#000000;
    			font-family:Arial, Helvetica, sans-serif;
    			font-size:medium;
    			font-style:normal;
    			font-weight:normal;
    			line-height:normal;
    			letter-spacing:normal;
    		}
    		h1,h2,h3,h4,h5 {
    			font-family:"Times New Roman", Times, serif;
    		}
    		div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img {
    			margin:0px;
    			padding:0px;
    		}
    		p {
    			padding:6px;
    		}
    		ul,ol,dl {
    			list-style:none;
    			padding-left:6px;
    			padding-top:6px;
    		}
    		li {
    			padding-bottom:6px;
    		}
    		li {
    			padding-bottom:6px;
    		}
    		div#conteneur {
    			width:95%;
    			margin:12px auto;
    			padding:6px;
    			background-color:#FFFFFF;
    			color:#000000;
    			border:1px solid #666666;
    			font-size:0.8em;
    		}		
    		div#affiche {
    			margin:12px;
    			border:1px solid #999999;
    		}
     
    		/* TEST */
    		#sortable {
    			width:200px;
    		}
    		#sortable li {
    			height:auto;
    			padding:6px;
    		}
    		#sortable10 li, #sortable20 li {
    			height:30px;
    			padding:6px;
    		}
    	</style>
    	<script type="text/javascript" src="../lib/jquery-1.3.2.min.js"></script>
    	<script type="text/javascript" src="../lib/jquery-ui-1.7.2.custom.min.js"></script>
    	<script type="text/javascript">
    		$(document).ready(function(){
    			var lipos = null;
     
    			function liposUpdade(){
    				lipos = [];
     
    				$("#sortable li").each(function(i,item){
    					lipos.push($(item).attr("lipos"));
    				});
     
    				$("#affiche").append("<p>" + lipos.join(" , ") + "</p>");
    			}
     
    			$("#sortable").sortable({
    				placeholder: "ui-state-highlight",
    				update : function (event, ui){
    					liposUpdade();
    				}
    			});
     
    			$("#sortable10").sortable({
    				connectWith: '#sortable20',
    				placeholder: "ui-state-highlight",
    				update : function (event, ui){
    					liposUpdade();
    				}
    			});
     
    			$("#sortable20").sortable({
    				connectWith: '#sortable10',
    				placeholder: "ui-state-highlight",
    				update : function (event, ui){
    					liposUpdade();
    				}
    			});
     
    			liposUpdade();
    		});
    	</script>
    </head>
    <body>
    	<div id="conteneur">
    		<div id="affiche"></div>
     
    		<ul id="sortable">
    			<li class="ui-state-default" lipos="10">
    				Rubrique 1
    				<ul id="sortable10">
    					<li class="ui-state-highlight" lipos="11">sous Rubrique 1</li>
    					<li class="ui-state-highlight" lipos="12">sous Rubrique 2</li>
    				</ul>
    			</li>
    			<li class="ui-state-default" lipos="20">
    				Rubrique 2
    				<ul id="sortable20">
    					<li class="ui-state-highlight" lipos="21">sous Rubrique 3</li>
    					<li class="ui-state-highlight" lipos="22">sous Rubrique 4</li>
    				</ul>
    			</li>
    		</ul>		
    	</div>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Points : 229
    Points
    229
    Par défaut
    Merci pour cette réponse et désolé car je suis revenu que aujourd'hui.
    Cette réponse m'a ouvert les yeux car elle m'a permis de comprendre un peu plus comment sa fonctionnait.
    Je l'ai donc adapté à mon code et même améliorer le code précédemment cité.
    Voici le code source html
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    <fieldset id="contenugauche"><legend>Modification du menu</legend>
    <form action="" method="post">
    <div id="affiche"></div>
    <ul id="sortable">
     
    			<li class="ui-state-default" lipos="1"><input type="hidden" name="menu[1][id]" value="1" /><input type="text" class="positionInput" style="witdh:20px;" value="1" name="menu[1][position]" /><input type="text" class="redim" value="S'évader en Astarac" name="menu[1][titre]" />
    				<ul class="sortable">
    					<li class="ui-state-default" lipos="2">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[2][id]" value="7" /><input type="text" class="childInput" value="1" name="menu[2][parent]" /><input type="text" class="childpositionInput" value="1" name="menu[2][position]" /><input type="text" value="Randonner" name="menu[2][titre]" /></li>
    					<li class="ui-state-default" lipos="3">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[3][id]" value="9" /><input type="text" class="childInput" value="1" name="menu[3][parent]" /><input type="text" class="childpositionInput" value="2" name="menu[3][position]" /><input type="text" value="Un peu d'histoire" name="menu[3][titre]" /></li>
    					<li class="ui-state-default" lipos="4">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[4][id]" value="10" /><input type="text" class="childInput" value="1" name="menu[4][parent]" /><input type="text" class="childpositionInput" value="3" name="menu[4][position]" /><input type="text" value="Déguster" name="menu[4][titre]" /></li>
     
    					<li class="ui-state-default" lipos="5">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[5][id]" value="11" /><input type="text" class="childInput" value="1" name="menu[5][parent]" /><input type="text" class="childpositionInput" value="4" name="menu[5][position]" /><input type="text" value="Se loger" name="menu[5][titre]" /></li>
    					<li class="ui-state-default" lipos="6">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[6][id]" value="8" /><input type="text" class="childInput" value="1" name="menu[6][parent]" /><input type="text" class="childpositionInput" value="5" name="menu[6][position]" /><input type="text" value="Nager" name="menu[6][titre]" /></li>
    				</ul>
    				</li>
    			<li class="ui-state-default" lipos="7"><input type="hidden" name="menu[7][id]" value="2" /><input type="text" class="positionInput" style="witdh:20px;" value="2" name="menu[7][position]" /><input type="text" class="redim" value="Vivre en Astarac" name="menu[7][titre]" />
    				<ul class="sortable">
    					<li class="ui-state-default" lipos="8">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[8][id]" value="12" /><input type="text" class="childInput" value="2" name="menu[8][parent]" /><input type="text" class="childpositionInput" value="1" name="menu[8][position]" /><input type="text" value="Enfance et Jeunesse" name="menu[8][titre]" /></li>
    					<li class="ui-state-default" lipos="9">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[9][id]" value="13" /><input type="text" class="childInput" value="2" name="menu[9][parent]" /><input type="text" class="childpositionInput" value="2" name="menu[9][position]" /><input type="text" value="Nos ainés" name="menu[9][titre]" /></li>
    					<li class="ui-state-default" lipos="10">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[10][id]" value="14" /><input type="text" class="childInput" value="2" name="menu[10][parent]" /><input type="text" class="childpositionInput" value="3" name="menu[10][position]" /><input type="text" value="Environnement" name="menu[10][titre]" /></li>
     
    				</ul>
    				</li>
    			<li class="ui-state-default" lipos="11"><input type="hidden" name="menu[11][id]" value="3" /><input type="text" class="positionInput" style="witdh:20px;" value="3" name="menu[11][position]" /><input type="text" class="redim" value="Entreprendre en Astarac" name="menu[11][titre]" />
    				<ul class="sortable">
    					<li class="ui-state-default" lipos="12">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[12][id]" value="15" /><input type="text" class="childInput" value="3" name="menu[12][parent]" /><input type="text" class="childpositionInput" value="1" name="menu[12][position]" /><input type="text" value="Zone d'Activités du Pountet" name="menu[12][titre]" /></li>
    					<li class="ui-state-default" lipos="13">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[13][id]" value="16" /><input type="text" class="childInput" value="3" name="menu[13][parent]" /><input type="text" class="childpositionInput" value="2" name="menu[13][position]" /><input type="text" value="Zone d'Activités du Miélanais" name="menu[13][titre]" /></li>
    					<li class="ui-state-default" lipos="14">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[14][id]" value="17" /><input type="text" class="childInput" value="3" name="menu[14][parent]" /><input type="text" class="childpositionInput" value="3" name="menu[14][position]" /><input type="text" value="Zone d'Activités du Cadran" name="menu[14][titre]" /></li>
    					<li class="ui-state-default" lipos="15">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[15][id]" value="18" /><input type="text" class="childInput" value="3" name="menu[15][parent]" /><input type="text" class="childpositionInput" value="4" name="menu[15][position]" /><input type="text" value="Zone d'Activités de Saint Maur Soulès" name="menu[15][titre]" /></li>
    					<li class="ui-state-default" lipos="16">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[16][id]" value="19" /><input type="text" class="childInput" value="3" name="menu[16][parent]" /><input type="text" class="childpositionInput" value="5" name="menu[16][position]" /><input type="text" value="Soho Solo" name="menu[16][titre]" /></li>
     
    				</ul>
    				</li>
    			<li class="ui-state-default" lipos="17"><input type="hidden" name="menu[17][id]" value="4" /><input type="text" class="positionInput" style="witdh:20px;" value="4" name="menu[17][position]" /><input type="text" class="redim" value="La Communauté de communes" name="menu[17][titre]" />
    				<ul class="sortable">
    					<li class="ui-state-default" lipos="18">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[18][id]" value="20" /><input type="text" class="childInput" value="4" name="menu[18][parent]" /><input type="text" class="childpositionInput" value="1" name="menu[18][position]" /><input type="text" value="Nos communes" name="menu[18][titre]" /></li>
    					<li class="ui-state-default" lipos="19">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[19][id]" value="21" /><input type="text" class="childInput" value="4" name="menu[19][parent]" /><input type="text" class="childpositionInput" value="2" name="menu[19][position]" /><input type="text" value="Nos actions" name="menu[19][titre]" /></li>
    					<li class="ui-state-default" lipos="20">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[20][id]" value="22" /><input type="text" class="childInput" value="4" name="menu[20][parent]" /><input type="text" class="childpositionInput" value="3" name="menu[20][position]" /><input type="text" value="Notre fonctionnement" name="menu[20][titre]" /></li>
    					<li class="ui-state-default" lipos="21">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[21][id]" value="23" /><input type="text" class="childInput" value="4" name="menu[21][parent]" /><input type="text" class="childpositionInput" value="4" name="menu[21][position]" /><input type="text" value="Notre organisation" name="menu[21][titre]" /></li>
    					<li class="ui-state-default" lipos="22">&nbsp;&nbsp;&nbsp;<input type="hidden" name="menu[22][id]" value="24" /><input type="text" class="childInput" value="4" name="menu[22][parent]" /><input type="text" class="childpositionInput" value="5" name="menu[22][position]" /><input type="text" value="Les comptes rendus" name="menu[22][titre]" /></li>
     
    				</ul>
    				</li>
    			<li class="ui-state-default" lipos="23"><input type="hidden" name="menu[23][id]" value="5" /><input type="text" class="positionInput" style="witdh:20px;" value="5" name="menu[23][position]" /><input type="text" class="redim" value="Photothèque" name="menu[23][titre]" />
    				</li>
    			<li class="ui-state-default" lipos="24"><input type="hidden" name="menu[24][id]" value="6" /><input type="text" class="positionInput" style="witdh:20px;" value="6" name="menu[24][position]" /><input type="text" class="redim" value="Marchés publics" name="menu[24][titre]" />
    				</li></ul>
    <input type="submit" name="enregistrement" value="Enregistrement des modifications">
    </form>
    </fieldset>
    <fieldset id="contenudroit">
    <a href="../" title="Retour à la page principale"><img src="../../../icones/back.png" width="60px" height="60px" alt="Retour à la page principale" title="Retour à la page principale"/></a><br />
     
    <a href="../" title="Retour à la page principale">Retour à la page principale</a>
    </fieldset>
    Et voici la code javascript que j'ai mis dans un fichier "a part" pour plus de visibilité:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    $(function() {
    		$(document).ready(function(){
    			var lipos = null;
     
    			function liposUpdade(){
    				lipos = [];
     
    				$("#sortable li").each(function(i,item){
    					lipos.push($(item).attr("lipos"));
    				});
     
    				$("#affiche").append("<p>" + lipos.join(" , ") + "</p>");
    			}
    			//ul principal (equivalent de rubrique)
    			$("#sortable").sortable({
    				placeholder: "ui-state-highlight",
    				update : function (event, ui){
    					liposUpdade();
    				}
    			});
    			//ul secondaire (équivalent des sous rubriques)
    			/*$("#sortable10").sortable({
    				connectWith: '#sortable20',
    				placeholder: "ui-state-highlight",
    				update : function (event, ui){
    					liposUpdade();
    				}
    			});
     
    			$("#sortable20").sortable({
    				connectWith: '#sortable10',
    				placeholder: "ui-state-highlight",
    				update : function (event, ui){
    					liposUpdade();
    				}
    			});*/
     			$(".sortable").sortable({
    				connectWith: '.sortable',
    				placeholder: "ui-state-highlight",
    				update : function (event, ui){
    					liposUpdade();
    				}
    			});
    			liposUpdade();
    		});
    });
    Quand j'affiche et je teste, dans le div possédant l'id affiche, cela fonctionne très bien, l'ordre des "li" est bon. Cependant, j'ai un soucis de compréhension dû, peut-être, au fait que je ne sois pas encore réveillé à 100%.

    Actuellement j'utilise pour la phase de mise au point du script php dans input qui prenne le numéro du "li". Dans mon traitement php, je récupèrerais ces identifiants pour les enregistrer directement dans la base de donnée
    Voici un exemple de ce que je veux obtenir/
    AVANT
    1 Rubrique 1
    1 1 Sous Rubrique 1
    1 2 Sous Rubrique 2
    2 Rubrique 2
    2 1 Sous Rubrique 3
    2 2 Sous Rubrique 4

    APRES
    1 Rubrique 2
    1 1 Sous Rubrique 4
    1 2 Sous Rubrique 3
    2 Rubrique 1
    2 1 Sous Rubrique 1
    2 2 Sous Rubrique 2

    Je pense que là, sa doit être plus simple avec ce petit schéma. NON?
    Je vais continuer à rechercher de mon coté après un bon café dans le cas où la réponse est simple et que mon cerveau ne soit pas encore totalement réveillé!!!!

    Merci d'avance.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Points : 229
    Points
    229
    Par défaut
    J'ai encore testé et réfléchit mais je ne trouve pas la bonne solution.
    J'ai une question pour mettre le problème sur la table, est ce une bonne solution de mettre des input text pour pouvoir récupérer et mettre en place dans la base de donnée le bon ordre de mes rubriques et sous rubrique?

    lemirandais

    PS: désolé pour le up de ce matin.

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Comme vous l'avez vu dans mon exemple je n'ai pas utilisé d'input, mais un attribut.

    Désolé, je vous ai déjà donné ma meilleure réponse, je dois partager mon temps libre (je n'en aurai pas beaucoup ces prochains jours) pour essayer de consacrer un peu de temps à chacun.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Points : 229
    Points
    229
    Par défaut
    Le principal problème est de savoir comment faire pour à partir des l'affichage que tu me proposes, récupérer les positions.
    C'est surtout cela mon problème d'incompréhension.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Points : 229
    Points
    229
    Par défaut
    Un ami sur un autre forum a trouvé la solution, enfin 2 solutions.
    Voila le code javascript a utilisé:
    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
     
    function liposUpdade(){
    //je récupère dans un tableau a les différents élément qui ont pour id sortable
    a = document.getElementById('sortable');
    //je recupère le premier fils
    el = a.firstChild;
     
    var i = 1, z, e, j;
    //je ne comprend plus à partir de là
    do {
    if (el.nodeName == 'LI') {
    el.getElementsByTagName('input')[1].value = i;
    z = el.getElementsByTagName('li');
    for (e = 0; e < z.length; e++) {
    z[e].getElementsByTagName('input')[1].value = i;
    z[e].getElementsByTagName('input')[2].value = e + 1;
    }
    i++;
    }
    }
    while (el = el.nextSibling);
    }
    et la seconde version faites en jquery
    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
     
    var i = 1;
     
    $('#sortable > li').each(function() {
    	$(this).find('.positionInput').val(i);
     
    	var j = 1;
     
    	$(this).find('li').each(function() {
    		$(this).find('.childInput').val(i);
    		$(this).find('.childpositionInput').val(j);
     
    		j++;
    	});
     
    	i++;
    });
    Merci pour votre aide.

    lemirandais

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

Discussions similaires

  1. Création dynamique de sous menu
    Par mhb3010 dans le forum C++Builder
    Réponses: 1
    Dernier message: 19/09/2008, 10h08
  2. chargement dynamique d'un menu déroulant
    Par Beltegeuse dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 02/05/2008, 11h09
  3. Création dynamique de VB.Menu
    Par ppphil dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/07/2007, 11h04
  4. Réponses: 2
    Dernier message: 07/02/2007, 11h16
  5. [PopupMenu] Créer dynamiquement un sous menu (submenu)
    Par MiJack dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/02/2006, 13h41

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