Bonjour, j'ai plusieurs problémes qui découlent plus ou moins les uns des autres donc je les mets dans un seul poste mais si il faut en traiter un par poste dites le moi j'éditerai, mais pour avoir une vu d'ensemble je préfére toute mettre ici.
Alors voila :
J'ai une BDD avec beaucoup d'entrée. je souhaiterais afficher toutes ces données dans un tableau HTML. Pour l'instant je ne travail qu'avec un petit echantillon de ces données pour réaliser les fonctions de traitement mais cela donne une idée de ce à quoi ressemble le tableau : http://img11.hostingpics.net/pics/534052tableauhtml.png
Par la suite, pour afficher l'ensemble des données je pense passer par un systéme de pagination.
(Pb n°1 :Est-ce la bonne solution? De passer par un systéme de pagination?)(Cela pose un autre probléme que je vais vous exposer un peu plus tard).
Pour traiter ces données (effectuer des requetes sur la BDD comme supprimer un ensemble de ligne), on clique sur les lignes que l'on veut pour les selectionner et on récupére les valeurs des "marques" que l'on met dans un array.
Pour un modéle avec un tableau sur une seule page c'est bon :
Ca marche puisque l'on selectionne d'abord les lignes puis ensuite on recupere la valeurs des "marque" quand on effectue l'action. Mais dans le cadre d'une pagination non puisqu'à chaque changement de page, la page est rechargé et les valeurs perdues or je souhaite garder la selection des pages précédentes. Voila ce que je pensais mettre en oeuvre :
- A chaque selection / deselection mettre à jour l'array des "marque" (on enleve où on ajoute).
(Pb n°2 : Comme j'ai un rowspan, je fais une boucle sur chaque ligne selectionnée et je teste si la colone "marque" existe (1ere ligne du rowspan) et si la valeur de "marque" est deja dans le tableau, sinon je la supprime(deselection). Mais ma condition ne marche pas et je ne sais pas pourquoi je rentre toujours dedans même quand elle n'est pas respectée...
https://jsfiddle.net/Flavors/nuzo8gn2/19/
- A chaque changement de page transmettre le tableau de valeur "marque" à la page qui est rechargé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 var $marques = $('marques');//Déclaration en variable globale pour les garders var liste_marque = []; ////Déclaration en variable globale pour les garders alert("liste marque = "+liste_marque); //Fonction JS pour selectionner les lignes $('tbody').on( 'click', 'tr', function () //Lors d'un clic sur une ligne du tableau mais pas sur l'en-tête { $dataTr = $(this).data('tr');//le data-tr des ligne vaut "ligne_x" $trList = $("tr[data-tr=" + $dataTr + "]"); //On liste tous les TR qui on le même attribut ("ligne_tr") $trList.toggleClass("selected");//On selectionne ou deselctionne Maj_Liste(); }); //Fonction JS pour Mettre à jour la liste des elements selectionnes function Maj_Liste() { alert("Entrée dans Maj_Liste"); $('.selected').each(function(){ var id = $('.col_marque', this).html(); var position = liste_marque.indexOf(id)//On prend la place de id dans le tableau "liste_marque" alert("position : "+position); if(('undefined' != typeof(id)) && (position == -1)); //Si id existe et n'est pas présent dans la liste_marque { alert("Dans le if"); alert("insertion de "+id); liste_marque.push(id);//On insere id dans le tableau alert("liste marque maj = "+liste_marque); } if(position != -1) { alert("on enleve"); liste_marque.splice(position,1);// On supprime id } }); return liste_marque.length ? $marques.text(liste_marque.join(', ')) : $marques.text(''); }
(Pb n°3 : Comment conserver le tableau avec les valeurs de "marque" lors du changement de page? Au début je pensais utiliser un formulaire avec juste un bouton et un input:hidden pour transmettre le tableau via un POST mais je ne pense pas que cela puisse marcher...Et je n'ai pas vraiment d'autre idée à ce sujet.)
Voila Désolé pour ce poste (trop long?). Si quelqu'un à une idée pour amélioré la chose ou une solution, je suis preneurs!
Merci.
Partager