Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ordre alphabethique ticket

    25 octobre 2016 à 11:31:32

    Bonjour à tous, 

    Je souhaiterais trouver une solution afin de mettre mes tickets dans l'ordre alphabéthique je m'explique

    Dans ce bou de code php apparaissent des tickets avec une id pour chacuns d'entre eux :

         <!--Dépenandances des equipements selectionnés par apport aux tickets-->
                                                <div class="row">
                                                    <!--Pour les Ticket de Type Changement-->
                                                    <div class="dependanceTicket">
                                                        <div class="col-lg-2">
                                                            <label>Dépendance par rapport au(x) ticket(s):</label>
                                                        </div>
                                                        <div class="col-lg-7">
                                                            <select class="selectpicker" id="dependanceTicketsEquipements" multiple data-actions-box="true"></select>
                                                        </div>
                                                    </div>
                                                </div>

    On retrouve l'id "dependanceTicketsEquipements" dans un fichier js ou la fonctionnalité prends effet avec ce script :

    if($.inArray(reponse[key].id_ticket,tickets_selectionnes) != -1)
                                {
                                    $("#dependanceTicketsEquipements").append("<option selected class='"+id_equipement+"' value='"+reponse[key].id_ticket+"'>Ticket n° "+reponse[key].id_ticket+" : "+reponse[key].titre+" -- "+reponse[key].dernier_etat+"</option>");
                                }

    Je mets pas ce qu'il y a ensuite car cela ne modifie pas ma page lorsque que je supprime ce qui suit 

    Avez-vous une idée de ce que je dois rajouter afin que les tickets soient triés selon leurs id de facon croissante ? Si vous avez besoin de renseignements je vous le transmetterais sans problème :)

    • Partager sur Facebook
    • Partager sur Twitter
    Alex
      25 octobre 2016 à 12:12:06

      Bonjour,

      Je ne sais pas à quoi ressemble ton objet reponse[key] mais je pense que tu peux essayer de le sort en fonction de reponse[key].id_ticket.

      • Partager sur Facebook
      • Partager sur Twitter
        25 octobre 2016 à 12:16:06

        Bonjour,

        En répondant rapidement, je vois 2 pistes possibles :

        1- Trié au moment de la Requete SQl avec un ORDER BY Id

        2. trier le tableau en JS avec SORT() 

         https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/sort

        l'exemple est au milieu de la page pour toi lors du tri d'un tableau multidimentionnelle

        Si cela ne t'aide pas c'est que j'ai mal compris un truc :p 

        • Partager sur Facebook
        • Partager sur Twitter
          25 octobre 2016 à 14:49:09

          @SaShimy ca donnerait quoi si on le sort en fonction de reponse[key].id ? J'avoue que j'ai pas trop compris ce que tu as voulu me dire désolé ^^

          @booster Le plus simple cest effectivement de modifier la requête mais je la trouve pas et comme ce n'est pas moi qui ai développer ce site je vais mettre du temps avant de trouver je te tiens au jus si je la trouve.

          J'ai également vu que sort() permet de trier des tableaux mais je ne sais pas l'adapter a mon code (a quel endroit je dois le placer ?) si tu as une idée je suis preneur :)

          • Partager sur Facebook
          • Partager sur Twitter
          Alex
            25 octobre 2016 à 15:00:28

            pour l'endroit ou faire le sort c'est juste avant de faire ton affichage donc je dirais avant le IF 

            • Partager sur Facebook
            • Partager sur Twitter
              25 octobre 2016 à 15:15:49

              Alors si j'ai bien compris il faut renseigner le nom avant le sort() ce que j'ai fait il me semble mais cela ne fonctionne pas (il n'affiche carrement plus rien) je te montre l'ensemble du code permettant cette fonctionnalité pour vérifier si tu trouves bien le meme nom du tableau (pour moi cest "tickets_selectionnes") :

                  // deselect equipement
                  // Si on clique sur un equipement
                  var ticketProbleme   = 2;
                  var tickets_selectionnes = new Array();
                  $('input[name^="dependance_ticket_details"]').each(function() 
                  {
                      tickets_selectionnes.push($(this).val());
                  });
                  $(".equipementsDelete").live('click',function(){
                      
                      var ticketType = $("#id_type_ticket").val();
                      
                      if(ticketType == ticketProbleme)
                      {
                          var equipement = $(this).attr("id");
                          var selection  = equipement.split("-selectable");
                          
                          stringSelection = selection.toString();
                          tailleSelection = stringSelection.length;
              
                          var id_equipement = equipement.substring(0,tailleSelection-1);
              
                          if(id_equipement+"-selectable" == equipement)
                          {
                              $.ajax({
                                  type:"POST",
                                  url:"../controllers/ticket_creation_AppelAjax.php",
                                  success:function(rep)
                                  { 
                                      var reponse = jQuery.parseJSON(rep);
                                      $.each(reponse, function( key, value )
                                      {
                                        tickets_selectionnes.sort(  if($.inArray(reponse[key].id_ticket,tickets_selectionnes) != -1)
                                          {
                                              $("#dependanceTicketsEquipements").append("<option selected class='"+id_equipement+"' value='"+reponse[key].id_ticket+"'>Ticket n° "+reponse[key].id_ticket+" : "+reponse[key].titre+" -- "+reponse[key].dernier_etat+"</option>");
                                          }else{
                                              $("#dependanceTicketsEquipements").append("<option class='"+id_equipement+"' value='"+reponse[key].id_ticket+"'>Ticket n° "+reponse[key].id_ticket+" : "+reponse[key].titre+" -- "+reponse[key].dernier_etat+"</option>");
                                          }
                                      )});
                                      $("#dependanceTicketsEquipements").selectpicker("refresh");
                                  },
                                  error:function(){
                                      alert('error de recupération informations de l\'entité.');
                                  },
                                  data:
                                  {
                                      id_equipement : id_equipement,
                                      option        : "getTicketsImpactesEquipement",
                                  }   
                              });
                          }
                          else{
                              var selection  = equipement.split("-selection");
                              stringSelection = selection.toString();
                              tailleSelection = stringSelection.length;
              
                              id_equipement = equipement.substring(0,tailleSelection-1);
              
                              if(id_equipement+"-selection" == equipement)
                              {
                                  $("."+id_equipement).remove();
                                  $("#dependanceTicketsEquipements").selectpicker("refresh");
                              }else{
                                  alert("La selection ou la deselection de l'equipement ne c'est pas faite de façon correcte.");
                              }
                          }
                      }
                  });



              • Partager sur Facebook
              • Partager sur Twitter
              Alex
                25 octobre 2016 à 15:26:55

                Malheureusement tu as perdu ! :)

                le tableau de la liste de tes tickets et qui sert ensuite d'affichage est le tableau nommée reponse qui est retourné par l'appel AJAX ( Ligne 30 )

                tu dois donc faire ton Sort entre les lignes 30 et 31.

                Si tu n'y arrives pas à faire le sort , poste le résultat de  console.log(reponse[0]);  afin de voir la 1ere occurence de ton tableau.

                • Partager sur Facebook
                • Partager sur Twitter
                  25 octobre 2016 à 15:31:34

                  J'aurai essayé au moins ^^ du coup avant sort() je mets quoi ? Parce qu'il le reconnait pas en tant que fonction .. Et pareil pour console.log(reponse[0]);  je le mets a quel endroit ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Alex
                    25 octobre 2016 à 15:36:51

                    Pour le console.log(reponse[0]); tu peux le mettre juste après la ligne 30

                    ensuite pour le sort faut lire la doc :

                    https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/sort

                     voici l'exemple il faut que tu dises comment trier le tableau 

                    var items = [ { name: "Edward", value: 21 },
                                 { name: "Sharpe", value: 37 },
                                 { name: "And", value: 45 },
                                 { name: "The", value: -12 },
                                 { name: "Magnetic" },
                                 { name: "Zeros", value: 37 } ];
                    
                    items.sort(function (a, b) {
                      f (a.value > b.value) return 1;
                      if (a.value < b.value) return -1; 
                    // a doit être égale à b
                     return 0; });
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 octobre 2016 à 16:19:14

                      Pour la console il me repond ca :

                      Failed to load resource: the server responded with a status of 404 (Not Found)

                      scriptTicket_details.js:1450 Objectdate_creation: "2014-04-30 16:21:09.0000000"dernier_etat: "Clos"id_ticket: "15239"nom_createur: "GUILLAUME"nom_encharge: "GUILLAUME"prenom_createur: "Aurélien"prenom_encharge: "Aurélien"titre: "Crash AP OpenSpace"__proto__: Object

                      j'ai cherché si une requete ressemblait a ca mais toujours rien trouvé de ce coté la ..

                      Et pour le sort() j'ai bien compris son fonctionnement c'est juste que je ne sais pas comment l'adapter à mon code pour l'instant ^^

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Alex
                        25 octobre 2016 à 16:46:56

                        ok bon test un truc mais je ne suis pas sur 

                        reponse.sort(function (a, b) {
                          if (a.id_ticket > b.id_ticket){return 1};
                          if (a.id_ticket < b.id_ticket){return -1};
                         return 0; });


                        Essaye ca

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Ordre alphabethique ticket

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown