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 :

Submit : faire apparaitre la partie d'une page sur une nouvelle page (+mailto)


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut Submit : faire apparaitre la partie d'une page sur une nouvelle page (+mailto)
    Bonsoir,

    j'ai une page (appelons la formulaire.html) qui contient un formulaire avec des textarea (du genre nom, prénom, ...).

    Lorsque je valide, ca m'amene sur une page (validation.php). Cette page, tout comme la précédente, contient un menu, banniere, etc.. et un corps de page. C'est donc dans ce corps de page que les résultats de mon formulaire vont s'afficher
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $nom = $_POST['textfield1'] ;
    echo( "Nom de l'entreprise: <b>".$nom."</b><br>\n" ) ;
    ?>
    Donc tout simplement, lorsque je tape dans ma zone de texte1 mon nom (disons "xxxx"), dans ma page validation.php j'obtient bien "Nom de l'entreprise: xxxx".

    Et voila où je veux en venir :

    En dessous de ces données ainsi récupérées, je marque quelque chose du genre <veuillez vérifier vos données et si celle ci sont exactes, cliquez sur le bouton "confirmer" >

    En cliquant sur ce bouton en question, seul la partie contenant le résultat de mon formulaire apparaitrait sur une nouvelle page(donc toute ma partie en php et quelques lignes de html avec le début du code en php). Pourquoi faire ? C'est une autre histoire mais en gros c'est pour la transformer en pdf.

    De plus, en cliquant sur ce bouton, cette même zone me serait envoyéé par email.

    J'ai donc essayé de mettre cette zone qui m'interesse etouré de la balise "form" avec une action=mailto, et un bouton submit, mais quand je valide, aucun mail ne m'est envoyé. Il y a juste une petite fenetre qui s'ouvre me disant :
    ce formulaire est envoyé par courier electronique
    Ce formulaire permettra au destinataire de connaitre votre adresse ... blablabla
    Vous pouvez continuer ou annuler la soumission de ce formulaire.
    Et je n'ai bien entendu aucune idée de comment faire pour qu'uniquement la zone en question qui m'interesse apparaisse sur une nouvelle page (et donc au passage l'envoyer en meme temps a une adresse email).

    S'il vous plait, aidez moi

    edit : j'ai fait mes tests sous wampserver

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    pour récupérer les données qui t'intéresses tu peux utiliser des input de type hidden envoyant les données via formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $mavar = "Nom de l'entreprise: <b>".$nom."</b><br>\n" ) ;
    echo $mavar;
     
    <form blablabla >
    <input type="hidden" name="var"/>
    <input type="submit" />
    </form>
    sur la page suivante tu fait ton traitement.

    pour ce qui est du mailto, il ne sert pas à envoyer un email mais à ouvrir le client de messagerie pour envoyer un email il faut utiliser la fonction mail() mais étant en local il faudra que tu configure le serveur d'envoi dans le php.conf il me semble.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Parfait pour la fonction mail(), merci
    Pour le reste je ne suis pas sur d'avoir tout compris, je vais donc détaillé mon message en y mettant ce que je pense avoir compris.

    J'ai donc ma premiere page qui contient le formulaire a remplir :
    formulaire.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <form id="form1" name="form1" method="post" action="validation.php">
    <h2>Niveau d'étude requis</h2>
    <textarea name="textfield1" rows="1"  id="textfield1"></textarea><br />
    <br />
     
    <h2>Nom de l'entreprise</h2>
    <textarea name="textfield2" rows="1" id="textfield2"></textarea><br />
    <br /> 
     
    <center><input name="button2" id="button2" value="Valider" type="submit"></center>
     
    </form>
    Quand l'utilisateur valide le formulaire il attérit donc sur la page validation.php. Cette page va lui montrer ce qu'il a entré dans les zones de texte, et si il voit que tout va bien, il pourra valider ce message en cliquant sur un bouton.
    validation.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <form id="form2" name="form2" method="post" action="pagefinal.php">
    <?php
    $niveau = $_POST['textfield1'] ;
    $entreprise = $_POST['textfield2'] ;
     
    echo( "Niveau d'étude: <b>".$niveau."</b><br /><br />\n" ) ;
    echo( "Nom de l'entreprise: <b>".$entreprise."</b><br>\n" ) ;
     
    ?>
     
    <input type="hidden" name="var"/>
    <input type="submit" />
    </form>
    Comme vous pouvez voir, lorsqu'il va relire ce qu'il a écris et valider, ca va l'amener sur une page qui s'appel "pagefinal.php". Sur cette page je vais uniquement récupérer les résultats du formulaire (et il y aura aussi un peu de html pour décorer). Cette page se transformera par la suite en pdf (via fpdf ou tcpdf ou autre, je n'ai pas encore trop approfondit le sujet).
    Puis (ou en meme temps, ca serait mieux) ce pdf sera envoyé sur mon adresse email (donc ca je sais le faire maintenant).

    Y a pas un truc qui cloche dans mon raisonnement (et/ou mon code) ?

  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

    Quand l'utilisateur valide le formulaire il attérit donc sur la page validation.php. Cette page va lui montrer ce qu'il a entré dans les zones de texte, et si il voit que tout va bien, il pourra valider ce message en cliquant sur un bouton.
    Pourquoi offrir une pré-visualisation ?
    N'est ce pas te compliquer la vie ?

    Si tu prends le fonctionnement normal d'un client de messagerie (Outlook, Thunderbird) : on l'ouvre, on saisie son message, et on clique sur "Envoyer" ... et ça part, sans pré-visualisation.


    Si tu veux faire une pré-visualisation, un truc simple à faire (et sympathique) c'est d'utiliser une pincée de Javascript, avec un soupçon de Css.
    Dans ta page ou la personne saisie son message, tu récupère le contenu du textarea en JS, ensuite, tu l'envoie dans une DIV présente dans le code mais qui est au départ cachée (display : none), puis tu affiche cette DIV
    (Un Css du genre -> display: block; position:absolute; top:10px; left:10px).
    Un fausse popup quoi.

    Du coup, plus besoin de rediriger vers une autre page Php de prévisualisation, tu peux faire en sorte de recharger la même page au "submit".
    Même pas besoin de "pagefinal.php".
    Tu fais tout dans une seule et même page : Créatrion du pdf, envoie de mail.
    Suffit de vérifier ce que tu reçois en POST dans cette page.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    En effet, la prévisualisation n'est pas indispensable. Mais je pensais qu'afficher cette page était indispensable pour transformer le résultat de mon formulaire en pdf.

    Citation Envoyé par RunCodePhp Voir le message
    Du coup, plus besoin de rediriger vers une autre page Php de prévisualisation, tu peux faire en sorte de recharger la même page au "submit".
    Même pas besoin de "pagefinal.php".
    Tu fais tout dans une seule et même page : Créatrion du pdf, envoie de mail.
    Suffit de vérifier ce que tu reçois en POST dans cette page.
    Donc la on en vient donc a mon problème :
    - Comment faire pour qu'uniquement mon formulaire et le petit logo que j'ai rajouté soient transformés en pdf en cliquand sur le bouton de validation ? Ce que je veux dire, c'est dans ma FORM, je met quoi comme action ?
    (je compte me servir de fpdf si ca peut vous aider, sauf si vous avez mieux a me proposer).

    Si vous voulez un eclaircissement, voici mon formulaire que je viens de mettre en ligne pour vous aider a m'aider :mrgreen

    Et donc ensuite quand vous allez le valider, vous allez arriver sur la page validation.php (oubliez donc sur cette derniere page le bouton de soumission en bas, je le retirerai).
    Ce que je souhaite c'est que ce soit cette page, validation.php, qui se transforme en pdf et soit envoyé par mail. Mais pas toute la page, uniquement le corps de la page (donc le résultat du formulaire +logo +l'adresse de l'IUP uniquement).

    Donc si j'ai bien compris, c'est au niveau du submit de la page offrestagepdf.php que tout ca se jouer.. mais comment ?

    Si je ne suis pas assez clair dites le moi. merci encore

  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 bien peut être un code dans le genre :
    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
     
    <?php
    if (isset($_POST['action']) && $_POST['action'] == 'mail_stage') {
    	// On vérifie les données reçues en POST
    	$machin = $_POST['machin'];
    	// etc ...
     
    	// Code qui crée le PDF
    	// Code qui envoie le mail avec le pdf : retourne $mail_send (true ou false)
     
    	$statut = ($mail_send) ? 'envoye' : 'non';
    	// Redirection
    	header('Location: offrestagepdf.php?mail_statut='.$statut);
    	exit();
    }
    ?>
     
    <!DOCTYPE html ... etc ... >
    <html>
    <head>
    ... etc ...
    </head>
    <body bgcolor="#CCCCCC">
     
    <?php
    if (isset($_GET['mail_statut']) && $_GET['mail_statut'] == 'envoye') {
    	// Ok : message envoyé
    	echo '<p>bla bla bla</p>';
    }
    else if (isset($_GET['mail_statut']) && $_GET['mail_statut'] == 'non') {
    	// Erreur : message non envoyé
    	echo '<p>bla bla bla</p>';
    }
    ?>
     
    <!-- On recharge la même page : offrestagepdf.php -->
    <form id="form1" name="form1" method="post" action="offrestagepdf.php">
     
    <h2>Niveau détude requis</h2>
    <textarea name="textfield1" rows="1"  id="textfield1"></textarea>
    <br />
     
    ... etc ...
     
    <input type="hidden" name="action" value="mail_stage" />
    <input name="button" id="button" value="Valider" type="submit" />
     
    </form>
     
    </body>
    </html>
    Dans cet exemple de code (simplifié), on traite en tout 1er le cas ou le formulaire est validé.
    Si ce n'est pas le cas, rien ne sera exécuté.
    Si c'est le cas, alors on vérifie les données reçues en POST, si c'est Ok on crée le PDF + envoie du mail.
    Si le mail est correctement envoyé, on fait une redirection (header) sur cette même page (pour éviter d'envoyer 2 fois le mail) avec un message de retour si ça été envoyé ou pas.

    Pour savoir si la personne a validé le formulaire, il y a un champ caché au nom de "action", valeur "mail_stage".

    Ici, on fait tout sur la même page.

    Yapluka


    PS : Faudrait un système (du genre capcha) pour éviter les spam.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Réponses: 6
    Dernier message: 10/01/2012, 18h08
  3. Réponses: 1
    Dernier message: 30/08/2011, 09h53
  4. Réponses: 3
    Dernier message: 15/04/2009, 07h30
  5. Réponses: 9
    Dernier message: 23/06/2008, 15h54

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