[AJAX] Ma table ne se met pas à jour (PHP et AJAX)
Bonjour tout le monde,
J'ai un bug dans mon site.
J'ai un bouton qui permet de désactiver (interdire la modification) des zones de texte.
Voici le code de ce bouton :
Code:
<input type="submit" name="cloturer" id="cloturer" value="Cloturer ce cours " onclick="Cloturer()";/>
Le onclick me mène ici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function Cloturer()
{
if(confirm('Vous ne pourrez plus modifier vos cotes apres la clôture, voulez-vous continuer ?'))
{
var cours = document.getElementById('select_Nom_mnemonics').options[document.getElementById('select_Nom_mnemonics').selectedIndex].value;
//alert(cours);
var type = document.getElementById('select_Nom_types').options[document.getElementById('select_Nom_types').selectedIndex].value;
//alert(type);
var categorie = document.getElementById('select_Categories').options[document.getElementById('select_Categories').selectedIndex].value;
//alert(categorie);
//Je mets ce message avant que le cours soit clôturé (pas le choix) juste pour prévenir l'utilisateur.
alert('cours clôturé avec succes');
go_cloture(cours,type,categorie);
//document.getElementById('idduchamps').disabled='disabled';
}
} |
je ne fait que passer 3 valeurs (les valeurs sélectionnées de chaque liste déroulante) et j'appelle ensuite une fonction nommée go_cloture() que voici :
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
|
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;
}
//ici, on utlise de l'ajax sans écrire quoi que ce soit dans la page, on ne fait qu'appeler du php sans faire de refresh
function go_cloture(cours,type,categorie)
{
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
//alert('cours cloture avec succes');
}
}
//j'appelle la page Update_Cloture.php pour mettre a jour la table cours (cloture)
xhr.open("POST","../Scripts/Utilisateur/Update_Cloture.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("nomcours="+cours+"&nomtype="+type+"&nomcategorie="+categorie);
} |
J'appelle donc cette page PHP :
Code:
xhr.open("POST","../Scripts/Utilisateur/Update_Cloture.php",true);
qui contient ce code :
Code:
1 2 3 4 5 6 7
| <?php
include('../connexion.php');
//j'ajoute 1 dans le cours pour dire qu'il est modifié et j'ajoute la date du jour de la clôture
$MiseAJour = "UPDATE cours SET Cloture = 1, Cloture_le = now() WHERE MNEMONIC = '".$_POST['nomcours']."' AND TYPE_DE_COURS = '".$_POST['nomtype']."' AND Categorie = '".$_POST['nomcategorie']."' ";
echo $MiseAJour;
$execution=mysql_query($MiseAJour)or die($MiseAJour. " - " . mysql_error());
?> |
Le problème est que avec Firefox, il ne met pas à jour la table à chaque fois ou il le fait 1 fois sur 5.
Si je mets un :
Code:
alert(xhr.readyState);
Il ne rentre même pas dedans.
Internet Explorer lui par contre ouvre l'alerte en disant : C'est bien la première fois que j'ai un problème avec Firefox et que ça fonctionne avec IE.
Sauriez-vous me dire ce qu'il se passe svp ?
Merci d'avance.
beegees