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 :

Le passage de ma variable de session (PHP) ne fonctionne pas


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Le passage de ma variable de session (PHP) ne fonctionne pas
    Bonjour tout le monde,

    J'ai depuis hier soir et je cherche depuis hier soir comment résoudre ce problème :

    syntax error
    [Break on this error] document.getElementById('btn_cloture...re_actuelle']; ?>')" class="navText">';\n
    sur ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    				document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer et clôturer mes choix" onclick="cloture('<?php echo $_SESSION['Filiere_actuelle']; ?>')" class="navText">';
    J'essaie donc de passer la valeur d'une variable de session à une fonction javascript.

    Voici le code de la fonction cloture() :

    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
    function cloture(filiere)
    {
    	//je passe la filiere pour donner une valeur au compteur, soit 12 pour PHAR5S-P ou plus pour PHAR5S-D
    	alert(filiere);
    	var compteur = 0;
    	var i = 1;
    	if(filiere == "PHAR5S-P")
    	{
    		compteur = 12;
    	}
    	else
    	{
    		compteur = 17;
    	}	
    	if(confirm('voulez-vous clôturé vos choix ?'))
    	{
    		var xhr = getXhr();
    		for(i;i<=compteur;i++)
    		{
    			document.getElementById('cb_'+i).disabled = true;
    			//je lui passe la variable de session PHP, cela me permet de récupérer sa valeur dans javascript
    		}
    		//document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer" onclick="window.open(\'PDF/resume_cours.php\')" class="navText">';
     
    		xhr.onreadystatechange = function()
    		{
    			//alert(xhr.readyState);
    			//alert(xhr.status);
     
    			if(xhr.readyState == 4 && xhr.status == 200)
    			{
    				retour = xhr.responseText;
    				alert(retour);
    				window.open('PDF/resume_cours.php');				
    			}
    		}
     
     
    		// Ici on va voir comment faire du post
    		//j'ouvre le fichier Scripts/Comptage.php
    		xhr.open("POST","AJAX/cloture.php",true);
    		// ne pas oublier ça pour le post
    		//indispensable pour le POST	
    		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    		xhr.send("");
    	}
     
    }
    l'alerte ne s'enclenche pas.

    Voici le code généré (pas de trace du bouton) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td height="51" align="center" valign="middle" bgcolor="#D5EDB3" id="btn_cloture"></td>
    Merci d'avance pour votre aide.

    beegees

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $_SESSION['Filiere_actuelle']; ?>
    génère peut être une valeur qui ne peux être pris en compte comme paramètre de la fonction (par ex. si elle contient des quotes non protégées).

    De plus ce genre de modification via JS n'est pas répercuté dans le code source de la page. Celui-ci contient le code initial (au moment du chargement).

    A+

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour E.Bzz,

    Merci pour ta réponse.

    Mon code doit donc ressemble à ceci ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer et clôturer mes choix" onclick="cloture(\'<?php echo $_SESSION[\'Filiere_actuelle\']; ?>\')" class="navText">';
    Merci encore pour ton aide.

    beegees

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    ou éventuellement as-tu essayé ce genre de choses pour éviter les quotes non-échappées dans le contenu de ta variable de session ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo addslashes($_SESSION['Filiere_actuelle']); ?>

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par beegees Voir le message
    Mon code doit donc ressemble à ceci ? :
    C'est plutôt à la version de Romain que je pensais

    A+

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par beegees Voir le message
    Bonjour tout le monde,

    J'ai depuis hier soir et je cherche depuis hier soir comment résoudre ce problème :



    sur ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    				document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer et clôturer mes choix" onclick="cloture('<?php echo $_SESSION['Filiere_actuelle']; ?>')" class="navText">';
    J'essaie donc de passer la valeur d'une variable de session à une fonction javascript.

    Voici le code de la fonction cloture() :

    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
    function cloture(filiere)
    {
    	//je passe la filiere pour donner une valeur au compteur, soit 12 pour PHAR5S-P ou plus pour PHAR5S-D
    	alert(filiere);
    	var compteur = 0;
    	var i = 1;
    	if(filiere == "PHAR5S-P")
    	{
    		compteur = 12;
    	}
    	else
    	{
    		compteur = 17;
    	}	
    	if(confirm('voulez-vous clôturé vos choix ?'))
    	{
    		var xhr = getXhr();
    		for(i;i<=compteur;i++)
    		{
    			document.getElementById('cb_'+i).disabled = true;
    			//je lui passe la variable de session PHP, cela me permet de récupérer sa valeur dans javascript
    		}
    		//document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer" onclick="window.open(\'PDF/resume_cours.php\')" class="navText">';
     
    		xhr.onreadystatechange = function()
    		{
    			//alert(xhr.readyState);
    			//alert(xhr.status);
     
    			if(xhr.readyState == 4 && xhr.status == 200)
    			{
    				retour = xhr.responseText;
    				alert(retour);
    				window.open('PDF/resume_cours.php');				
    			}
    		}
     
     
    		// Ici on va voir comment faire du post
    		//j'ouvre le fichier Scripts/Comptage.php
    		xhr.open("POST","AJAX/cloture.php",true);
    		// ne pas oublier ça pour le post
    		//indispensable pour le POST	
    		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    		xhr.send("");
    	}
     
    }
    l'alerte ne s'enclenche pas.

    Voici le code généré (pas de trace du bouton) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td height="51" align="center" valign="middle" bgcolor="#D5EDB3" id="btn_cloture"></td>
    Merci d'avance pour votre aide.

    beegees
    Citation Envoyé par E.Bzz Voir le message
    Bonjour,
    ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $_SESSION['Filiere_actuelle']; ?>
    génère peut être une valeur qui ne peux être pris en compte comme paramètre de la fonction (par ex. si elle contient des quotes non protégées).

    De plus ce genre de modification via JS n'est pas répercuté dans le code source de la page. Celui-ci contient le code initial (au moment du chargement).

    A+
    Merci à vous deux et désolé pour l'ennui, je commence tout doucement à perdre pied sur un travail assez important que je fais depuis des mois.

    Le code devrait être comme ceci alors ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer et clôturer mes choix" onclick="cloture(\'<?php echo addslashes($_SESSION['Filiere_actuelle']); ?>\')" class="navText">';
    Merci pour tout.

    beegees

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Je laisse répondre quelqu'un qui connait mieux PHP que moi

    A+

  8. #8
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par beegees Voir le message
    Le code devrait être comme ceci alors ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer et clôturer mes choix" onclick="cloture(\'<?php echo addslashes($_SESSION['Filiere_actuelle']); ?>\')" class="navText">';
    Et qu'est-ce que ça donne quand tu essaies ?

    (note : je n'ai aucune prétention en PHP, mes connaissances sont basiques mais suffisent à peu près dans le cas présent ^^)

  9. #9
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re,

    Désolé pour le retard de ma réponse, j'ai essayé de bien comprendre mon problème avant de te répondre.

    Avec le code que j'ai mis, j'obtiens ceci :

    missing ; before statement
    [Break on this error] document.getElementById('btn_cloture...actuelle']); ?>\')" class="navText">'; \n
    La ligne qui pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('btn_cloture').innerHTML = '<input type="button" value="Imprimer et clôturer mes choix" onclick="cloture(\'<?php echo addslashes($_SESSION['Filiere_actuelle']); ?>\')" class="navText">';
    Cette ligne de code est juste censée afficher un bouton.

    EDIT : je dirais même plus, c'est ce qui se trouve dans le onclick qui pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cloture(\'<?php echo addslashes($_SESSION['Filiere_actuelle']); ?>\')
    La ligne de code bloque tout le reste, si je la mets en commentaire, tout fonctionne mais le bouton ne s'affiche pas.

    Merci encore pour ton aide.

    beegees

Discussions similaires

  1. variable de session php<->flash
    Par christophe D dans le forum Flash
    Réponses: 1
    Dernier message: 18/08/2006, 14h47
  2. Réponses: 8
    Dernier message: 13/07/2006, 10h04
  3. Réponses: 1
    Dernier message: 07/07/2006, 14h56
  4. ZoneAlarm bloque mes variables de session PHP en local
    Par GritNatz dans le forum Sécurité
    Réponses: 3
    Dernier message: 24/06/2006, 14h20
  5. Deboggeur de variables de sessions PHP
    Par joe_le_mort dans le forum Langage
    Réponses: 10
    Dernier message: 14/11/2005, 23h22

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