[Résolu] bouton onclick ou submit: deux actions

cpalocpalo Member
février 2014 modifié dans Entraide
Bonjour,

je tourne un peu en rond; alors que la solution ne doit pas être très loin.
J'ai un formulaire et en validant cela envoie les données par mail. Pas de problème.
J'avais un bouton en-dessous qui en cliquant nous redirige sur une nouvelle page;.pas de pb non plus.
[== PHP ==]
 <form method="post" action="<?php $plxShow->urlRewrite('?static4/envoi') ?>">
 
            <p><label for="nom">Votre nom:</label>
            <input type="text" name="nom" required /></p>
            <p><label for=prénom">Votre prénom:</label>
            <input type="text" name="prenom" required /></p>
            <p><label for="email">Votre email:</label>
            <input type="email" name="email" required /></p>
</form>
[== PHP ==]
<?php 

$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$email = $_POST['email'];

$destinataire = "monAdresse@fai.fr";
$subject = "Formulaire";

$mailHeaders = "From: Mon test de formulaire<> \n";
$mailHeaders .= "Reply-To: $email\n\n"; 
$mailHeaders .='Content-Type: text/plain; charset="utf-8"'."\n"; 

$mailContent = "Message de : $prenom\n";
$mailContent = "Message de : $nom\n";
$mailContent .= "Adresse : $email\n";

mail($destinataire, $subject, $mailContent, $mailHeaders);

?>
[== PHP ==]
<div class="btn-cart">            
               <a href="<?php $plxShow->urlRewrite('?static3/page') ?>" title="Votre page">Voir votre page</a>                
</div>

Je n'affiche donc plus le bouton submit du formulaire.
J'ai déplacé la div btn-cart dans la section <form></form>

J'ai essayé onclick, onsubmit mais je n'arrive pas à avoir les deux actions avec un seul bouton:, à savoir:
quand je clique dessus, cela envoie par mail les données saisies et nous ouvre la page static3/panier.

Alors je veux bien quelques idées

Merci d'avance

Cordialement

