menu select qui affiche/cache les lignes d'un tableau

menu select qui affiche/cache les lignes d'un tableau - HTML/CSS - Programmation

Marsh Posté le 24-09-2005 à 13:47:41    

Bonjour,
 
Je suis en train de réaliser un script PHP pour une messagerie interne.
Dans cette messagerie, je souhaiterai faire apparaitre un menu déroulant (type "select" ) avec le nom des expéditeurs ; lorsqu'on clique sur l'expediteur souhaité, tous les autres messages se cachent et il ne reste plus que ceux de l'expediteur demandé.
 
Bien sur, je souhaiterai le faire en JS mais j'ai un peu de mal avec ce langage  :(  
 
Voici le code :
 

Code :
  1. function changeExp(expediteur) {
  2.                 if (expediteur != "all" ) {
  3.                     tabChecks = document.getElementsByName(expediteur);
  4.                     for(i=0;i<tabChecks.length;i++) {
  5.                      tabChecks[i].style.display="table-row";
  6.                     }
  7. }
  8. <select id="choixExp" name="choixExp" onchange="changeExp(this.options[this.selectedIndex].value)">
  9. <tr name="$id_membre" style="display:none">


 
Le problème c'est que je ne peux pas revenir en arrière : lorsque je clique sur un expediteur, ca affiche ses messages mais si je clique sur un autre, ça me laisse ceux d'avant (je sais pas si je suis très clair)
 
Merci de l'aide que vous pourriez m'apporter


---------------
http://www.mon-avis.fr
Reply

Marsh Posté le 24-09-2005 à 13:47:41   

Reply

Marsh Posté le 24-09-2005 à 13:51:04    

Oui on a compris...ben attend que Gatsusat passe par là..
 
Car j'ai une soluce, mais pas trés propre...
Ton code est un peu sale,  
Tu vas te faire engueuler...
 
Enfin t'en fait pas tu(on) vas trouvé une solution simple,belle et clair....

Reply

Marsh Posté le 24-09-2005 à 13:52:24    

lol je suis vraiment désolé   :D  
 
je suis pas très bon en JS donc j'ai du essayer plein de possibilités et au final je vous copie/colle une version dégueulasse :D
 
merci


---------------
http://www.mon-avis.fr
Reply

Marsh Posté le 26-09-2005 à 14:52:20    

Je lui ai envoyé un MP...
 
D'ici là si jamais quelqu'un peut m'aider... là je patauge :s


---------------
http://www.mon-avis.fr
Reply

Marsh Posté le 26-09-2005 à 15:00:20    

erf hey, je t'aiderai ce soir, limite si jvais po tout faire, en espérant que tu piges a ce que je ferai, en attendant, copie/colle le code HTML telle qu'il est actuellement dans ta page

Reply

Marsh Posté le 26-09-2005 à 15:03:40    

Euh ouais... Là je suis en train d'essayer plein de possiilités alors ça doit surement etre encore pire :-D
 
Mais je veux bien :
 

Code :
  1. <script type="text/javascript">
  2.         function changeExp(exp) {
  3.                 if (exp.form.elements["choixExp"].options[exp.form.elements["choixExp"].selectedIndex].value != "all" ) {
  4.                     tabTag = document.getElementsByTagName("tr" );
  5.                     for(i=0;i<tabTag.length;i++) {
  6.                       if ((tabTag[i].title == "exped" ) && (tabTag[i].name == exp.form.elements["choixExp"].options[exp.form.elements["choixExp"].selectedIndex].value)) {
  7.                        tabTag[i].style.display="none";
  8.                       }
  9.                     }
  10.                 } else {
  11.                 }
  12.         }
  13.         </script>


 

Code :
  1. <tr name="'.$id_membre.'"'.(($lu=='n') ? ' class="impair"' : '').' title="exped" style="display:table-row">


 
Voilà, bon bah merci beaucoup à toi alors :-)


---------------
http://www.mon-avis.fr
Reply

Marsh Posté le 27-09-2005 à 06:06:49    

toi po avoir pigé que je voulais le HTML généré, mais c'est pas grave petit newbie, jvais te faire le truc :  
 
 
Tout d'abord tu me vire ton putain d'attribut name et tu me fous un id="", et le style="display:table-row", c'est débile, puis TR ca veux déjà dire TableRow
 
donc on se retrouve avec un TR De ce genre  
<tr id="Membre1" class="Impair">
 
et puis ensuite tu fais un script qui s'occupe de cacher tous les champs dont l'id ne correspond pas à celui sélectionné, et tu force l'affichage du membre sélectionné.
 
Tiens un petit script fait en 5 minutes

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title></title>
  5.    <script>
  6.     function ShowHideMembers(Select, MembersTableId) {
  7.       //On récupère le tableau
  8.       var Membres = document.getElementById(MembersTableId);
  9.       //On récupère le membre séléctionné
  10.       var SelectedMember = Select.value;
  11.      
  12.       //On récupère toutes les lignes du tableau
  13.       var MesLignes = Membres.getElementsByTagName("TR" );
  14.       //On fouille toutes les lignes tu tableau, et on caches toutes celles qui ne correspondent pas
  15.       //au membre, et dans le cas contraire, on affiche celle qui correspond au membre sélectionné
  16.       //On part de 1 si on a une entête dans ce tableau, sinon on part de zéro
  17.      
  18.       for (var i=0; i<=MesLignes.length-1; i++) {
  19.         if (MesLignes[i].id==SelectedMember)
  20.            MesLignes[i].style.display="block";
  21.         else MesLignes[i].style.display="none";
  22.       } //end for
  23.     }//end function
  24.  
  25.  
  26.    </script>
  27. </head>
  28. <body>
  29. <form>
  30. <select name="MembersChoice" id="MembersChoice" onchange="ShowHideMembers(this,'Membres')">
  31.    <option value="membre1">Membre 1</option>
  32.    <option value="membre2">Membre 2</option>
  33.    <option value="membre3">Membre 3</option>
  34. </select>
  35. </form>
  36. <table id="Membres">
  37. <tr id="membre1">
  38.    <td>m1 col1</td><td>col2</td><td>col3</td>
  39. </tr>
  40. <tr id="membre2">
  41.    <td>m2 col1</td><td>col2</td><td>col3</td>
  42. </tr>
  43. <tr id="membre3">
  44.    <td>m3 col1</td><td>col2</td><td>col3</td>
  45. </tr>
  46. </table>
  47. </body>
  48. </html>


Message édité par gatsusat le 27-09-2005 à 06:16:02
Reply

Marsh Posté le 27-09-2005 à 09:47:23    

Si tu as la possibilité de le faire en PHP (ou cote serveur) privilegie cette voie : juste une condition dans la clause where de ta requete SQL a rajouter pour n'afficher que les messages que tu souhaites.

Reply

Marsh Posté le 27-09-2005 à 16:11:46    

Bon alors tout d'abord merci, puisque c'est ce qu'on dit lorsque quelqu'un nous aide.
 
Ensuite, c'est pas parce que tu crois t'y connaitre que tu es obligé de te la raconter... les "petit newbie" et "putain d'attribut name" étaient surement en trop puisque de toute évidence tu n'as meme pas lu correctement mon topic initial :  
L'ATTRIBUT "ID" NE PEUT PAS AVOIR LA MEME VALEUR PUISQU'IL S'AGIT D'UN IDENTIFIANT DE MEMBRE QUI ENVOIE UN MESSAGE...
il y'a fort à parier pour qu'un membre envoie plusieurs messages et par conséquent, je me retrouve avec un attribut "ID" qui ne sera plus valide XHTML (je développe comme ça, et pas en transitionnel comme ton doctype l'indique dans ton code)
 
De plus, le display:table-row est nécessaire sous Firefox car il affiche les display:block sous forme... de blocs !! Ouais c'est étonnant mais "block" ça veut dire bloc... Le plus intéressant pour une compatibilité maximale étant de vérifier quel navigateur est utilisé...
 
Enfin bref, je te remercie quand même mais je te le répète, c'est pas parce que tu crois t'y connaître et tomber face à quelqu'un qui ne connait pas le JS que t'es obligé de péter plus haut que ton cul en plaçant des "petit newbie" totalement futiles...


---------------
http://www.mon-avis.fr
Reply

Marsh Posté le 27-09-2005 à 16:12:29    

afbilou > oui je peux le faire en PHP, mais le truc c'est que je voudrais eviter le rechargement des pages... merci ;-)


---------------
http://www.mon-avis.fr
Reply

Marsh Posté le 27-09-2005 à 16:12:29   

Reply

Marsh Posté le 28-09-2005 à 21:05:47    

oula bah faut pas s'enerver comme ;).
 
bon moi je voulais juste poster pour te demande, snakeboudoir, de bien vouloir poster ton code qui fonctionne quand tu auras la solution finale, ca serait sympa ca.

Reply

Marsh Posté le 28-09-2005 à 21:22:02    

ben dans ce cas tu te casse pas la tete tu rajoute un attribut sur chacun de tes TR
 
<tr membreId="membre1">
 
</tr>
 
et tu remplaces le MesLignes[i].id==SelectedMember
par un MesLignes[i].getAttribute("membreId" )==SelectedMember
 
et puis pour la validation, on s'en branle à ce nivo là, puisque sémantiquement parlant, ton code est correcte, tu ajoute juste un attribut non W3C, mais masklinn et FlorentG te diront comme moi, tu peux le faire, c'est du xHTML après tout comme du XML avec des attributs.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed