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 :

Mélanger deux FORM


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut Mélanger deux FORM
    Bonjour,

    Je sais pas si je suis exactement à la bonne place mais j'ai un souci auquel je ne trouve pas de réponse sur le net.

    J'ai un formulaire contact en HTML avec la gestion en php qui marche très bien. http://www.lafetedelamusique.ch/afm/contact.php

    En fait je voudrais y ajouter un checkbox pour demander à l'utilisateur si il veut ou pas s'inscrire directement à la Newsletter. Pour ça ce n'est pas un souci. Simplement, je ne vois pas comment ajouter la fonction qui fera l'inscription à la Newslettre en même temps que mon envoie du formulaire de contact.

    Le code de Form pour l'inscription à la NewsLetter est comme ça et séparément marche très très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Pour recevoir la Newslettre de la fête de la musique de La Chaux-de-Fonds
     
    <form method="post" action="http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9" name="signup">
     
    <!--    Email field must be named "Email" -->
     
    <label for="email"><strong>Entrez votre Email:</strong></label>
    <input type="text" name="Email" id="email" maxlength="60" />
     
    <input type="hidden" name="pommo_signup" value="true" />
    <input type="submit" class='formlienbouton' value="Inscription" />
    </form>
    Comment faire pour que lorsque je valide le formulaire de contact ça me fasse automatiquement cette fonction ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Salut,

    Tout dépend comment ton site web est architecturé. La solution la plus propre à mon sens serait , une fois le premier formulaire validé, de directement réaliser ou non l'inscription à la newsletter sans passer par un autre formulaire (via une la fonction qui réalise l'inscription dans le code du gestionnaire de newsletter);
    L'utilisation de deux formulaires ici étant un non sens à mon avis.

    Celà dit, en admettant que vous ne pouviez "réutiliser" la fonction d'inscription à la newsletter, il va falloir tenter de faire transiter les données nécessaires pour l'inscription à la newsletter "à la main".
    Si le formulaire newsletter accepte le GET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Après le traitement du formulaire de contact.
    if($_POST["ckbox_nwsl"]) //si la checkbox est coché, à changer par le nom de votre checkbox...
    {
      header('location: http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9&email='.$_POST["email"].'&pommo_signup=true')
    }
    Si il n'accepte que post, c'est un peu plus compliqué , mais faisable avec Curl ou fsockopen.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Oui, mon but est justement de ne pas avoir 2 formulaire mais de pouvoir envoyer l'inscription à la newsletter directement.

    J'ai tenté votre code, après avoir compris au bout de 10 minutes qu'il manquait le ";" a la fin de la ligne . Ceci à passé sans erreur mais aucun inscriptions à la news

    Je pourrais vous mettre tous mon code php d'envoi mais ça risque de faire long. J'ai peut-être encore une idée, c'est que j'ai du changer le nom de la variable. Je continue mes test

    Mon code actuel est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // ++++++++++++++++++++++++++++++++++++++++++++++++++
    // ++++++++++ INSCRIPTIONS A LA NEWSLETTER ++++++++++
     
    if ($_SESSION['form_element8'] == "Oui") { header('location: http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9&email='.$_POST["$form_element1"].'&pommo_signup=true');
    }
     
    // ---------- FIN DE L'INSCRIPTION A LA NEWSLETTER ----------
    // ----------------------------------------------------------
    J'ai tenté ça sur une page test mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    // ++++++++++++++++++++++++++++++++++++++++++++++++++
    // ++++++++++ INSCRIPTIONS A LA NEWSLETTER ++++++++++
     
        $Email="abc@def.com"; // j'avais une adresse réelle à moi
     
        header('location: http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9&email='.$_POST['Email'].'&pommo_signup=true');
     
    // ---------- FIN DE L'INSCRIPTION A LA NEWSLETTER ----------
    // ----------------------------------------------------------
    ?>

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Soit j'ai pas compris où était la subtilité, soit ça devrait être simple.

    On admet que le checkbox a comme nom "form_element8" et qu'il soit dans le même formulaire ("signup").

    Suffit de vérifier s'il est coché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (isset($_POST['form_element8']) && !empty($_POST['form_element8'])) {
    	// La newsletter est cochée
    	// On met à jour cette donnée dans la Bdd par exemple
    	// On lui envoie une news par mail aussi
    }
    Pourquoi faire une redirection avec des paramètres ?
    A quoi serviront ils ces paramètres ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Ce n'est pas la question de faire ou pas une redirection avec des paramètres. C'est simplement que mon formulaire est un formulaire de contact et non pas d'inscriptions à une newsletter. Je voulais simplement y ajouter cette fonction direct. Et c'est là que ça coince, je n'arrive pas à inscrire directement le mail dans la bdd de la newsletter.

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Et c'est là que ça coince, je n'arrive pas à inscrire directement le mail dans la bdd de la newsletter.
    Et pourquoi donc ?
    C'est la requête qui pose problème alors, non ?
    Est ce lié au fait que le contact.php ce trouve dans www.domaine.com et que la newsletter ce trouve dans admin.domaine.com ? Un problème de droit ?

    Tu veux appeler newsletter.php alors que tu te trouve dans contact.php, c'est ça ?
    Si c'est cela je dirais que tu te complique la vie, non ?
    Dans cette éventualité, ça doit être possible, et Curl serait surement plus adapté que des header(), car on peu envoyer des paramètres en POST.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Voilà mes 2 pages pour la gestion du formulaire contact :

    Page contact :
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
              <?php
            if(!array_key_exists('formMessage', $_SESSION))
            $_SESSION['formMessage'] = "";
            if(!array_key_exists('form_element0', $_SESSION))
            $_SESSION['form_element0'] = "";
            if(!array_key_exists('form_element1', $_SESSION))
            $_SESSION['form_element1'] = "";
            if(!array_key_exists('form_element2', $_SESSION))
            $_SESSION['form_element2'] = "";
            if(!array_key_exists('form_element3', $_SESSION))
            $_SESSION['form_element3'] = "";
            if(!array_key_exists('form_element4', $_SESSION))
            $_SESSION['form_element4'] = "";
            if(!array_key_exists('form_element5', $_SESSION))
            $_SESSION['form_element5'] = "";
            if(!array_key_exists('form_element6', $_SESSION))
            $_SESSION['form_element6'] = "";
            if(!array_key_exists('form_element7', $_SESSION))
            $_SESSION['form_element7'] = "";
           if(!array_key_exists('form_element8', $_SESSION))
            $_SESSION['form_element8'] = "";
            ?>
     
            <div class="message-text">
              <?php
              if (!$_SESSION['formMessage']) { 
              echo "<font size=3><B><center>Pour nous contacter<br/></font><font size=1>Remplissez le formulaire ci-dessous pour nous envoyer un courrier &eacute;lectronique.<br>Mettez une adresse Email valide si vous voulez que l`on puisse vous r&eacute;pondre.<br>Pour des raisons de s&eacute;curit&eacute;, votre adresse IP est transmise dans le mail.</center></b></font>";
              } else {
               echo $_SESSION['formMessage'];
               }
               ?>
            </div>
            <br />
     
            <form action="./sendcontact/sendcontact.php"
                  method="post"
                  enctype="multipart/form-data">
              <label>Entrez votre nom et prénom :</label> *
              <br />
              <input class="form-input-field"
                    type="text"
                    value="<?php echo $_SESSION['form_element0']; ?>"
                    name="form_element0"
                    size="40" />
              <br />
              <br />
              <label>E-mail :</label> *
              <br />
              <input class="form-input-field"
                    type="text"
                    value="<?php echo $_SESSION['form_element1']; ?>"
                    name="form_element1"
                    size="40" />
              <br />
              <br />
              <label>Objet :</label> *
              <br />
              <input class="form-input-field"
                    type="text"
                    value="<?php echo $_SESSION['form_element2']; ?>"
                    name="form_element2"
                    size="40" />
              <br />
              <br />
              <label>Message ( Event. Coordonnées complètes + n° de téléphone ) :</label> *
              <br />
              <textarea class="form-input-field"
                    name="form_element3"
                    rows="8"
                    cols="60">
    <?php echo $_SESSION['form_element3']; ?>
    </textarea>
              <br />
              <br />
              <label>Choisissez votre interlocuteur :</label>
              <select name="form_element4">
                <option <?php if ($_SESSION['form_element4'] == "Contact g&eacute;n&eacute;rale") { echo "selected"; } ?>
                        value="Contact générale">Contact générale
                </option>
     
                <option <?php if ($_SESSION['form_element4'] == "Inscription Benevole") { echo "selected"; } ?>
                        value="Inscription Benevole">Inscription Benevole
                </option>
     
                <option <?php if ($_SESSION['form_element4'] == "Soutien FDLM") { echo "selected"; } ?>
                        value="Soutien FDLM">Soutien FDLM
                </option>
     
                <option <?php if ($_SESSION['form_element4'] == "Sponsoring") { echo "selected"; } ?>
                        value="Sponsoring">Sponsoring
                </option>
     
                <option <?php if ($_SESSION['form_element4'] == "WebMaster") { echo "selected"; } ?>
                        value="WebMaster"> WebMaster
                </option>
              </select>
              <br />
              <br />
              <label>J'ai un fichier "compressé" (ceci pour éviter les
              erreurs) à transmettre :</label>
              <br />
              <input type="file"
                    name="form_element5" />
              <br />
              <br />
              <label>Donnez-nous l'année du 21 juin 2008. (Anti-robots) ;-)</label> *
              <input class="form-input-field"
                    type="text"
                    value="<?php echo $_SESSION['form_element6']; ?>"
                    name="form_element6"
                    size="4" />
              <br />
            <label>Voulez-vous une copie de ce mail ?</label> *
              <input <?php if ($_SESSION['form_element7'] == "Non") ?>
                    type="radio"
                    name="form_element7"
                    value="Non" /><label>Non</label>
              <input <?php if ($_SESSION['form_element7'] == "Oui")?>
                    type="radio"
                    name="form_element7"
                    value="Oui"
                  checked /><label>Oui</label>
              <br />
            <label>Voulez-vous recevoir notre NewsLetter ?</label> *
              <input <?php if ($_SESSION['form_element8'] == "Non") ?>
                    type="radio"
                    name="form_element8"
                    value="Non" 
                  checked /><label>Non</label>
              <input <?php if ($_SESSION['form_element8'] == "Oui")?>
                    type="radio"
                    name="form_element8"
                    value="Oui"
                  /><label>Oui <i>(Ce module n'est pas encore activé)</i></label>
              <br />
              <br />
              <input class='formlienbouton'
                    type="reset"
                    name="resetButton"
                    value="Effacer" /> <input class='formlienbouton'
                    type="submit"
                    name="submitButton"
                    value="Envoyer" />
            </form>
    <?php session_destroy(); ?>
    Page d'envois :
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
       <?php
    session_start();
    $_SESSION['form_element0'] = $_POST['form_element0'];
    $_SESSION['form_element1'] = $_POST['form_element1'];
    $_SESSION['form_element2'] = $_POST['form_element2'];
    $_SESSION['form_element3'] = $_POST['form_element3'];
    $_SESSION['form_element4'] = $_POST['form_element4'];
    $_SESSION['form_element5'] = $_POST['form_element5'];
    $_SESSION['form_element6'] = $_POST['form_element6'];
    $_SESSION['form_element7'] = $_POST['form_element7'];
    $_SESSION['form_element8'] = $_POST['form_element8'];
    $form_element0 = $_SESSION['form_element0'];
    $form_element1 = preg_replace("/\r/", "", $_SESSION['form_element1']);
    $form_element1 = preg_replace("/\n/", "", $form_element1);
    $form_element2 = preg_replace("/\r/", "", $_SESSION['form_element2']);
    $form_element2 = preg_replace("/\n/", "", $form_element2);
    $form_element3 = $_SESSION['form_element3'];
    $form_element4 = $_SESSION['form_element4'];
    $form_element5 = $_SESSION['form_element5'];
    $form_element6 = $_SESSION['form_element6'];
    $form_element7 = preg_replace("/\r/", "", $_SESSION['form_element7']);
    $form_element7 = preg_replace("/\n/", "", $form_element7);
    $form_element8 = preg_replace("/\r/", "", $_SESSION['form_element8']);
    $form_element8 = preg_replace("/\n/", "", $form_element8);
     
    if(!$_SESSION['form_element0'] || !$_SESSION['form_element1'] || !$_SESSION['form_element2'] || !$_SESSION['form_element3'] || !$_SESSION['form_element6'] || !$_SESSION['form_element7'] || !$_SESSION['form_element8']) {
    $_SESSION['formMessage'] = "<center><font color=green size=2><BLINK>        Please fill out all the required fields. <br/>Les champs marqu&eacute;s d&rsquo;une * sont requis.\n</BLINK></font></center>";
    Header("Location:../contact.php");
    exit();
    }
     
    if (!eregi ("^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$", $_SESSION['form_element1'])) {$_SESSION["formMessage"] = "<center><font color=green size=2><BLINK>!!! Veuillez écrire une adresse E-mail Valide svpl. !!!\n</BLINK></font></center>"; 
        header("Location: ../contact.php");
        exit();
     
    }
    if ($_SESSION['form_element6'] != "2008") {$_SESSION["formMessage"] = "<center><font color=green size=2><BLINK>!!! Aie, il y a une erreur dans l'ann&eacute;e\n</BLINK></font></center>"; 
        header("Location: ../contact.php");
        exit();
     
    } else {
     
    $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
     
    $tmp_name = $_FILES['form_element5']['tmp_name'];
    $type = $_FILES['form_element5']['type'];
    $name = $_FILES['form_element5']['name'];
    $size = $_FILES['form_element5']['size'];
     
     
    // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // ++++++++++ MISE EN PLACE DES MODIFS DE L'EMAIL +++++++++++
     
     
    if ($_SESSION['form_element4'] == "Contact générale") { $send="aaa@lafetedelamusique.ch"; 
    }
    if ($_SESSION['form_element4'] == "Inscription Benevole") { $send="bbb@lafetedelamusique.ch"; 
    }
    if ($_SESSION['form_element4'] == "Soutien FDLM") { $send="ccc@lafetedelamusique.ch"; 
    }
    if ($_SESSION['form_element4'] == "Sponsoring") { $send="ddd@lafetedelamusique.ch"; 
    }
    if ($_SESSION['form_element4'] == "WebMaster") { $send="eee@lafetedelamusique.ch"; 
    }   
     
    $ip=$_SERVER['REMOTE_ADDR'];
     
    // -----------FIN DES MODIFICATIONS DE L'EMAIL --------
    // ----------------------------------------------------
     
     
    $mailsend="$send";
     
    if (!eregi ("^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$", $mailsend)) {
    unset($mailsend);
    }
     
    $from = stripslashes($form_element1)."<".stripslashes($form_element1).">";$subject= $form_element2;
     
    // +++++++++++++++++++++++++++++++++++++++++++++
    // ++++++++++ MODIFICATION DU MESSAGE ++++++++++
     
    $message = "\nIP : $ip\n\nNom : $form_element0\n\nE-mail : $form_element1\n\nObjet : $form_element2\n\nMessage : $form_element3\n\nInterlocuteur : $form_element4\n\nFichier compressé : $name\n\n $form_element6\n\nCopie du message : $form_element7\n\nInscriptions Newsletter : $form_element8\n";
     
    // ---------- FIN DES MODIFICATIONS DU MESSAGE ----------
    // ------------------------------------------------------
     
    $headers="From: $from\n";if (file_exists($tmp_name)){
    if(is_uploaded_file($tmp_name)){
    $file = fopen($tmp_name,'rb');
    $data = fread($file,filesize($tmp_name));
    fclose($file);
    $data = chunk_split(base64_encode($data));
     
    }
     
    $headers .= "MIME-Version: 1.0\n" .
    "Content-Type: multipart/mixed;\n";
    $headers .= " boundary=\"{$mime_boundary}\"";
     
    $message = "This is a multi-part message in MIME format.\n\n" .
    "--{$mime_boundary}\n" .
    "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
    "Content-Transfer-Encoding: 7bit\n\n" .
    $message . "\n\n"; 
     
    $message .= "--{$mime_boundary}\n" .
    "Content-Type: {$type};\n" .
    " name=\"{$name}\"\n" .
    "Content-Transfer-Encoding: base64\n\n" .
    $data . "\n\n" .
    "--{$mime_boundary}--\n"; 
    }
     
     
    // +++++++++++++++++++++++++++++++++++++++++++++
    // ++++++++++ AJOUT DU MAIL EN RETOUR ++++++++++
     
    $messageret = "\nIP : $ip\n\nNom : $form_element0\n\nE-mail : $form_element1\n\nObjet : $form_element2\n\nMessage : $form_element3\n\nInterlocuteur : $form_element4\n\nFichier compressé : $name\n";
     
    $emailret = $form_element1;
     
    if ($_SESSION['form_element7'] == "Oui") { mail($emailret, "Copie automatique de votre envoie sur le formulaire de la f&ecirc;te de la musique", $messageret, "From: $form_element1\r");
    }
    // ---------- FIN DE L'AJOUT DU MAIL EN RETOUR ----------
    // ------------------------------------------------------
     
     
    // ++++++++++++++++++++++++++++++++++++++++++++++++++
    // ++++++++++ INSCRIPTIONS A LA NEWSLETTER ++++++++++
     
    if ($_SESSION['form_element8'] == "Oui") { 
     
        header('location: http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9&email='.$_POST['Email'].'&pommo_signup=true');
    }
     
    // ---------- FIN DE L'INSCRIPTION A LA NEWSLETTER ----------
    // ----------------------------------------------------------
     
     
    SESSION_UNREGISTER('form_element0');
    SESSION_UNREGISTER('form_element1');
    SESSION_UNREGISTER('form_element2');
    SESSION_UNREGISTER('form_element3');
    SESSION_UNREGISTER('form_element4');
    SESSION_UNREGISTER('form_element5');
    SESSION_UNREGISTER('form_element6');
    SESSION_UNREGISTER('form_element7');
    SESSION_UNREGISTER('form_element8');
    if (@mail($mailsend, $subject, $message, $headers)) {$_SESSION["formMessage"] = "<font color=green size=2>        Merci, votre courrier &eacute;lectronique a bien &eacute;t&eacute; envoy&eacute;.
    </font>";
    header("Location: ../contact.php");
     
    } else {
    $_SESSION["formMessage"] = "Im sorry, there seems to have been an error trying to send your email. Please try again.";
    header("Location: ../contact.php");
    }
    }
    ?>
    Et enfin, le code pour un form séparé à l'inscription de la newsletter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Pour recevoir la Newslettre de la fête de la musique de La Chaux-de-Fonds
     
    <form method="post" action="http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9" name="signup">
     
    <!--    Email field must be named "Email" -->
     
    <label for="email"><strong>Entrez votre Email:</strong></label>
    <input type="text" name="Email" id="email" maxlength="60" />
     
    <input type="hidden" name="pommo_signup" value="true" />
    <input type="submit" class='formlienbouton' value="Inscription" />
    </form>
    Séparément, tout fonctionne. Je vais encore essayer de remplacer "form_element1" par "Email" et je vous redis. Mais, c'est vrai que je suis un très gros novice en php.

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    A mon sens il n'y a pas à se préoccuper de la page newsletter, cette page n'a rien avoir avec ton problème.

    Ensuite, d'après ce que je vois, c'est ta page d'envois qui récupère les données du formulaire de contact avec les $_POST['form_element*'].

    Donc si dans ce formulaire il y a le checkbox (comme j'ai dis précédemment), tu devrais obtenir cette info au même titre que le nom, le message, etc ...

    A partir de là, dans cette même page je vois que c'est là qu'est envoyé le message (avec mail() ).
    Et bien c'est dans cette même page où tu effectue la requête pour mettre la newsletter, un :
    UPDATE table SET newsletter = 1 WHERE user = xxx
    Ca devrait être la même requête (même code) qu'il devrait avoir dans la newsletter d'ailleurs.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    La page Newsletter fais partie de mon hébergeur, je ne peux pas la modifier.

    J'ai essayé de remplacer mon "form_element1" par "Email" ça n'a rien changé. J'en ai profité par la même occasion de remplacer tout mes "form_elementX" par des noms un peu plus facile à comprendre.

    En fait, je dois mélanger deux form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    form action="./sendcontact/sendcontact.php"
                  method="post"
    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9" name="signup">
    donc voilà, je ne sais pas comment le faire.

    EDIT :

    En fait, je crois avoir compris pourquoi ça marche pas, mon code ci-dessous ne se fait tous simplement pas parce qu'il y a déja eu résultat sur l'envoie et du coup je ne passe pas par là. Faudrait que je puisse remplacer le Header par autre chose.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // ++++++++++++++++++++++++++++++++++++++++++++++++++
    // ++++++++++ INSCRIPTIONS A LA NEWSLETTER ++++++++++
     
    if ($_SESSION['NewsLetter'] == "Oui") { 
     
        header('location: http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9&email='.$_POST['Email'].'&pommo_signup=true');
    }
     
    // ---------- FIN DE L'INSCRIPTION A LA NEWSLETTER ----------
    // ----------------------------------------------------------

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    La page Newsletter fais partie de mon hébergeur, je ne peux pas la modifier.
    Et bien justement, ne modifie rien, c'est d'ailleurs ce que je t'ai dis, cette page newsletter n'a rien à voir avec ton problème.

    Je ne te comprends pas, ça doit être simple pourtant.
    1/ On reçois en POST[] que la personne à coché la case 'newsletter'
    2/ On fait la requête (update)
    C'est tout.

    D'ailleurs, on ne vois nulle part où ce trouve cette requête, comment veux mettre à jour cette donnée si tu ne fais pas la requête ?


    Ca devrait être là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // ++++++++++ INSCRIPTIONS A LA NEWSLETTER ++++++++++
     
    if ($_SESSION['form_element8'] == "Oui") { 
        // Requête SQL
        mysql_query("UPDATE table SET newsletter = 1 WHERE  user_id = xxx");
    }
    // ---------- FIN DE L'INSCRIPTION A LA NEWSLETTER ----------
    // ----------------------------------------------------------
    Sans de header().

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Justement, je ne sais pas comment la faire cette requête, c'est ce que j'essayais de faire avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('location: <a href="http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9&email=" target="_blank">http://admin.lafetedelamusique.ch/ma...f38ecf9&email=</a>'.$_POST['Email'].'&pommo_signup=true');

  12. #12
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Justement, je ne sais pas comment la faire cette requête, c'est ce que j'essayais de faire avec :
    Ok.
    C'est bien pour ça que je trouvais étrange ton histoire de header().
    Tu n'as pas a faire de header, normalement tout est déjà en place.

    Maintenant reste à faire cette requête.
    Tu devrais pouvoir récupérer le code (le SQL) dans ta page newsletter, elle devrait y être. C'est juste le code qu'il faut copier et coller dans la page d'envois (à la place du header).

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Pffff..... j'arrive à rien
    Je ne trouve nul part comment avoir accès à ce code SQL

    Je vais attendre lundi une réponse de mon hébergeur à qui j'ai envoyé un courrier. Là, j'en ai ma claque, ça fais 3 jours que je passe mon temps à écumer le net à la recherche d'une réponse.

    Merci en tout cas pour tous le temps passé à me répondre.

  14. #14
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Je ne trouve nul part comment avoir accès à ce code SQL
    Tu ne parviens pas à obtenir le code de cette page newsletter : problème d'identification
    Ou c'est que tu ne parviens pas à repérer juste le code SQL ? (peut être est ce sur une autre page)

    En tout cas, faire la requête SQL me semble le plus simple, et de même que plus fiable.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Halala... comment ne pas trop se casser la tête pour répondre. Voilà ce que m'a répondu le service support de mon hébergeur :

    Malheureusement, notre outil de newsletter n'a pas été prévu pour un tel fonctionnement.

    Le plus simple serait de faire l'inscription en deux étape, la première avec votre formulaire, puis la seconde avec la demande d'adhésion à la newsletter, que vous pouvez mettre en oeuvre en modifiant le formulaire d'inscription que nous proposons.

    Sinon, il vous faudra trouver le moyen pour que votre script fasse lui même la requête d'inscription à la newsletter, en utilisant les données fournies dans le formulaire d'inscription.
    Donc, bref, je ne suis pas plus avancé.

    Faut que je trouve un moyen par mes propres moyens de convertir le code du formulaire d'inscriptions en php ET automatique.

    Ce code ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form method="post" action="http://admin.lafetedelamusique.ch/mail/newsletter/user/process.php?sExternalid=2b80d42f935f622a83aeb2b17f38ecf9">
    <input type="hidden" name="formSubmitted" value="1" />
     
     
    <label class="required" for="email"><strong>Votre Email:</strong></label>
    <input type="text" size="32" maxlength="60" name="Email" id="email" value="" />
     
    <input type="hidden" name="pommo_signup" value="true" />
    <input type="submit" name="pommo_signup" value="S'abonner" />
     
    </form>

  16. #16
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Bon, et t'as vraiment pas du tout accès à la requête
    Faut pas leur en vouloir, car ce serait suicidaire (si on peu dire) pour eux de te permettre de faire une requête SQL sur leur application.

    Citation Envoyé par RunCodePhp
    Dans cette éventualité, ça doit être possible, et Curl serait surement plus adapté que des header(), car on peu envoyer des paramètres en POST.
    Je te fais la même réponse : Curl
    Ce n'est pas temps d'envoyer des paramètres en post, mais si je ne dis pas de bêtises, Curl permet de "soumettre" un formulaire de manière transparente.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Ben j'ai pas gagné, Curl je ne cossais que l'orthographe

  18. #18
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par srame Voir le message
    Ben j'ai pas gagné, Curl je ne cossais que l'orthographe
    Bon, ben c'est l'moment ou jamais quoi

    A part si une personne vienne te donner un code fonctionnel, ce qui serait l'idéal, je ne pourrais pas faire plus que te donner quelques explication assez générales, pour la simple raison que j'ai dû faire qu'1 seule fois un code en curl, et en plus ça fait pas mal de temps, et il est très éloigné de ton cas de figure.

    En 1er je dirais que ce n'est pas le bout du monde, faut te référer à des codes existant (Manuel php par exemple).
    Il y a un petit court ici aussi : PHP : l'extension cURL

    Il y a cependant plusieurs contextes pour utiliser Curl, faudra repérer le bon.

    Donc si j'ai bien saisie ton cas, tu as déjà sous le coude le code du formulaire qui est en fait une sorte de "matrice", c'est en se basant sur celui ci qu'il sera possible de construire le code Curl.
    Il ne faut pas le mettre nulle part (le formulaire), où il s'il existe déjà, ce n'est pas lui qu'il faut interroger en tout cas, mais directement leur service.

    Le code Curl faudra le mettre là où il fallait mettre la requête SQL. (là où tu souhaitais mettre un header).

    Il y a principalement 2 aspects :
    - Envoyer une requête HTTP Curl (avec 1 paramètres GET : sExternalid) vers cette URL : http://admin.lafetedelamusique.ch/ma...aeb2b17f38ecf9
    - Ensuite renseigner à dans Curl les paramètre + valeur qui seront envoyés en POST.
    Les paramètres sont :
    formSubmitted : 1
    Email : (indiquer une adresse mail)
    pommo_signup : true


    Un doute cependant concernant le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="hidden" name="pommo_signup" value="true" />
    <input type="submit" name="pommo_signup" value="S'abonner" />
    Le champ caché et le bouton portent tous 2 le même nom, mais pas la même valeur, alors est ce normal ? Une petite erreur en le postant ?
    S'il n'y a pas d'erreur théoriquement c'est le dernier qui l'emporte, soit la valeur : S'abonner (au lieu de true).
    Sinon faut changer par : true


    Petite parenthèse cependant.
    Pour faire des essais, tu pourrais te créer une page (genre newsletter_curl) et pointer sur celle ci (URL).
    Ensuite mettre un code Php qui va récupérer le paramètre GET (sExternalid) et ceux en POST (formSubmitted, Email, pommo_signup).
    Ensuite, pourquoi pas faire une simple écriture dans un fichier pour confirmer que tout ça a bien été effectué.
    Ceci va t'éviter de "bombarder" leur serveur avec des essai plus ou moins fructueux, et polluer la newsletter par conséquent.
    Une que fois cette simulation fonctionne comme prévu, suffit de mettre la bonne URL (http://...../process.php?sExternalid=......)


    En espérant que ceci te soit utile, et pas trop à coté de la plaque

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Mdrrr... j'ai comme l'impression de parler avec un chinois là

    Je vais essayer de trouver tout ce qu'il me faut et je re-posterai ici si je trouve ou pas quelques chose. En tout cas, Merci beaucoup.


    EDIT : Je viens d'aller voir le lien sur la par d'explication de Curl... et bien je vais déjà aller me préparer un gros pot de café

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    argg.. j'ai tenté de voir comment marche curl et voilà ce que j'obtiens :

    Access forbidden!

    You don't have permission to access the requested object. It is either read-protected or not readable by the server.

    If you think this is a server error, please contact the webmaster.

    Error 403

    www.lafetedelamusique.ch
    Tue Feb 9 17:32:34 2010
    Apache
    Mon code de test curl auquel je ne comprend 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
    42
    43
     
    <?php
    // Pour assurer la compatibilité avec les versions PHP 4
    if (!function_exists('http_build_query')) {
        function http_build_query($formdata, $numeric_prefix = NULL, $arg_separator = '', $parent_key = '') {
            $ret = array();
            if (is_array($formdata)) {
                if (empty($arg_separator)) {
                    $arg_separator = ini_get('arg_separator.output');
                }
                foreach ($formdata as $k => $v) {
                    if (is_int($k) && $numeric_prefix != NULL) {
                        $k = $numeric_prefix . $k;
                    }
                    if ($parent_key != '') {
                        $k = sprintf('%s[%s]', $parent_key, $k);
                    }
                    if (is_array($v)) {
                        array_push($ret, http_build_query($v, NULL, $arg_separator, $k));
                    } elseif (is_object($v)) {
                        array_push($ret, http_build_query(get_object_vars($v), NULL, $arg_separator, $k));
                    } else {
                        array_push($ret, urlencode($k) . '=' . urlencode($v));
                    }
                }
            }
            return implode($arg_separator, $ret);
        }
    }
     
    // Faire suivre les données POST à une autre page
    $ch = curl_init('http://www.lafetedelamusique.ch/newslettre/newslettre.php');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $ret = curl_exec($ch);
    if (!$ret) {
        echo curl_error($ch);
    } else {
        echo $ret;
    }
    curl_close($ch);
    ?>

Discussions similaires

  1. [VB]Relation entre deux form.
    Par dann dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 20/03/2006, 09h07
  2. [VB.NET] Passer une valeur de control entre deux form
    Par TheMacleod dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/12/2005, 11h07
  3. [VB .Net][Forms] Interaction entre deux forms
    Par plasticgoat dans le forum Windows Forms
    Réponses: 7
    Dernier message: 24/08/2005, 13h14
  4. comment faire communiquer deux form MDI?
    Par eponette dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2005, 12h20
  5. [VB.NET] Perte de focus entre deux form
    Par toniolol dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/07/2005, 08h00

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