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

PHP & Base de données Discussion :

[débutant] envoi de variable entre 2 pages [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 265
    Points : 95
    Points
    95
    Par défaut [débutant] envoi de variable entre 2 pages
    Bonjour,

    Tout jeune, tout frais
    Je souhaite juste renvoyer une variable entre 2 pages.

    Sur la première, j'ai un formulaire de type :
    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
     
    <form enctype="multipart/form-data" action="insert_creation_organisme.php" method="post">
    <p align="center"></p><table width="566" border="0" align="center"><tr>
    		<!-- affichage des choix-->
    ........
    	  <!--récupération du nom du demandeur-->
    	  	<?php
    		// script de connexion
    		include("/var/www/intranet/connexion.inc.php");
    		$sql_nom = "SELECT nom FROM utilisateurs WHERE login = '$_COOKIE[ID_my_site]'";
    		$res_nom = mysql_query($sql_nom);
    		$data_nom=mysql_fetch_assoc($res_nom);
    		$variable_nom=$data_nom['nom'];
    		?>  
     
    	  </table><table width="566" border="0" align="center"><tr>
          <td width="140"><div align="right"><font face="Verdana" size="2">Nom du demandeur: <? echo $variable_nom; ?></font></div></td>
    	  <td align="center" valign="middle" width="30">
    	  </td>
    Donc là j'affiche bien le nom du demandeur, pour l'instant ok

    Maintenant, sur la page lié insert_creation_organisme.php, je souhaite insérer la variable $variable_nom avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql="INSERT INTO organisme (choix_discipline,nom,logo,debut_activite,fin_activite,infos_supp,id_utilisateur)
    VALUES
    ('$_POST[discipline]','$_POST[organisme]','$_POST[logo]','$_POST[debut_activite]','$_POST[fin_activite]','$_POST[infos_supp]','$variable_nom')";
    Or je perds cette variable entre les 2 pages.
    N'y a t il pas un moyen plus rapide que de faire des variables de sessions pour passer rapidement une valeur d'une page à une autre ??

    Merci d'avance

    MJ !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    Il faut mettre des guillemets pour les clefs de tableau non-numeriques :
    $_POST[discipline] => $_POST["discipline"]

    Sinon pour ton problème :
    $_POST reçoit des valeurs de champ de formulaire.
    Si tu veux receptionner $_POST["discipline"], il faut que tu aies un champ de formulaire <input type="text" name="formulaire" value="toto"> par exemple.

    N'y a t il pas un moyen plus rapide que de faire des variables de sessions
    Ecrire une variable en session se fait en une ligne. Donc je ne vois pas ce qui pourrait être plus simple a écrire.
    Mais la question n'est pas forcement la simplicité mais surtout ce que tu veux vraiment faire.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 265
    Points : 95
    Points
    95
    Par défaut
    coucou

    En, fait, sur ma première page, j'affiche un formulaire + le nom de la personne qui s'est logué ($variable_nom)
    A travers la page "insert_creation_organisme.php", je souhaite réintégrer le nom de la personne ($variable_nom)...mais je perds le contenu de la valeur entre les 2 pages !!
    Un POST, ok mais comment faire pour renvoyer une valeur déjà existante ?

    mici

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    Je ne suis pas sûr d'avoir compris :

    • mais si tu as un formulaire sur la première page et tu veux récupérer cette valeur dans la seconde page;

    • sauf que cette valeur existe déjà sur la première page.

    non ?

    Si oui, il faut mettre un input de type hidden :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="asauver" value="lenomdelavaleur" />
    De ce fait tu pourras récupérer ta valeur avec PHP sous cette forme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST['']) {
        $lenomdelavaleur = $_POST['asauver'];
    ...
    }

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu dois réutiliser la variable un peu partout sur ton site, on ne va pas la faire transiter par formulaire a chaque fois.

    Comme je te disais, une session c'est aussi court que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_start()
    $_SESSION['nom_utilisateur'] = $variable_nom;
    $_SESSION['nom_utilisateur'] devient disponible partout sous reserve d'avoir bien demarré le session avec session_start()

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 265
    Points : 95
    Points
    95
    Par défaut
    Bonjour bonjour

    1) pour ekevin ==> la valeur qui existe déjà est :
    <font face="Verdana" size="2">Nom du demandeur: <? echo $variable_nom; ?></font>
    Je récupere le nom du demandeur via $variable_nom .
    Je souhaiterai ensuite renvoyer cette valeur dans l'autre page, et sauver cette valeur dans une autre table :

    $sql="INSERT INTO organisme (choix_discipline,nom,logo,debut_activite,fin_activite,infos_supp,id_utilisateur)
    VALUES
    ('$_POST[discipline]','$_POST[organisme]','$_POST[logo]','$_POST[debut_activite]','$_POST[fin_activite]','$_POST[infos_supp]','$nom_demandeur')";

    Mais rien ne s'enregistre !!

    2) pour sabotage :
    J'ai rajouté , en haut des 2 pages php
    <? session_start(); ?>
    <html>
    sur la première, j'ai cette méthode pour récupérer la valeur (nom_demandeur)
    $sql_nom = "SELECT nom FROM utilisateurs WHERE login = '$_COOKIE[ID_my_site]'";
    $res_nom = mysql_query($sql_nom);
    $data_nom=mysql_fetch_assoc($res_nom);
    $variable_nom=$data_nom['nom'];
    $_SESSION['nom_demandeur'] = $variable_nom;
    Maintenant, dans la seconde page, qui est censé récupéré et inserer la valeur précédente dans une autre base :

    L13: $sql="INSERT INTO organisme (choix_discipline,nom,logo,debut_activite,fin_activite,infos_supp,id_utilisateur)
    L14: VALUES
    L15: ('$_POST[discipline]','$_POST[organisme]','$_POST[logo]','$_POST[debut_activite]','$_POST[fin_activite]','$_POST[infos_supp]','$_SESSION[nom_demandeur]')";

    Or j'ai ce message d'erreur :
    Parse error: syntax error, unexpected T_VARIABLE in /var/www/intranet/exec/insert_creation_organisme.php on line 13

    Merci d'avance
    C'est sympa de m'aider

    Bonne soirée à vous deux et à tout le monde !
    MJ

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par marveljojo75 Voir le message
    Or j'ai ce message d'erreur :
    Parse error: syntax error, unexpected T_VARIABLE in /var/www/intranet/exec/insert_creation_organisme.php on line 13
    Apparement tu essaie d'insérer une variable qui n'est pas déclarée... Surement ta variable $_SESSION[nom_demandeur]' que tu essaie de passer en session.

    Perso pour les session j'utilise une page tampon avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <? $_SESSION[nom_demandeur]'  = $_POST['nom_demandeur']; ?>
    et je fais une redirection vers la page d'utilisation avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?
    echo  "<script language='JavaScript'>document.location='la_page.php'</script>"; ?>
    de cet façon j'ai ma variable $_SESSION[nom_demandeur]' dispo partout dans le site.

    Cordialement.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 265
    Points : 95
    Points
    95
    Par défaut
    heu tu m'as perdu là !!!
    lol

    pourrais tu m'expliquer un peu plus en détail ?
    merci
    MJ !

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Ta variable à récupérer partout est :

    Nom du demandeur: <? echo $variable_nom; ?>

    donc tu la $_POST (ou tu la $_GET peut importe) de la maniére suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form name="mon_form" method="POST" action="page_tampon.php" target="_self">
    <input name="ma_variable"  type="hidden"  value="<? echo $variable_nom; ?>" > 
    </form>
    ensuite sur la page_tampon.php tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <? $_SESSION[nom_demandeur]' = $_POST['ma_variable']; ?>
    <? echo "<script language='JavaScript'>document.location='retour_page_traitement.php'</script>"; ?>
    Ton $_POST devient une variable global que tu peut récupéré n'importe ou dans ton site de la maniére suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <? echo $_SESSION[nom_demandeur]'; ?>
    pour vérifier qu'elle passe bien.

    Bien sur ne pas oublier le session_start() avant tout les tags html sur les pages utilisées.

    Cordialement

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="INSERT INTO organisme (choix_discipline,nom,logo,debut_activite,fin_activite,infos_supp,id_utilisateur) VALUES ('" . $_POST[discipline]','$_POST[organisme]','$_POST[logo]','$_POST[debut_activite]','$_POST[fin_activite]','$_POST[infos_supp]','$_SESSION[nom_demandeur]')";
    Cette ligne est correcte sauf que :
    - les clefs non numeriques s'encadrent avec des guillemets
    - on n'insere pas des données provenant directement d'une saisie utilisateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $discipline = mysql_real_escape_string($_POST["discipline"]);
    $organisme = mysql_real_escape_string($_POST["organisme"]);
    $logo = mysql_real_escape_string($_POST["logo"]);
    $debut_activite = mysql_real_escape_string($_POST["debut_activite"]);
    $fin_activite = mysql_real_escape_string($_POST["fin_activite"]);
    $infos_supp = mysql_real_escape_string($_POST["infos_supp"]);
    $organisme = mysql_real_escape_string($_POST["organisme"]);
    $nom_demandeur = $_SESSION["nom_demandeur"]
    $sql="INSERT INTO organisme (choix_discipline,nom,logo,debut_activite,fin_activite,infos_supp,id_utilisateur) VALUES ('$discipline','$organisme','$logo','$debut_activite','$fin_activite','$infos_supp','$nom_demandeur')";

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 265
    Points : 95
    Points
    95
    Par défaut
    Bonjour les z'amis !!

    Pour sabotage, ya une fÔte de frappe , il s'agit de mysql_real_escape_string au lieu de mysql_real_espace_string , et là, merci tout marche !!!!

    Pour azorol, je teste ce week end, mais cela me semble ok déjà merci !!!

    Une question bonus et technique :
    les clefs non numériques s'encadrent avec des guillemets, mais à quel niveau ?
    Pour exemple, dans le code suivant, "choix_discipline" correspond à un chiffre entre 1 et 10.
    $sql="INSERT INTO organisme (choix_discipline,nom,id_utilisateur) VALUES ('$discipline','$organisme','$nom_demandeur')";

    Mici

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ho faut que j'arrete de répondre avant d'aller dormir.


    les clefs non numériques s'encadrent avec des guillemets
    je parlais en fait des clefs de tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    array["toto"]
    $_POST["champ"]
    pour SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table (int, varchar) VALUES ($int, '$varchar')
    et si tu champ discipline est un entier, plutot que de l'echapper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $discipline = intval($_POST["discipline"]);

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 265
    Points : 95
    Points
    95
    Par défaut
    lol
    Pas de souçis
    et merci pour ton coup de main !!

    Par contre, et je sais que j'abuse là ... mais bon, comme je vois que tu es super réactif, , j'ai une superbe question :

    J'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql_nom = "SELECT nom FROM utilisateurs WHERE login = '$_COOKIE[ID_my_site]'";
    $res_nom = mysql_query($sql_nom);
    $data_nom=mysql_fetch_assoc($res_nom);
    $variable_nom=$data_nom['nom'];
    $_SESSION['nom_demandeur'] = $variable_nom;
    Et je souhaiterai faire :
    $sql_nom = "SELECT id_utilisateur,nom FROM utilisateurs WHERE login = '$_COOKIE[ID_my_site]'";
    Suis je obliger de sortir les données dans un tableau ? ou n'est il pas possible de récuperer la valeur de id_utilisateur et de nom dans 2 variables disctints ?

    Je teste php/mysql depuis un bon mois, et j'adooooore
    Gracias !!

    MJ !

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca revient au meme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $res_nom = mysql_query($sql_nom);
    $data_nom=mysql_fetch_assoc($res_nom);
    $id_utilisateur = $data_nom['id_utilisateur'];
    $nom = $data_nom['nom'];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $res_nom = mysql_query($sql_nom);
    $id_utilisateur = mysql_result($res_nom, 0);
    $nom = mysql_result($res_nom, 1);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $res_nom = mysql_query($sql_nom);
    $data_nom=mysql_fetch_assoc($res_nom);
    extract($data_nom);

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 265
    Points : 95
    Points
    95
    Par défaut
    moi je dis : TROP FORT !!

    Merci pour ton aide, vraiment bien expliqué et au poil
    Passe une bonne fin de semaine !!!

    Cordialement,

    MJ

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2006, 22h36
  2. Passage de variable entre 2 pages
    Par lodan dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/07/2006, 11h38
  3. Partage de variables entre plusieurs pages
    Par bud_gw dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/12/2005, 15h42
  4. débutant:utilisation de variable entre classe
    Par troojan dans le forum MFC
    Réponses: 1
    Dernier message: 07/12/2005, 23h31
  5. [Débutant - Avis] même variable dans plusieurs pages...
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 16/12/2004, 22h50

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