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

Langage PHP Discussion :

[PHP-JS] Variable Javascript en php dans une même page


Sujet :

Langage PHP

  1. #1
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut [PHP-JS] Variable Javascript en php dans une même page
    Bonjour, voilà j'ai une page (Mail.php) où j'affiche une textarea avec un bouton. Lorsque je clique sur le bouton, je souhaiterais que ce qui est dans la 'textarea' soit sauvegardé dans une variable php afin de l'utiliser dans une fonction mail().

    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
     
     
    <?php
    session_start();
    $User = $_SESSION['User_Name'];
     
    // Fonction Mail
    function EnvoiMail(){
         $headers ='From: '.$User.'<'.$User.'@test.fr>'."\n"; 
         $headers .='Reply-To: test@test.fr'."\n"; 
         $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $headers .='Content-Transfer-Encoding: 8bit'; 
         $message ='<html><head><title>Demande de catalogue</title></head><body> variable de la TEXTAREA</body></html>'; 
     
         if(mail('test@test.fr', 'Demande de Catalogue', $message, $headers)) 
         { 
              echo 'Le message a été envoyé'; 
         } 
         else 
         { 
              echo 'Le message n\'a pu être envoyé, contacter votre administrateur réseau'; 
         }
    }
    ?>
     
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
    <html>
    <head>
     
    </head>
    <body> 
    <div align='left'> Veuillez saisir le nom du fournisseur-fabricant que vous souhaitez :</div><br /> 
     
    <textarea name='Message' id='message' rows='5' cols='30' ></textarea><br />
    <br />
    <input type='button' name='envoyer' id='send' value='Demander' align='center' onclick='document.location.href=Mail.php'>
     
    </body>
     
    </html>
    Cela doit être possible en réaffichant la page mais je vois pas comment faire...

  2. #2
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Points : 118
    Points
    118
    Par défaut
    Le javascript s'exécutant au niveau client et le PHP au niveau serveur, la première solution qui me vient à l'esprit est la suivante :

    onClick de ton bouton, tu renseignes le contenu de ton textarea dans une variable de formulaire hidden (attention aux caractères spéciaux, sauts de ligne, etc !). Puis, tu submit() ton formulaire sur lui-même et tu renseignes ta variable PHP.

    Si il y a une autre solution, elle ne me vient pas à l'esprit...

  3. #3
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    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
     
    <?php
    session_start();
    $User = $_SESSION['User_Name'];
    $ContenuTxtArea=$_POST['message'];
    // Fonction Mail
    function EnvoiMail(){
         $headers ='From: '.$User.'<'.$User.'@test.fr>'."\n"; 
         $headers .='Reply-To: <a href="mailto:test@test.fr">test@test.fr</a>'."\n"; 
         $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $headers .='Content-Transfer-Encoding: 8bit'; 
         $message ='<html><head><title>Demande de catalogue</title></head><body> variable de la TEXTAREA</body></html>'; 
     
         if(mail('test@test.fr', 'Demande de Catalogue', $message, $headers)) 
         { 
              echo 'Le message a été envoyé'; 
         } 
         else 
         { 
              echo 'Le message n\'a pu être envoyé, contacter votre administrateur réseau'; 
         }
    }
    ?>
     
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
    <html>
    <head>
     
    </head>
    <body> 
    <div align='left'> Veuillez saisir le nom du fournisseur-fabricant que vous souhaitez :</div><br />
     
    <form name="Formulaire" id="FormCata" method="post">
    <textarea name='Message' id='message' rows='5' cols='30' ></textarea><br />
    <br />
    <input type="submit" name="envoyer" id="send" value="Demander" align="center" onclick="window.opener.document.getElementById('FormCata').submit();">
    </form>
     
    </body>
     
    </html>
    J'ai ajouté le formulaire. Mais il veut pas faire le submit. J'ai déclaré la variable de session dans la balise php aussi.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Points : 118
    Points
    118
    Par défaut
    On s'est pas compris. Je voyais un truc comme ça (reflexion faite, la variable hidden ne sert à rien)

    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
     
    <?php
    session_start();
    $User = $_SESSION['User_Name'];
    $ContenuTxtArea=$_POST['message'];
    // Fonction Mail
    function EnvoiMail(){
         $headers ='From: '.$User.'<'.$User.'@test.fr>'."\n"; 
         $headers .='Reply-To: <a href="mailto:test@test.fr">test@test.fr</a>'."\n"; 
         $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $headers .='Content-Transfer-Encoding: 8bit'; 
         $message ='<html><head><title>Demande de catalogue</title></head><body> variable de la TEXTAREA</body></html>'; 
     
         if(mail('test@test.fr', 'Demande de Catalogue', $message, $headers)) 
         { 
              echo 'Le message a été envoyé'; 
         } 
         else 
         { 
              echo 'Le message n\'a pu être envoyé, contacter votre administrateur réseau'; 
         }
    }
    ?>
     
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
    <html>
    <head>
     
    </head>
    <body> 
    <div align='left'> Veuillez saisir le nom du fournisseur-fabricant que vous souhaitez :</div><br />
     
    <form name="Formulaire" id="FormCata" method="post">
    <textarea name='Message' id='message' rows='5' cols='30' ></textarea><br />
    <br />
    <input type="submit" name="envoyer" id="send" value="Demander" align="center" onclick="document.Formulaire.submit();">
    </form>
     
    </body>
     
    </html>
    Par contre, je ne comprends pas quelle est la subtilité de ton problème... Ce formulaire est une simple form d'envoi de mail... Donc, en l'occurence, le onClick ne sert à rien, le type "submit" fait déjà le job. Par contre, ton form n'a pas de target.

  5. #5
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Merci de tes réponses.

    Je vais essayer d'être plus clair dans mes explications...

    Je souhaite pouvoir dans une même page envoyer un mail qui contient le contenu d'une textarea. Php étant coté serveur, il faut que je recharge la même page afin de pouvoir passer le contenu de la textarea dans une variable php qui s'intégrera dans la variable $message de la fonction mail.

    En résumé, je voudrais envoyer un mail en php avec comme message, le contenu d'une textarea et le tout sur une même page.


    Merci

  6. #6
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par Mut Voir le message
    En résumé, je voudrais envoyer un mail en php avec comme message, le contenu d'une textarea et le tout sur une même page.
    C'est bien ce que je dis : tu veux simplement un formulaire d'envoi de mail J'ai pas de PHP ici, mais essaie ça

    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
     
    <?php
    session_start();
    $User = $_SESSION['User_Name'];
     
    if($_POST['envoyer'] == "Demander";){
        $ContenuTxtArea = $_POST['message'];
        EnvoiMail();
    }
     
    // Fonction Mail
    function EnvoiMail(){
         $headers ='From: '.$User.'<'.$User.'@test.fr>'."\n"; 
         $headers .='Reply-To: <a href="mailto:test@test.fr">test@test.fr</a>'."\n"; 
         $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $headers .='Content-Transfer-Encoding: 8bit'; 
         $message ='<html><head><title>Demande de catalogue</title></head><body> variable de la TEXTAREA</body></html>'; 
     
         if(mail('test@test.fr', 'Demande de Catalogue', $message, $headers)) 
         { 
              echo 'Le message a été envoyé'; 
         } 
         else 
         { 
              echo 'Le message n\'a pu être envoyé, contacter votre administrateur réseau'; 
         }
    }
    ?>
     
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
    <html>
    <head>
     
    </head>
    <body> 
    <div align='left'> Veuillez saisir le nom du fournisseur-fabricant que vous souhaitez :</div><br />
     
    <form name="Formulaire" id="FormCata" method="post" target="<?php echo $_SERVER['PHP_SELF']; ?>">
    <textarea name='Message' id='message' rows='5' cols='30' ></textarea><br />
    <br />
    <input type="submit" name="envoyer" id="send" value="Demander" align="center">
    </form>
     
    </body>
     
    </html>
    Sinon, tu dois pouvoir trouver plein d'exemples de forms d'envoi de mail sur le web.

  7. #7
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Bon ça fonctionne toujours pas. J'ai corrigé quelques erreurs mais j'arrive toujours pas à envoyé le mail...pourtant j'ai quand meme le message "l'email a bien été envoyé".

    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
     
     
    <?php
    session_start();
    $User = $_SESSION['User_Name'];
     
    if ($_POST['envoyer'] == "Demander"){
        EnvoiMail();
    }
     
    // Fonction Mail
    function EnvoiMail(){
         $headers ='From: '.$User.'<'.$User.'@domaine.fr>'."\n"; 
         //$headers .='Reply-To: <a href="mailto:nobody@domaine.fr">nobody@domaine.fr</a>'."\n"; 
         $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $headers .='Content-Transfer-Encoding: 8bit'; 
         $message ='<html><head><title>Demande de catalogue</title></head><body>'.$_POST["message"].'</body></html>'; 
     
         if(mail('monadresse@domaine.fr', 'Demande de Catalogue', $message, $headers)) 
         { 
              echo 'Le message a été envoyé';
         } 
         else 
         { 
              echo 'Le message n\'a pu être envoyé, contacter votre administrateur réseau'; 
         }
    }
    ?>
     
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
    <html>
    <head>
     
    </head>
    <body> 
    <div align='left'> Veuillez saisir le nom du fournisseur-fabricant que vous souhaitez :</div><br />
     
    <form name="Formulaire" id="FormCata" method="post" target="<?php echo $_SERVER['PHP_SELF']; ?>">
    <textarea name='Message' id='message' rows='5' cols='30' ></textarea><br />
    <br />
    <input type="submit" name="envoyer" id="send" value="Demander" align="center">
    </form>
     
    </body>
     
    </html>
    Ce que j'ai corrigé/modifié :

    suppression du ; après "Demander"
    ajout de la variable $_POST dans le corps du message
    mise en commentaire d'une ligne $header

    Une dernière chose très importante je pense...la page s'ouvre en double

  8. #8
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    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
     
    <?php
    session_start();
    $User = $_SESSION['User_Name'];
    //if(isset($_POST['message'])){$ContenuTxtArea=$_POST['message'];}else{$ContenuTxtArea="";}
     
    if (isset($_POST['envoyer']) == "Demander"){
        EnvoiMail();
    }
     
    // Fonction Mail
    function EnvoiMail(){
         $headers ='From:<nobody@domaine.fr>'."\n"; 
         $headers .='Reply-To: <a href="mailto:nobody@domaine.fr">nobody@domaine.fr</a>'."\n"; 
         $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $headers .='Content-Transfer-Encoding: 8bit';
         if(isset($_POST['message'])){$ContenuTxtArea=$_POST['message'];}else{$ContenuTxtArea="";}  
         $message ='<html><head><title>Demande de catalogue</title></head><body>'.$ContenuTxtArea.'</body></html>'; 
     
         if(mail('cedric.mutel@auxitec.fr', 'Demande de Catalogue',$message,$headers)) 
         { 
              echo 'Le message a été envoyé';
         } 
         else 
         { 
              echo 'Le message n\'a pu être envoyé, contacter votre administrateur réseau'; 
         }
    }
    ?>
     
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
    <html>
    <head>
     
    </head>
    <body> 
    <div align='left'> Veuillez saisir le nom du fournisseur-fabricant que vous souhaitez :</div><br />
     
    <form name="Formulaire" id="FormCata" method="post">
    <textarea name='message' id='message' rows='5' cols='30' ></textarea><br />
    <br />
    <input type="submit" name="envoyer" id="send" value="Demander" align="center">
    </form>
     
    </body>
     
    </html>
    Cette version de code fonctionne très bien ! Merci à toi

  9. #9
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut !

    J'ai repéré quelques erreurs dans ton code qui devraient peut-etre t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="Formulaire" id="FormCata" method="post" target="<?php echo $_SERVER['PHP_SELF']; ?>">
    "target" n'est pas le bon attribut -> A remplacer par "action" !

    Par ailleurs, je ne suis pas sur que tu puisses utiliser les variables $_POST directement dans ta fonction EnvoiMail() sans les déclarer comme global ou les passer en paramètre.

    Essaie avec :

    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
    if ($_POST['envoyer'] == "Demander"){
        EnvoiMail($User, $_POST['message']);
    }
     
    // Fonction Mail
    function EnvoiMail($user, $message){
         $headers ='From: '.$user.'<'.$user.'@domaine.fr>'."\n"; 
         //$headers .='Reply-To: <a href="mailto:nobody@domaine.fr">nobody@domaine.fr</a>'."\n"; 
         $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
         $headers .='Content-Transfer-Encoding: 8bit'; 
         $html ='<html><head><title>Demande de catalogue</title></head><body>'.$message.'</body></html>'; 
     
         if(mail('monadresse@domaine.fr', 'Demande de Catalogue', $html, $headers)) 
         { 
              echo 'Le message a été envoyé';
         } 
         else 
         { 
              echo 'Le message n\'a pu être envoyé, contacter votre administrateur réseau'; 
         }
    }
    ?>
    Voilà
    A++

  10. #10
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Merci de tes réponses. On a du poster en même temps hier . J'ai effectivement modifié l'attribut (en le supprimant) comme ça je n'avais plus le problème du doublon de page. Par contre pour les variables je peux les utiliser directement dans ma fonction car il me semble que les variables $_POST sont globales...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/09/2010, 08h05
  2. [PHP-JS] Variable javascript vers php
    Par guigui31 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 13/06/2007, 15h39
  3. [PHP-JS] variable javascript en php
    Par darkbob dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2007, 17h32
  4. Réponses: 11
    Dernier message: 26/04/2007, 10h40
  5. [PHP-JS] variable javascript vers PHP
    Par nicoaix dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2006, 21h28

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