Réponses

  • Après ta fonction mail (mail($destinataire, $subject, $mailContent, $mailHeaders);) mets un header qui te redirigera vers la page que tu voudras.
  • cpalocpalo Member
    février 2014 modifié
    Bonjour,

    ça fonctionne lorsque je teste en dehors de pluxml
    [== PHP ==]
    <?php 
    
    $prenom = $_POST['prenom'];
    $nom = $_POST['nom'];
    $email = $_POST['email'];
    
    $reception = "monadresse@fai.fr";
    $subject = "Formulaire";
    
    $mailHeaders = "From: Mon test de formulaire<> \n";
    $mailHeaders .= "Reply-To: $email\n\n"; 
    $mailHeaders .='Content-Type: text/plain; charset="utf-8"'."\n"; 
    
    $mailContent = "Message de : $prenom, $nom\n";
    $mailContent .= "Adresse : $email\n";
    
    mail($reception, $subject, $mailContent, $mailHeaders);
    
    header('Location: test-nouvellePage.php');
    
    ?>
    

    dans pluxml, ce code fonctionne aussi:
    [== PHP ==]
     <div class="btn-cart ">
                    <a href="<?php $plxShow->urlRewrite('?static3/panier') ?>" title="Votre panier">Voir votre panier et commander</a>
     </div>
    

    Par contre dès que je transfère dans pluxml, cela ne fonctionne plus:
    [== PHP ==]
    <form method="post" action="<?php $plxShow->urlRewrite('?static4/envoi') ?>"
    
    .......
    
    </form>
    
    <!-- pour envoi.php -->
    
    <? php
    ........
    
    header('Location:<?php $plxShow->urlRewrite(\'?static3/panier\') ?>');
    
    ?>
    
    
    

    J'obtiens ces deux messages d'erreur:
    sur le web:
    Not Found
    The requested URL /boutique/< was not found on this server.

    et en local:
    Accès interdit!
    Vous n'avez pas le droit d'accéder à l'objet demandé. Soit celui-ci est protégé, soit il ne peut être lu par le serveur.
  • A la place de
    header('Location:<?php $plxShow->urlRewrite(\'?static3/panier\') ?>');
    
    mets
    header('Location:'.$plxShow->urlRewrite('?static3/panier'));
    
  • cpalocpalo Member
    février 2014 modifié
    En local, affichage d'une page avec:
    '); header('Location:'.$plxShow->urlRewrite('?static3/panier')); ?>

    et sur le web:
    Not Found
    The requested URL /boutique/< was not found on this server.

    en debut de fichier php, j'ai l'instruction:
    <?php if(!defined('PLX_ROOT')) exit; ?>
    mais même sans, cela ne fonctionnait pas
  • Copie/colle le code complet de ta page située sur ton serveur distant.
  • cpalocpalo Member
    février 2014 modifié
    Pour essayer de trouver, j'ai reproduit le formulaire sur mon site perso ( un pluxml de base sans modifs des configurations initiales ) et en simplifiant le submit à seulement la redirection sur une page.
    Même résultat : ici

    Le code du formulaire dans la sidebar:
    [== PHP ==]
    <!-- Début du test du formulaire -->
    <div class="block-full radius-shadow widget">
            
                <form class="form-prescripteur" action="&lt;?php $plxShow-&gt;urlRewrite('?static17/envoi') ?&gt;" method="post">
                    <p><label for="nom">Votre nom et pr&eacute;nom:</label> <input name="nom" required="" type="text" /></p>
                    <p><label for="email">Votre email:</label> <input name="email" required="" type="email" /></p>
                    <p><input id="envoi" type="submit" value="Submit: Voir le thème" /></p>
                </form>
                
                <br />
                
                <div class="btn-cart">           
                    <a href="<?php $plxShow->urlRewrite('?static4/theme-pluxml') ?>" title="Votre panier">Lien direct: Voir le thème</a>               
                </div>
                
    </div>
    

    le template de la page statique static-envoi.php:
    [== PHP ==]
    ?php include(dirname(__FILE__).'/header-boutique.php'); ?>
    
    <?php include(dirname(__FILE__).'/envoi.php'); ?>
    
    <?php include(dirname(__FILE__).'/footer-boutique.php'); ?>
    

    et le fichier envoi.php:
    [== PHP ==]
    <? php 
    header('Location:<?php $plxShow->urlRewrite(\'?static4/theme-pluxml\') ?>'); 
    ?>
    

    J'ai essayé aussi le fichier envoi.php avec ta correction, et pareil
  • Jerry WhamJerry Wham Member
    février 2014 modifié
    Le fichier template de la page statique, situé dans le dossier de ton thème, doit s'appeler static-envoi.php (et non statique-envoi).
    La page statique que tu crées à partir de ton panneau d'administration doit s'appeler envoi avec comme url envoi.
    Et à mon avis tu ne nous a pas copié tout le code du fichier envoi.php...

    Ta page de démo ne fonctionne pas.
  • erreur d'étourderie mais le template s'appelle bien static-envoi.php

    le fichier envoi.php est bien celui-là

    de quelle page demo parles-tu parce que le lien du bouton "lien direct: voir le thème" ouvre bien la page

    et la page statique créée dans le panneau d'administration s'appelle bien envoi avec l'url envoi et le template static-envoi

    Par contre une erreur( un copier-coller maleureux) dans le template static-envoi.php mais cela ne change rien au message d'erreur:
    Not Found
    The requested URL /< was not found on this server.
    [== PHP ==]
    ?php include(dirname(__FILE__).'/header.php'); ?>
    
    <?php include(dirname(__FILE__).'/envoi.php'); ?>
    
    <?php include(dirname(__FILE__).'/footer.php'); ?>
    
    "
  • J'ai essayé aussi avec un static-envoi.php comme ici:
    [== PHP ==]
    <?php include(dirname(__FILE__).'/envoi.php'); ?>
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut

    Il y a un probleme avec le contenu du parametre action de la balise form de ton formulaire
    action="&lt;?php $plxShow-&gt;urlRewrite('?static17/envoi') ?&gt;"
    

    Il te faut un lien bien formé et pas des équivalents html genre < et des bouts d'instructions php

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonsoir,

    Merci pour votre patience et toutes mes excuses pour ce copier coller de bout de code qui a mal fonctionné ..

    balise form:
     <form  action="<?php $plxShow->urlRewrite('?static17/envoi') ?>" method="post">
    

    fichier envoi.php
    <? php 
    header('Location:'.$plxShow->urlRewrite('?static4/theme-pluxml'));
    ?>
    

    J'obtiens ce message:
    Parse error: syntax error, unexpected T_STRING in /themes/myPlx-Fixed-2013-10-22/envoi.php on line 3
    La ligne 3 étant bien la ligne de header(location....
  • StéphaneStéphane Member, Former PluXml Project Manager
    Remplace $plxShow par $plxMotor dans la ligne avec header('Location....');

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • le même message d'erreur
  • StéphaneStéphane Member, Former PluXml Project Manager
    Supprime l'espace entre <? et php

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonjour

    Encore un grand merci!!
    ça fonctionne.;
    y compris le point de départ de ce post: envoi des données du formulaire par mail et redirection vers une page.

    Bonne journée
    très cordialement
Connectez-vous ou Inscrivez-vous pour répondre.