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);
} |
Partager