Initialiser une variable de session PHP dans un script JS
Bonjour,
Je désire, dans un script en javascript, initialiser une variable de session avec un attribut qui a été passé à la fonction java script.
Pour l'instant, j'ai fait ceci :
Code:
1 2 3 4 5 6 7
| <script>
function servselect(id) {
document.getElementById("hmilieu").innerHTML = "YOU CLICKED ME!" + id;
<?php $_SESSION['ideSelectServ'] = id?>;
location.reload();
}
</script> |
mais cela ne fonctionne pas.
Pour info, document.getElementById("hmilieu").innerHTML = "YOU CLICKED ME!" + id; me sert uniquement pour avoir un résultat graphique qui me sert à débugger.
Si je commente leslignes suivantes ma fonction marche bien donc ces deux lignes contiennent des erreurs qui m'empêchent d'avancer:
Code:
1 2
| <?php $_SESSION['ideSelectServ'] = id?>;
location.reload(); |
Si quelqu'un a un conseil pour moi, je vous en remercie !
mon but étant de générer, lorsque je clique sur une ligne du select contenu dans <div id="cadreservices">, les <option> du <select> positionné dans le <div id="cadrepersonnes">.
voici mon code :
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 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
| <form method="post" action="envoiforms/services.php" id="fen1">
<script>
function servselect(id) {
document.getElementById("hmilieu").innerHTML = "YOU CLICKED ME!" + id;
/* <?php $_SESSION['ideSelectServ'] = id?>;
location.reload();*/
}
</script>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=bdd;charset=utf8', 'root', 'rrrr');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
$reponse1 = $bdd->query('SELECT servMair_id, servMair_nom FROM services_mairie');
?>
<div class="divparamBDD" id="divhaut">
<div class="spancolor" id="hgauche">
<div id="cadreservices">
<h2>Services mairie</h2>
<select name="selectservices" size="5" id="textareaservices">
<?php
while($donnees1 = $reponse1->fetch())
{
echo'<option value="'.$donnees1['servMair_id'].'" onclick="servselect(this.value)">'.htmlspecialchars($donnees1['servMair_nom'])."</option>\r\n";
}
echo'</select>';
$reponse1->closeCursor();
?>
</div>
</div>
<div class="spancolor" id="hmilieu">
hmilieu
</div>
<div class="spancolor" id="hdroite">
hdroite
</div>
</div>
<div class="divparamBDD" id="divbas">
<div class="spancolor" id="bgauche">
<div id="cadrepersonnes">
<?php
echo '<h2>Personnel attaché au service</h2>';
echo'<select size="5" id="textareapersonnes">';
if (isset ($_SESSION['ideSelectServ']))
{
$reponse2 = $bdd->query('SELECT pers_nom
FROM personnes p, etre_employe ee, employe e, oeuvrer o, services_mairie sm
WHERE ee.PERSONNES_pers_id = p.pers_id
AND ee.EMPLOYE_emp_id = e.emp_id
AND e.emp_id = o.EMPLOYE_emp_id
AND o.SERVICES_MAIRIE_servMair_id = sm.servMair_id
AND sm.servMair_id LIKE "'.$_SESSION['ideSelectServ'].'";');
while($donnees2 = $reponse2->fetch())
{
echo'<option value="'.$donnees2['pers_id'].'">'.htmlspecialchars($donnees2['pers_nom'])."</option>\r\n";
}
$reponse2->closeCursor();
}
echo'</select>';
?>
</div>
</div>
<div class="spancolor" id="bmilieu">
bmilieu
</div>
<div class="spancolor" id="bdroite">
bdroite
</div>
</div>
</div>
</form> |
Pas id de session dans JS pas bien ... :(
1 - Il faut checker la session via un script PHP
2 - vérifier selon tes besoins avec js via ajax l’existence ou pas de la session callback json (true ou false) pas d'id ...
page ajax.php (check la session existe ou pas)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<?php
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
$return = "";
$check_session = array();
try{
if(isset($_SESSION['ideSelectServ'])){
$return = $check_session['json_session'] = 1;
}else{
$return = $check_session['json_session'] = 0;
}
}catch(Exception $e){
$return = $e->getMessage();
}
echo json_encode($return);
?> |
Sinon il te reste plus qu'a catcher les données retours json directement dans ton script js sans mettre le moindre code mélangé js PHP breurk