Les sessions et l'ajax
Résolu/Fermé
Saramery
-
11 févr. 2010 à 10:56
saramery Messages postés 4 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 12 février 2010 - 12 févr. 2010 à 17:52
saramery Messages postés 4 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 12 février 2010 - 12 févr. 2010 à 17:52
A voir également:
- Les sessions et l'ajax
- Veuillez ouvrir une session avec les privilèges du gestionnaire - Forum Windows 10
- Les ouvertures de sessions distantes sont actuellement désactivées ✓ - Forum Réseau
- Erreur ajax ✓ - Forum Webmastering
- Ouvrir deux sessions windows en même temps - Forum Windows
- Votre session a expiré. merci de revenir au site marchand et réessayer (99) ✓ - Forum finances
9 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 févr. 2010 à 14:02
11 févr. 2010 à 14:02
Je ne vois pas le rapport avec les sessions ?
mais si tu récupéres la note du stagiaire sélectionné dans la liste par AJAX
je suppose a la réponse de ajax, que tu ecris la réponse dans l'input résultat par
document.nom_formulaire.nom_input_resultat.value=resultat;
il suffit que tu mettes juste avant:
var coef=document.nom_formulaire.nom_input_coef.value;
resultat=note*coef; //si la reponse de ajax est note
mais si tu récupéres la note du stagiaire sélectionné dans la liste par AJAX
je suppose a la réponse de ajax, que tu ecris la réponse dans l'input résultat par
document.nom_formulaire.nom_input_resultat.value=resultat;
il suffit que tu mettes juste avant:
var coef=document.nom_formulaire.nom_input_coef.value;
resultat=note*coef; //si la reponse de ajax est note
saramery
Messages postés
4
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
12 février 2010
11 févr. 2010 à 15:34
11 févr. 2010 à 15:34
Bonjour,
La note sélectionnée est celle du premier stagiaire sélectionné ,pour récupérer d'un autre stagiaire je dois actualiser la page. et si vous voulez je met mon code pour être plus clair
La note sélectionnée est celle du premier stagiaire sélectionné ,pour récupérer d'un autre stagiaire je dois actualiser la page. et si vous voulez je met mon code pour être plus clair
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 févr. 2010 à 16:00
11 févr. 2010 à 16:00
pour récupérer d'un autre stagiaire je dois actualiser la page
donc ce n'est pas de l'ajax que tu fais mais tout simplement du php
donnes ta page on verra
donc ce n'est pas de l'ajax que tu fais mais tout simplement du php
donnes ta page on verra
saramery
Messages postés
4
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
12 février 2010
11 févr. 2010 à 16:17
11 févr. 2010 à 16:17
Bonjour,
voici mon code :
page : note.php
Code :
session_start();
include('connexion.php');
$a = $_GET['a'];
$select_stg_sql = mysql_query("select * from stagiaire where id_stg = '".$a."'");
$select_stg = mysql_fetch_array ($select_stg_sql);
$_SESSION['note'] = $select_stg['note'];
Page : ajax.js
Code :
function shownote(stg)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var urla="note.php";
urla=urla+"?a="+stg;
urla=urla+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",urla,true);
xmlhttp.send(null);
}
function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById('note').innerHTML=xmlhttp.responseText;
}
}
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;
}
et la page php qui inclue la page ajax.js:
Code :
<script language="javascript">
function calculresultat()
{
document.getElementById('nt').value = parseFloat(document.getElementById('coeff').value * echo $_SESSION['note'] ; )
}
</script>
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"
onChange="javascript:shownote(this.value)">';
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>';
echo '<td class="intitula"> coefficient: </td><td><input class="infose" type="texte" id="coeff" name="coeff" > </td>';
echo '</tr>';
echo '<tr>';
echo '<td class="intitula"> resultat: </td><td>
<input type="texte" id="nt" name="resultat" onFocus="calculresultat();" > </td>';
echo '</tr>';
echo '<tr >';
echo '<td style="text-align: right;"><div id="note" ></div> </td>';
echo '<td><input type="submit" name="button" value="Ajouter"/></td>';
echo '</tr>';
echo '</table>';
echo '</form>';
voici mon code :
page : note.php
Code :
session_start();
include('connexion.php');
$a = $_GET['a'];
$select_stg_sql = mysql_query("select * from stagiaire where id_stg = '".$a."'");
$select_stg = mysql_fetch_array ($select_stg_sql);
$_SESSION['note'] = $select_stg['note'];
Page : ajax.js
Code :
function shownote(stg)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var urla="note.php";
urla=urla+"?a="+stg;
urla=urla+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",urla,true);
xmlhttp.send(null);
}
function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById('note').innerHTML=xmlhttp.responseText;
}
}
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;
}
et la page php qui inclue la page ajax.js:
Code :
<script language="javascript">
function calculresultat()
{
document.getElementById('nt').value = parseFloat(document.getElementById('coeff').value * echo $_SESSION['note'] ; )
}
</script>
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"
onChange="javascript:shownote(this.value)">';
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>';
echo '<td class="intitula"> coefficient: </td><td><input class="infose" type="texte" id="coeff" name="coeff" > </td>';
echo '</tr>';
echo '<tr>';
echo '<td class="intitula"> resultat: </td><td>
<input type="texte" id="nt" name="resultat" onFocus="calculresultat();" > </td>';
echo '</tr>';
echo '<tr >';
echo '<td style="text-align: right;"><div id="note" ></div> </td>';
echo '<td><input type="submit" name="button" value="Ajouter"/></td>';
echo '</tr>';
echo '</table>';
echo '</form>';
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 févr. 2010 à 17:19
11 févr. 2010 à 17:19
J'ai fait pas mal de modifs:
<?php // session_start(); inutile de passer par les sessions 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; //$_SESSION['note'] = $select_stg['note']; ?>
et la page php qui inclue la page ajax.js: Code : <script language="javascript"> function calculresultat(){ // echo c'est du php $_SESSION ne peut être utilisé qu'en php, (variables Serveur ) //document.getElementById('nt').value = parseFloat(document.getElementById('coeff').value * echo $_SESSION['note'] ; ) var resultat=parseFloat(document.getElementById('coeff').value * document.getElementById('note').value; document.getElementById('nt').value=resultat; } </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" onChange="javascript:shownote(this.value)">'; 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>'; ?>
//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); //moi je prefere la methode POST http_request.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'.... http_request.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_stag="+obj.value; http_request.send(data); //en post on envoie les données ainsi } function stateChanged(xmlhttp,id_ecrire){ if (xmlhttp.readyState==4) { if (http_request.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; }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 févr. 2010 à 17:21
11 févr. 2010 à 17:21
houps j'ai fais une erreur à cette ligne:
remplaces la par:
remplaces la par:
echo '<td class="intitula"> Stagiaire: </td><td ><select name="id_stg" onChange="javascript:shownote(this.value,\'note\')">';
saramery
Messages postés
4
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
12 février 2010
11 févr. 2010 à 18:00
11 févr. 2010 à 18:00
BOnjour Alain,
Merci beaucoup pour l'effort et le temps que vous avez passé à m'aider.
je vais tester votre code et j'espère mettre mon sujet en résolu ,j'ai quelques erreurs je sais pas exactement la source.
Merci encore une fois
Merci beaucoup pour l'effort et le temps que vous avez passé à m'aider.
je vais tester votre code et j'espère mettre mon sujet en résolu ,j'ai quelques erreurs je sais pas exactement la source.
Merci encore une fois
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 févr. 2010 à 19:06
11 févr. 2010 à 19:06
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:
la page note.php:
la page :
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
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
saramery
Messages postés
4
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
12 février 2010
12 févr. 2010 à 17:52
12 févr. 2010 à 17:52
Bonjour,
tout d'abord ,Merci Beaucoup Alain_42 et j'ai trouvé la solution
j'ai fait un petit changement :
dans le fichier ajax.js j'ai modifié la fonction stateChanged() comme suit :
function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById('nt').value = parseFloat(document.getElementById('coeff').value) * xmlhttp.responseText ;
}
}
tout d'abord ,Merci Beaucoup Alain_42 et j'ai trouvé la solution
j'ai fait un petit changement :
dans le fichier ajax.js j'ai modifié la fonction stateChanged() comme suit :
function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById('nt').value = parseFloat(document.getElementById('coeff').value) * xmlhttp.responseText ;
}
}