IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Initialiser une variable de session PHP dans un script JS


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Bon apparemment, cela n'est pas possible puisque javascript tourne sur le navigateur et les variables de session sont côté serveur.

    Je me dirige donc vers un rafraîchissement de ma page en lui passant la donnée en GET.

    J'ai fait ceci mais cela ne fonctionne pas encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <script>
    function servselect(id) {
        document.getElementById("hmilieu").innerHTML = "YOU CLICKED ME!" + id;
        document.location.href="params.php?idserv=\"idserv\"&valeurid=" + is +"\"; 
    }
    </script>
    <?php 
            try
            {
                    $bdd = new PDO('mysql:host=localhost;dbname=;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<?php echo $_GET['idserv']?></h2>
    					<select name="selectservices" size="5" id="textareaservices">
    				<?php

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Merci Headmax pour votre réponse,

    Voulez-vous dire que je dois donc appeler un script en ajax à partir du onclick ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Une fois la page chargée, on ne peut interagir avec php que via ajax... Sinon il faut recharger la page.

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Merci Headmax pour votre réponse,

    Voulez-vous dire que je dois donc appeler un script en ajax à partir du onclick ?
    Oui peut importe l'événement selon tes besoins onclick onload on...
    Et suite a l'événement tu procède a ta requête ajax et il te retournera l'existance ou pas avec un retour callback en paramètre de la function success data contiendra ton tableau json qu'il suffira de checker directement dans ton js.

    Plus simple avec jquery car cross browser, si tu n'est pas un champion du js comme moi ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    //token juste un random php pour est sur qu'il s'agit d'un post via notre formulaire a verifier dans ton ajax.php la ou tu verifié la session
     
    $("#idDuBouton").click(function(){
      $.post( "ajax.php", { token: "s31df3sd1f2sd1f3112se5" }) 
       .done(function( data ) {
            var json = JSON.stringify(data) ; // pas sur qu'on est besion de JSON.stringify sinon enlève
            if(json.json_session === true){
               console.log("session existe");
           }else{
               console.log("session off");
               document.location = "ou tu veux";
          }
       });
    });

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Hello !

    Merci à tous pour vos conseils.

    Perso, j'aimerai éviter l'ajax car je n'ai jamais mis le nez dedans et j'ai un peu peur de m'enliser ... mais si je vois qu'il n'y a vraiment pas moyen autrement alors je retrousserai mes manches (mince, elles sont déjà retroussées, il faudra les arracher alors !?!)


    Une fois la page chargée, on ne peut interagir avec php que via ajax... Sinon il faut recharger la page.
    Donc j'ai tenter avec le rechargement de ma page !
    J'arrive a recharger en passant le bon paramètre qui convient.
    J'ai juste maintenant un problème pour récupérer ce paramètre dans la requête !!!
    je sens que je suis prêt du but mais il me manque une petite syntaxe à mon avis.

    voici mon code actuel, je suis juste bloqué dans la dernière ligne de ma requête qui est la ligne 57 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
        //document.location.reload(true);
        window.location.href="params.php?valeurid=" + id; 
    }
    </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'.$_GET['valeurid'].';');
                                                    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>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Transmettre une variable JS dans une variable de session PHP
    Par tistri dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/08/2008, 08h18
  2. récupérer une variable de session php dans flash
    Par sanatou dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 14/06/2008, 00h20
  3. Réponses: 4
    Dernier message: 19/04/2006, 16h03
  4. Réponses: 6
    Dernier message: 04/04/2006, 13h12
  5. Réponses: 4
    Dernier message: 05/10/2005, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo