j'avais pas testé, il restait plein d'erreurs, des copier coller de bout de code à moi sans changer des noms etc..
la page ajax.js:
function shownote(id_liste,id_ecrire){
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var urla="note.php";
//urla=urla+"?id_stg="+stg;
//urla=urla+"&sid="+Math.random();
//la c'etait pas correct il faut passer l'objet xmlhttp à la fonction qui va traiter la réponse sinon comment veut tu qu'elle sache quelle requette traiter en réponse
xmlhttp.onreadystatechange=function() {stateChanged(xmlhttp,id_ecrire)}; //ERREUR LA
//moi je prefere la methode POST
xmlhttp.open('POST', urla, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
//on atteint l'objet a lire= le stagiaire selectionne dans la liste
obj=document.getElementById(id_liste);
data="id_stg="+obj.value;
xmlhttp.send(data); //en post on envoie les données ainsi
}
function stateChanged(xmlhttp,id_ecrire){
if (xmlhttp.readyState==4) {
if (xmlhttp.status == 200) { //il te manquait cette ligne
//recup de la reponse du script php appele par ajax
var note=xmlhttp.responseText;
//on ecrit la note dans l'input note (qui est en readonly)
document.getElementById(id_ecrire).value=note;
}
}
}
function GetXmlHttpObject(){
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
la page note.php:
<?php
include('connexion.php');
$id_stg = $_POST['id_stg']; //$_POST car methode POST Ajax
$requette_stg = mysql_query("SELECT * FROM stagiaire WHERE id_stg = '".$id_stg."'");
$resultat_stg = mysql_fetch_array ($select_stg_sql);
$note=$resultat_stg['note'];
//on envoie la réponse à la requette Ajax tout simplement par un echo
echo $note;
?>
la page :
<script language="javascript" src="ajax.js"></script>
<script language="javascript">
function calculresultat(){
var resultat=document.getElementById('coeff').value * document.getElementById('note').value; //erreur la
document.getElementById('nt').value=resultat;
}
function efface_old_resultats(id_note,id_res){
//a chaque changement dans la liste on efface le résultat precedent, car si on ne modifie pas le champ coef ça garde tout
document.getElementById(id_note).value='';
document.getElementById(id_res).value='';
}
</script>
<?php
if (isset($_POST['action']) && $_POST['action'] == 'notejout') {
$sql = 'INSERT INTO `*****` values ("id_stg","note","coeff","resultat" )';
mysql_query($sql);
}
else {
echo '<form method="post" enctype="multipart/form-data" >';
echo '<table >';
echo '<td class="intitula"> Stagiaire: </td><td ><select name="id_stg" id="id_stg" onChange="javascript:shownote(\'id_stg\',\'note\'); efface_old_resultats(\'note\',\'nt\');">';
echo '<option value="" selected="selected"> Selectionnez un Stagiaire </option>';
$selected_stagiaire_sql = mysql_query("SELECT * FROM stagiaire ");
while ($selected_stg = mysql_fetch_array($selected_stagiaire_sql)) {
echo '<option value="'.$selected_stg['id_stg'].'"> '.$selected_stg['nom_stg']." ".$selected_stg['pren_stg'].' </option>';}
echo'</select>';
echo'</td>';
echo '</tr>';
echo '<tr>';
//j'ai mis l'appel du calcul sur la modif du coef
echo '<td class="intitula"> coefficient: </td><td><input class="infose" type="texte" id="coeff" name="coeff" onKeyUp="calculresultat();"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td class="intitula"> Resultat: </td><td>
<input type="texte" id="nt" name="resultat" > </td>';
echo '</tr>';
echo '<tr >';
//j'ai modifie et remplace par un input readonly (donc non modifiable !)
echo '<td style="text-align: right;">Note:<input class="infose" type="texte" id="note" name="note" readonly /> </td>';
echo '<td><input type="submit" name="button" value="Ajouter"/></td>';
echo '</tr>';
echo '</table>';
echo '</form>';
}
?>
Mais l'inconvénient de l a méthode de calcul du résultat que je t'ai mis c'est que on est obligé de changer le coef à chaque fois.
il faudrait soit mettre l'appel de la fct calcul sur le onFocus de l'input resultat comme tu avait fait soit rajouter un bouton calculer