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 :

Superglobales PHP en paramètres de fonction


Sujet :

JavaScript

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut Superglobales PHP en paramètres de fonction
    Bonjour à tous,

    Pas de chance c'est une question,

    Comment peut-on:

    • Appeler une page HTML avec l'extension PHP via une fonction JS avec passage de paramètres par par la méthode POST ou GET (?lib1=val1&lib2=val2...)
    • Appeler au chargement de la page .php, une fonction JS en passant en paramètres les données récupérées dans les superglobales $_GET ou $_POST pour afficher ces données dans des objets (textbox, listbox...) de la page.php


    Pour résumer, je voudrai l'architecture suivante

    page1.html -> boutton -> onclick -> appel fonction js -> appel page2.php avec passage de paramètres via methode GET? ou POST? -> onload -> Récupération valeurs superglobales PHP -> appel fonction js avec passage en paramètres des valeurs de la superglobale PHP $GET ou $POST pour affecter les valeurs $GET ou $POST à des objets de la page2.php

    Ce post fait écho à mon autre post http://www.developpez.net/forums/d14...xte-dynamique/ qui est une solution sans appeler une page PHP et sans utiliser les superglobales mais qui ne répond pas à cette question précise.

    Merci par avance pour vos suggestions et solutions

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il te faut lire la doc sur XMLHttpRequest ou encore AJAX

    A+JYT

  3. #3
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonsoir.
    Bien que votre Post précédent était marqué "RESOLU", j'y ai ajouté ma réponse...
    Je pense qu'elle devrait suffire. Ou alors il y a une subtilité qui m'échappe...
    Cdlt

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Bien, faisons les choses dans l'ordre.

    1.
    page1.html -> boutton -> onclick -> appel fonction js
    Jusque là c'est clair et simple.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <button id="bouton-appel">Appel fonction JS</button>
    <script>
     
    document.getElementById("bouton-appel").onclick = function( ){
       ...
    };
     
    </script>

    2.
    -> appel page2.php avec passage de paramètres via methode GET? ou POST?
    Tu as deux solutions :
    1. soit tu construis un <form> (ou tu en utilises un qui est présent dans la page) et tu l'envoies en faisant submit() ;
    2. soit tu utilises Ajax, dans ce cas suis le conseil de Sekaijin : trouve une doc ou un tuto, tu verras c'est pas super méchant, en 5-10 minutes tu peux avoir un truc qui tourne et comprendre comment il tourne.


    Pour choisir la méthode GET ou POST, c'est soit avec l'attribut method du formulaire, soit avec la méthode open de ton objet Ajax.

    3.
    -> onload -> Récupération valeurs superglobales PHP
    C'est là que ça commence à devenir confus. Je ne sais pas exactement de quel côté tu veux que les choses se passent.

    Il faut bien que tu visualises le mur conceptuel entre le serveur qui exécute du PHP, et le client qui exécute du JavaScript. Ce n'est pas sur la même machine. PHP arrive à te faire croire que tu peux écrire du HTML et du JS dans un script PHP (probablement même, ton éditeur de texte te fait la coloration des différents langages en même temps). Ce n'est pas exact : en réalité, en dehors des balises <? ... ?>, l'interpréteur PHP est en mode echo implicite. Il envoie du texte sans regarder ce que c'est.

    Pour « récupérer » les superglobales PHP dans ton code JavaScript, il faut que PHP les envoie explicitement. Voici une solution. Si tu as choisi d'utiliser Ajax, ce sera grosso modo la même solution, plus ou moins vérification/envoi de headers.

    4.
    -> appel fonction js avec passage en paramètres des valeurs de la superglobale PHP $GET ou $POST pour affecter les valeurs $GET ou $POST à des objets de la page2.php
    Alors, nous somme dans ce scénario :puisque nous sommes à présent sur la page 2, j'en conclus qu'il y a eu un changement de page, donc on n'a pas utilisé Ajax.

    En utilisant la solution que j'ai citée ci-dessus, tu obtiens une copie des valeurs GET ou POST dans un tableau JavaScript. Le plus dur est fait à ce moment-là, car tu as tout sous la main : les données, et les objets à modifier…

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut Probleme d'architecture
    J'ai trouvé une solution mais je ne sais pas si son architecture est la bonne!

    Actuellement pour répondre à mon besoin voici mon architecture:

    Sur la page1.html
    2 champs + 1 bouton

    Quand clique sur bouton ==>
    • appel fonction JS pour sérialiser les données saisies et envoi via ajax des données sérialisées à une page php
    • La page PHP vérifie que l'utisateur existe dans une base de données et renvoie l'ID de l'utilisateur
    • La fonction logIn appelle la page 2 en passant en paramètre l'ID utilisateur


    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
    function logIn()
    {	try
    	{	/* Manipuler un objet avec JQuery : $(#idObject).propriétés/méthodes  */
    		var serialData = $( "#frmLogIn" ).serialize(); 
    		alert (serialData);
    		$.ajax
                    (   {   type: "POST",
                            url: "sqlLogIn.php",
                            data: serialData,
                            dataType: "json",
                            success: function(dataSQL, statut)
                            {   var page = "formulaire.html?id=" + dataSQL[0]["IDPARTICIPANT"]; // dataSQL[0]["IDPARTICIPANT"] valeur de l'ID
                                window.location.replace(page);// Appel 2ème page
                            },
                            error: function(dataSQL, statut)
                            {   alert ("error sqlConnect.js : " + dataSQL.erreur);
     
                            }
                        }
    		);
    	}
    	catch (e)
    	{     alert ('An error has occurred: '+ e.message);
    	}
    }
    Sur la page 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    <script type="text/javascript" src="swfobject.js"></script>
    <script src="jquery-1.9.1.min.js"></script>
    <script src="formulaire.js"></script>
    </head>
    <body onload="initFormulaire();return false;">...
    Sur évènement onlaod de la page2.html
    • Appel initFormulaire qui récupère l'ID utilisateur dans l'adresse URL puis appel une page php via ajax avec envoi de l'ID utilsateur
    • La page php récupère des données de l'ID utilsateur et les renvoie à initFormulaire
    • La fonction initFormulaire affecte les données de l'ID utilisateur aux objets de la page2


    Je ne sais pas si cela est vraiment optimal ? Enfin de compte, ma question est sur la conceptualisation des appels aux différentes briques HTML, JS et PHP !!!

    Merci pour vos retours

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Mon problème était en fin de compte d'accéder à la superglobale $_SESSION. Je pensais qu'il suffisait de faire un appel unique d'initialisation avec session_start() pour que $_SESSION soit accessible par toutes les pages PHP dans le contexte de la session.
    Or comme j'appelais plusieurs pages PHP sans session_start() , je n'avis pas accès à $_SESSION car le truc c'est que pour accéder à cette superglobale il faut
    l
    • ancer session_start() dans toutes les pages PHP
    • toujours à la ligne suivante de la commande <php?
    • sans espace entre le début de ligne et session_start()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <php?
    session_start() // jamais d'espace entre la commande et le debut de ligne & d'interligne avec <php?
    Merci encore pour votre aide précieuse

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
       session_start();
     
    header('Content-Type: text/plain');
    print_r($_SESSION);
     
    ?>

    Quand on met les ? au bon endroit il n'y a pas de problèmes

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    sans espace entre le début de ligne et session_start()
    On a changé PHP

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

Discussions similaires

  1. [Dojo] Fonction php en paramètre de Dojo.xhrGet/xhrPost
    Par cfried dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 04/07/2011, 12h26
  2. Recevoir un int php en paramètre dans une fonction javascript
    Par student_php dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/10/2010, 12h40
  3. Réponses: 2
    Dernier message: 22/12/2009, 15h01
  4. Réponses: 1
    Dernier message: 05/10/2009, 03h50
  5. [PHP-JS] Variables PHP comme paramètre de fonction Js
    Par johandev dans le forum Langage
    Réponses: 3
    Dernier message: 21/12/2006, 12h03

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