Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/01/2011, 11h40   #1
Membre du Club
 
Homme Philippe
Inscription : octobre 2004
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 45
Localisation : Belgique

Informations forums :
Inscription : octobre 2004
Messages : 274
Points : 57
Points : 57
Envoyer un message via MSN à speedylol
Par défaut checkbox tous cocher messagerie

Bonjour , voilà j'ai un script messagerie ou j'aimerais cocher tous les checkbox pour supprimer les messages.
Quand je clique cocher tous il me coche le premier message les autre ne le sont pas, auriez vous une idée Merci


et voici mon code
Code :
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
 
<?php
include("header.php");
include("security.php");
 
echo'<h1>'._PAGE_MESSA_RECU.'</h1>';
 
 
$messagesParPage=15; //Nous allons afficher 5 messages par page.
 
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM '.PREFIXE.'messagerie'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
 
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);
 
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
 
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}
 
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
 
echo'<div id="tabs">
<ul>
<li><a href="messagerie.php">
<span>'._PAGE_MESSAGERIE_RECU.'&nbsp;&nbsp;<img src="images/sitemenu/email.png" width="12" height="12"></a></<span></li>
<li><a href="mess_envoyes.php">
<span>'._PAGE_MESSAGERIE_ENV.'&nbsp;&nbsp;<img src="images/sitemenu/env.png" width="12" height="12"></a></span></li>
<li><a href="mess_contacts.php">
<span>'._PAGE_MESSAGERIE_CONTACT.'&nbsp;&nbsp;<img src="images/sitemenu/contact.png" width="12" height="12"></a></span></li>
<li><a href="mess_block.php">
<span>'._PAGE_MESSAGERIE_BLOCK.'&nbsp;&nbsp;<img src="images/sitemenu/block.png" width="12" height="12"></a></span></li>
<li><a href="mess_news.php">
<span>'._PAGE_MESSAGERIE_NEWS.'&nbsp;&nbsp;<img src="images/sitemenu/edit.png" width="12" height="12"></a></span></li>
<li><a href="javascript:document.del.submit();">
<span>'._PAGE_MESSAGERIE_SUPPR.'&nbsp;&nbsp;<img src="images/sitemenu/suppr.png" width="12" height="12"></a></span></li>
</ul>
</div>';
 
echo'<table width="100%">
     <tr>
    <td>';
	?>
    <input type="button" value="Tout cocher" onClick="GereChkbox('div_chck','1');">&nbsp;&nbsp;&nbsp;
    <input type="button" value="Tout decocher" onClick="GereChkbox('div_chck','0');">&nbsp;&nbsp;&nbsp;
    <input type="button" value="Inverser la selection" onClick="GereChkbox('div_chck','2');">
    <?php
	echo'</td>
     </tr>
     <tr>
     <td>
     <form method="post"  action="mess_del.php?suppr=ok" onSubmit="post.disabled=true;" name="del"><br /><br />';		
echo'<table width="95%" border="1" bgcolor="#0066FF" align="center" '.$_CONF_AFF_SCRIPT.'>
  <tr>
    <td width="5%" align="center"></td>
    <td width="30%">Envoyer par:</td>
    <td width="25%">Sujet</td>
    <td width="25%">Date</td>
    <td width="5%" align="center">Voir</td>
    <td width="5%" align="center"><a href="javascript:document.del.submit();"><img src="images/sitemenu/suppr.png" width="12" height="12" />
	</td>
	<td width="5%" align="center">
	</td>
  </tr>
</table>';
 
 
// La requête sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT * FROM '.PREFIXE.'messagerie ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
 
while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
{
     //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
 
echo'<table width="95%" align="center">';	
echo'<tr>
    <td width="5%" align="center">';
	    $open = stripslashes($donnees_messages['open']);
		switch ($open){
		case "0":
		echo'<img src="images/ferme.gif" width="14" height="11" />';
		break;
 
		case "1":
		echo'<img src="images/ouvert.gif" width="15" height="12" />';
		break;
       }	
echo'<td width="30%">';
 
        $enrr = stripslashes($donnees_messages['env']);
        $retour_mess=mysql_query('SELECT * FROM '.PREFIXE.'membres WHERE pseudo="'.$enrr.'"');
 
        while($donnees_mess = mysql_fetch_assoc($retour_mess)) // On lit les entrées une à une grâce à une boucle
        {
     	$sexe_m = stripslashes($donnees_mess['sexe']);
		switch ($sexe_m){
		case "femme":
		echo'<img src="images/femi.gif" width="20" height="20" alt="femme" title="femme" />';
		break;
 
		case "homme":
		echo'<img src="images/masc.gif" width="20" height="20" alt"Homme" title="Homme" />';
		break;
	    }
		}
echo''.stripslashes($donnees_messages['env']).'</td>';
 echo'<td width="30%"><a href="mess_voir.php?id_mess='.stripslashes($donnees_messages['id']).'">'.stripslashes($donnees_messages['sujet']).'</td>
    <td width="25%">'.stripslashes($donnees_messages['date']).'</td>
    <td width="5%" align="center"><a href="profil_membre.php?membre='.stripslashes($donnees_messages['env']).'">
	<img src="images/LP.gif" width="20" height="20" alt="Profil"    title="Profil"/></a></td>
    <td width="5%" align="center">';
	?>
    <div id="div_chck">
    <input type="checkbox" name="<?php echo''.stripslashes($donnees_messages['id']).''; ?>" id="checkbox1" value="1"  />
    </div>
    </td>
    </tr>
    <?php
	echo'</table>';
    echo'</form>
	</td>
    </tr>
    <tr>
    <td>
	</td>
    </tr>
    </table>';
 
$id =  stripslashes($donnees_messages['id']);
mysql_query("UPDATE ".PREFIXE."messagerie_env SET  open='$open' WHERE id='$id'");	
 
  //J'ai rajouté des sauts à la ligne pour espacer les messages.   
}
 
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo '<a href="messagerie.php?page='.$i.'">'.$i.'</a> ';
     }
}
echo '</p>';	
 
include("footer.php");
 
?>
speedylol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 15h34   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Citation:
Quand je clique cocher tous il me coche le premier message les autre ne le sont pas, auriez vous une idée Merci
- le code généré en HTML est plus parlant que le code PHP.
- oui mais qu'y a t-il dans la fonction GereChkbox,
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 18h22   #3
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
Citation:
Code :
1
2
3
4
 
    <div id="div_chck">
    <input type="checkbox" name="<?php echo''.stripslashes($donnees_messages['id']).''; ?>" id="checkbox1" value="1"  />
    </div>
Je pense que <div id="div_chck"> devrait regrouper tous les checkbox, à cet effet la boucle devrait être à l'intérieur de ce div. C'est déjà un premier soucis.
En outre id="checkbox1" value="1", devrait être :
Code :
1
2
 
id="checkbox-<?php echo''.stripslashes($donnees_messages['id']).''; ?>" value="<?php echo''.stripslashes($donnees_messages['id']).''; ?>"
C'est pas là le pb, mais id doit être unique dans une page.

Et le code de ta fonction GereChkbox(), montre le ou c'est GereChkbox classique???
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 18h34   #4
Membre du Club
 
Homme Philippe
Inscription : octobre 2004
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 45
Localisation : Belgique

Informations forums :
Inscription : octobre 2004
Messages : 274
Points : 57
Points : 57
Envoyer un message via MSN à speedylol
j'ai réaliser les modifications cela ne fonctionne quand même pas je vois vraiment pas
speedylol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 22h17   #5
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Citation:
Envoyé par NoSmoking
- oui mais qu'y a t-il dans la fonction GereChkbox,
Citation:
Envoyé par okoweb
Et le code de ta fonction GereChkbox(), montre le ou c'est GereChkbox classique???
alors la question est....
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 20h45   #6
Membre du Club
 
Homme Philippe
Inscription : octobre 2004
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 45
Localisation : Belgique

Informations forums :
Inscription : octobre 2004
Messages : 274
Points : 57
Points : 57
Envoyer un message via MSN à speedylol
il y a bien un script derrière

Entre <HEAD> et </HEAD> :

Code :
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
 
<script type="text/javascript">
<!--
// ==========================
// Script réalisé par Eric Marcus - Aout 2006
// ==========================
 
// conteneur = id du bloc (<div>, <p> ...) contenant les checkbox
// a_faire = '0' pour tout décocher
// a_faire = '1' pour tout cocher
// a_faire = '2' pour inverser la sélection
 
function GereChkbox(conteneur, a_faire) {
var blnEtat=null;
var Chckbox = document.getElementById(conteneur).firstChild;
	while (Chckbox!=null) {
		if (Chckbox.nodeName=="INPUT")
			if (Chckbox.getAttribute("type")=="checkbox") {
				blnEtat = (a_faire=='0') ? false : (a_faire=='1') ? true : (document.getElementById(Chckbox.getAttribute("id")).checked) ? false : true;
				document.getElementById(Chckbox.getAttribute("id")).checked=blnEtat;
			}
		Chckbox = Chckbox.nextSibling;
	}
}
//-->
</script>
Entre <BODY> et </BODY> :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<form>
<input type="button" value="Tout cocher" onClick="GereChkbox('div_chck','1');">&nbsp;&nbsp;&nbsp;
<input type="button" value="Tout décocher" onClick="GereChkbox('div_chck','0');">&nbsp;&nbsp;&nbsp;
<input type="button" value="Inverser la sélection" onClick="GereChkbox('div_chck','2');">
<br /><br />
	<div id="div_chck">
	<input type="checkbox" name="checkbox1" id="checkbox1" value="1"><label for="checkbox1">Choix 1</label><br />
	<input type="checkbox" name="checkbox2" id="checkbox2" value="2"><label for="checkbox2">Choix 2</label><br />
	<input type="checkbox" name="checkbox3" id="checkbox3" value="3"><label for="checkbox3">Choix 3</label><br />
	<input type="checkbox" name="checkbox4" id="checkbox4" value="4"><label for="checkbox4">Choix 4</label><br />
	<input type="checkbox" name="checkbox5" id="checkbox5" value="5"><label for="checkbox5">Choix 5</label>
	</div>
</form><noscript><a href="http://www.lesite.com/countus/">compteur live</a></noscript>
speedylol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 22h08   #7
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Citation:
Envoyé par speedylol
il y a bien un script derrière
on le voulait on l'a enfin!

Le script que tu utilises est hors de ton contexte, attendu qu'il s'appuie sur l'utilisation de firstChild et nextSibling sans explorer les noeuds enfants si existent.

Comme tu as mis tes INPUTs dans une TABLE et de surcroit dans une DIV qui elle même est dans une TD (???) cela ne peut fonctionner, structure surprenante.

Il te faut récupérer tous les INPUTs et faire le test si c'est ou non un type checkbox et faire en fonction ce qu'il y a à faire.

Le code modifié avec ce qui a changé
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function GereChkbox(conteneur, a_faire) {
  var blnEtat = null;
  //var Chckbox = document.getElementById(conteneur).firstChild;
  var oParent = document.getElementById(conteneur);
  var Chckbox = oParent.getElementsByTagName('INPUT');
  //while (Chckbox!=null) {
  for (var i = 0, nb = Chckbox.length; i < nb; i++) {
    //if (Chckbox.nodeName=="INPUT")
    oCheck = Chckbox[i];
    //if (Chckbox.getAttribute("type")=="checkbox") {
    if (oCheck.getAttribute("type") == "checkbox") {
      //blnEtat = (a_faire=='0') ? false : (a_faire=='1') ? true : (document.getElementById(Chckbox.getAttribute("id")).checked) ? false : true;
      blnEtat = (a_faire == '0') ? false : (a_faire == '1') ? true : (oCheck.checked) ? false : true;
      //document.getElementById( Chckbox.getAttribute("id")).checked=blnEtat;
      oCheck.checked = blnEtat;
    }
    //Chckbox = Chckbox.nextSibling;
  }
}
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 21h36   #8
Membre du Club
 
Homme Philippe
Inscription : octobre 2004
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 45
Localisation : Belgique

Informations forums :
Inscription : octobre 2004
Messages : 274
Points : 57
Points : 57
Envoyer un message via MSN à speedylol
Citation:
Envoyé par NoSmoking Voir le message
on le voulait on l'a enfin!

Le script que tu utilises est hors de ton contexte, attendu qu'il s'appuie sur l'utilisation de firstChild et nextSibling sans explorer les noeuds enfants si existent.

Comme tu as mis tes INPUTs dans une TABLE et de surcroit dans une DIV qui elle même est dans une TD (???) cela ne peut fonctionner, structure surprenante.

Il te faut récupérer tous les INPUTs et faire le test si c'est ou non un type checkbox et faire en fonction ce qu'il y a à faire.

Le code modifié avec ce qui a changé
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function GereChkbox(conteneur, a_faire) {
  var blnEtat = null;
  //var Chckbox = document.getElementById(conteneur).firstChild;
  var oParent = document.getElementById(conteneur);
  var Chckbox = oParent.getElementsByTagName('INPUT');
  //while (Chckbox!=null) {
  for (var i = 0, nb = Chckbox.length; i < nb; i++) {
    //if (Chckbox.nodeName=="INPUT")
    oCheck = Chckbox[i];
    //if (Chckbox.getAttribute("type")=="checkbox") {
    if (oCheck.getAttribute("type") == "checkbox") {
      //blnEtat = (a_faire=='0') ? false : (a_faire=='1') ? true : (document.getElementById(Chckbox.getAttribute("id")).checked) ? false : true;
      blnEtat = (a_faire == '0') ? false : (a_faire == '1') ? true : (oCheck.checked) ? false : true;
      //document.getElementById( Chckbox.getAttribute("id")).checked=blnEtat;
      oCheck.checked = blnEtat;
    }
    //Chckbox = Chckbox.nextSibling;
  }
}
et la ligne input quelle serait elle stp?
speedylol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 21h37   #9
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Citation:
Envoyé par speedylol
et la ligne input quelle serait elle stp?
la fonction que je t'ai modifié marche avec la structure que tu nous a fourni, et ce indépendamment des names et/ou id des inputs.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 18h46   #10
Membre du Club
 
Homme Philippe
Inscription : octobre 2004
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 45
Localisation : Belgique

Informations forums :
Inscription : octobre 2004
Messages : 274
Points : 57
Points : 57
Envoyer un message via MSN à speedylol
Dans cette ligne je dois modifier quoi au juste sorry

Code :
1
2
3
4
5
    <div id="div_chck">
    <input type="checkbox" name="<?php echo''.stripslashes($donnees_messages['id']).''; ?>" id="checkbox1" value="1"  />
    </div>
    </td>
    </tr>
Merci de ta réponse
speedylol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 19h41   #11
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
Citation:
Envoyé par NoSmoking Voir le message
la fonction que je t'ai modifié marche avec la structure que tu nous a fourni, et ce indépendamment des names et/ou id des inputs.
si cela ne marche pas l'erreur est ailleurs.

Que donne le code HTML, celui généré par PHP et visible quand on fait afficher le source?
Regardes de ce coté là pour vérifier qu'il n'y a pas d'autre erreur.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2011, 08h11   #12
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
http://www.developpez.net/forums/d30...e/#post1911324
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/09/2011, 19h22   #13
Membre du Club
 
Homme Philippe
Inscription : octobre 2004
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 45
Localisation : Belgique

Informations forums :
Inscription : octobre 2004
Messages : 274
Points : 57
Points : 57
Envoyer un message via MSN à speedylol
cela ne coche que une seule ligne de la messagerie pas une idée svp?
speedylol est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h46.


 
 
 
 
Partenaires

Hébergement Web