Bonjour tout le monde,

J'appelle une fonction javascript et je lui passe 4 paramètres :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo '<input type="checkbox" id="cb_'.$i.'" name="cb_'.$i.'" checked value='.$resultat['ID'].' onclick="mise_a_jour_cours(this.id,this.value,'.$_SESSION['matricule_to_use'].', \''.$_SESSION['Filiere_actuelle'].'\')">';
J'arrive dans la fonction javascript, je teste les 4 paramètres avec des alertes, les 4 sont ok.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
function mise_a_jour_cours(id_cb,valeur_cb,matricule,filiere)
{
	alert(filiere);
	//id_cb va etre utilisé ci-dessous pour décocher un cb qui aurait été coché et qui fait dépasser l'ECTS a + de 10
	alert(matricule);
	alert(id_cb);
	alert(valeur_cb);
à partir de la même fonction, je crée un bouton avec innerHTML :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer et clôturer mes choix" onclick="cloture(filiere);"/>';
J'arrive bien dans la fonction mais l'alerte est vide

Sauriez-vous me dire ce que j'ai encore fait qui n'est pas correcte svp ?

Merci d'avance.

beegees

Voici mon code :

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
function getXhr()
{
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
	try {
		xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else { // XMLHttpRequest non supporté par le navigateur 
	alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	xhr = false; 
	} 
	return xhr;
}
 
function mise_a_jour_cours(id_cb,valeur_cb,matricule,filiere)
{
	alert(filiere);
	//id_cb va etre utilisé ci-dessous pour décocher un cb qui aurait été coché et qui fait dépasser l'ECTS a + de 10
	alert(matricule);
	alert(id_cb);
	alert(valeur_cb);
	var compteur = 12;
	var i = 1;
	var total_ECTS = 0;
	//je construis le xhr.send.  Je concatene les valeurs du tableau afin de ne pas devoir envoyer le tableau et chipoter avec explode
	for(i;i<=compteur;i++)
	{
		//si la checkbox est checké, je mets sa valeur dans le tableau
		if(document.getElementById('cb_'+i).checked == 1)
		{
			//alert(i + ' n\'est pas décoché ');	
			//alert("i vaut " + i);
			//je crée une chaine qui contient les numéros de cours a envoyer a PHP (xhr.send d'AJAX) 
			//alert(document.getElementById('nbreECTS_'+i).value);
			//j'ajoute le parseInt car sans cela, il concactene !!!!
			total_ECTS += parseInt(document.getElementById('nbreECTS_'+i).value);
 
			//lorsqu'un étudiant choisit un cours, je vérifie que le total déja engendré + l'ECTS du cours choisit ne sera pas supérieur a 10
		}
	}
	//alert("le nombre de ECTS est de : " + total_ECTS);
 
	//si lorsqu'un visiteur clique sur un CB et que l'ECTS est a > a 10, je décoche le cb dont l'id a été passé a la fonction (le dernier cliqué), le return
	//permet d'arreter le code et donc de ne pas enregistrer dans la bd les cours ni le nombre d'ECTS.
	if(total_ECTS > 10)
	{
		document.getElementById(id_cb).checked = false;
		alert("En choisissant ce cours, le total d'ECTS sera supérieur a 10, opération annulée car seul un maximum de 10 ECTS peut etre choisis");
		return;
	}
	//alert("total_ECTS " + total_ECTS);
	//alert("le to send : "+ tosend);
 
	var xhr = getXhr();
	i=1;
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		//alert(xhr.readyState);
		//alert(xhr.status);
 
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			retour = xhr.responseText;
			//alert(retour);
			//document.getElementById("test").value = retour;
 
			if(total_ECTS < 10)
			   {
				   //j'affiche le nombre d'ECTS
				   document.getElementById('ECTS').innerHTML = '<FONT face="Comic Sans MS" color="#0000DD" size=30>' + total_ECTS + ' ECTS</font>';
				   //ce code agit au changement de l'état de la checkbox cliquée, si l'ects est < a 10 apres le clique, je retire de clôture
				   document.getElementById('btn_cloture').innerHTML = '';
				   //si le nombre total d'ECTS est inférieur a 10, j'active les checkboxes car l'étudiant peut choisir au maximum 10 ECTS.
				   for(i=1;i<=compteur;i++)
					{
						if(document.getElementById('cb_'+i).checked == 0)
						{
							document.getElementById('cb_'+i).disabled = false;
						}
					}
 
			   }
			else
			{
				document.getElementById('ECTS').innerHTML = '<FONT face="Comic Sans MS" color="#0000DD" size=30>' + total_ECTS + ' ECTS</font>';
				//ce code agit au CHANGEMENT de l'état de la checkbox cliquée, si l'ects est > a 10 apres le clique, j'affiche le bouton de clôture				
				//le probleme est ici
//				alert("ici");
				//alert('ici ' + filiere);
				document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer et clôturer mes choix" onclick="cloture(filiere);"/>'; 
 
				//si le nombre total d'ECTS est égal ou supérieur a 10, je désactive les checkboxes car l'étudiant ne peut pas choisir plus de 10 ECTS.
				for(i=1;i<=compteur;i++)
				{
					if(document.getElementById('cb_'+i).checked == 0)
					{
						document.getElementById('cb_'+i).disabled = true;
					}
				}
			}
		}
	}
 
 
	xhr.open("POST","AJAX/Enregistrer_cours.php",true);
	// ne pas oublier ça pour le post
	//indispensable pour le POST	
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("matricule="+matricule+"&valeur_cb="+valeur_cb+"&total_ECTS="+total_ECTS);
 
}
et

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
function getXhr()
{
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
	try {
		xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else { // XMLHttpRequest non supporté par le navigateur 
	alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	xhr = false; 
	} 
	return xhr;
}
 
function cloture(filiere)
{
	//je passe la filiere pour donner une valeur au compteur, soit 12 pour PHAR5S-P ou plus pour PHAR5S-D
	alert(filiere);
	var compteur = 0;
	var i = 1;
	if(filiere == "PHAR5S-P")
	{
		compteur = 12;
	}
	else
	{
		compteur = 17;
	}	
	if(confirm('voulez-vous clôturé vos choix ?'))
	{
		var xhr = getXhr();
		for(i;i<=compteur;i++)
		{
			document.getElementById('cb_'+i).disabled = true;
			//je lui passe la variable de session PHP, cela me permet de récupérer sa valeur dans javascript
		}
		document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer" onclick="window.open(\'PDF/resume_cours.php\')">';
 
		xhr.onreadystatechange = function()
		{
			//alert(xhr.readyState);
			//alert(xhr.status);
 
			if(xhr.readyState == 4 && xhr.status == 200)
			{
				retour = xhr.responseText;
				alert(retour);
				window.open('PDF/resume_cours.php');				
			}
		}
 
 
		// Ici on va voir comment faire du post
		//j'ouvre le fichier Scripts/Comptage.php
		xhr.open("POST","AJAX/cloture.php",true);
		// ne pas oublier ça pour le post
		//indispensable pour le POST	
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xhr.send("");
	}
 
}