1 pièce(s) jointe(s)
[AJAX] Utilisation données PHP et AJAX
Bonjour, je suis face à un problème d'utilisation et d'affichage de données de base de données...
Je cherche à afficher les informations recueillis dans les balises textareas nommés champ 1, 2, 3 et 4 sur la photo ( les infos sont juste en dessous du bouton import session .. , les infos sont dans une balise div ( fonction ajax))
Pièce jointe 117269
Formulaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <form id="form_ajout_session" action="traitement/traitement_session.php" method="POST" onsubmit="return valider()">
<fieldset id="leftpop"><legend>Début de formation</legend>
<input type="hidden" name="stagiaire" value="<?php echo $id_stagiaire ?>" /></label><br>
<label class="libelle">Stagiaire :<input type="text" value="<?php echo $prenom . " " . $nom; ?>" disabled /></label><br>
<label id="choix_langue">Langue :</label>
<select name="langue_list" id="langue_select">
<?php include("chargement/chargement_langue.php"); ?>
</select><br /><br />
<input type="button" id="import_sess_prec" value="Importer infos session précédente" onclick="import_session(<?php echo $id_stagiaire ?>);"/>
<div id="list_import_session"></div>
<label class="libelle">Auto Evaluation :<textarea rows="5" cols="50" name="auto_evaluation" id="auto_evaluation"></textarea></label><br>
<label class="libelle">Utilisation des langues :<textarea rows="5" cols="50" name="utilisation_langue" id="utilisation_langue"></textarea></label><br>
<label class="libelle">Objectifs :<textarea rows="5" cols="50" name="objectif" id="objectif"></textarea></label><br>
<label class="libelle">Disponibilités :<textarea rows="5" cols="50" name="disponibilite" id="disponibilite"></textarea></label><br> |
Methode onclick appelle fonction AJAX :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function import_session(id_stagiaire){
var data = 'affiche_sessions='+true+'&id='+id_stagiaire;
var XMLhttp=new XMLHttpRequest();
XMLhttp.open("POST","chargement/chargement_session.php",false);
XMLhttp.onreadystatechange=function()
{
if (XMLhttp.readyState==4 && XMLhttp.status==200)
{
document.getElementById("list_import_session").innerHTML=XMLhttp.responseText;
}
}
XMLhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
XMLhttp.send(data);
} |
Cette méthode appelle une liste déroulante des precedentes sessions :
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
| <?php
try {
if(isset($_POST['affiche_sessions']) && isset($_POST['id']) && !empty($_POST['id']))
{
$id_stagiaire=$_POST['id'];
}
// Connect and create the PDO object
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
// Define and prepare an INSERT statement
$sql="SELECT s.sess_id, l.lg_designation, s.sess_date_demarrage, s.sess_date_fin, s.sess_gescof FROM sess s, langue l WHERE s.sess_stg = '".$id_stagiaire."' AND s.sess_langue=l.lg_id";
?>
<label id="choix_session">Choissisez la session à importer :</label>
<select name="session_list" id="session_select" onchange="import_sess(this.value)">
<option value="0">Langue || Date démarrage || Date fin || N° gescof</option>
<?php
$result = $conn->query($sql);
while($sess = $result->fetch(PDO::FETCH_ASSOC)) { ?>
<option value="<?php echo $sess['sess_id'] ?>"><?php echo $sess['lg_designation']." ".$sess['sess_date_demarrage']." ".$sess['sess_date_fin']." ".$sess['sess_gescof'] ; ?></option>
<?php } ?>
</select><br /><br />
<?php
$conn = null; // Disconnect
} catch(PDOException $e) {
echo $e->getMessage();
} ?> |
Puis au onchange de cette liste, une autre fonction AJAX est appelé afin de selectionne les infos de la base de données afficher dans l'image jointe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function import_sess(str)
{
var data = 'traitement_sess='+true+'&id_sess='+str;
var XMLhttp = new XMLHttpRequest();
XMLhttp.open("POST","traitement/traitement_import.php",false);
XMLhttp.onreadystatechange=function(){
if (XMLhttp.readyState==4 && XMLhttp.status==200){
document.getElementById("list_import_session").innerHTML=XMLhttp.responseText;
}
}
XMLhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
XMLhttp.send(data);
} |
Traitement_import :
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
| try {
if(isset($_POST['traitement_sess']) && isset($_POST['id_sess']) && !empty($_POST['id_sess']))
{
$id_sess=$_POST['id_sess'];
}
// Connect and create the PDO object
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
// Define and prepare an INSERT statement
$sql="SELECT sess_auto_eval, sess_utilisation_langue, sess_objectif, sess_dispo FROM sess WHERE sess_id = '".$id_sess."'";
$result = $conn->query($sql);
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
$auto_eval=$row['sess_auto_eval'];
$utilisation_langue=$row['sess_utilisation_langue'];
$objectif=$row['sess_objectif'];
$dispo=$row['sess_dispo'];
}
echo 'champ 1 :'.$auto_eval. '</br> champ 2 :'.$utilisation_langue.'</br> champ 3 :'.$objectif.'</br> champ 4 :'.$dispo;
$conn = null; // Disconnect
} catch(PDOException $e) {
echo $e->getMessage();
}
?> |
J'aimerais pouvoir afficher les différents champ dans les textareas, cependant je n'ai aucune idée d'atteindre mon objectif, faut-il utiliser les fonctions AJAX et les modifier, recréer une nouvelle fonction ?
J'espere que vous avez compris mon petit problème et que vous pourrez m'aider :).
Cordialement,
Florian.