1. #1
    dennisgodderie's Avatar
    Registered
    09/02/06
    Location
    Zutendaal
    Posts
    408
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)

    formulier met 2 acties

    Ik heb een website waar men via een invulformulier een aanvraag kan indienen om een ideeënboek (bouwen) te downloaden.
    Vroeger werkte zij zo dat het formulier ingevuld werd, dat kwam in de mailbox terecht en dan verstuurden ze het ideeënboek per mail. Maar om het iets gemakkelijker te maken vroeger ze om ervoor te zorgen dat ze na het invullen van het formulier het ideeënboek konden downloaden.
    Dat gebeurt nu ook, plus de mail komt nog altijd aan omdat ze de gegevens van de aanvragen uiteraard willen hebben.
    Hoe het nu gebeurt, bestaat de aanvraag uit 2 pagina's, nl. brochure.php en brochure_form.tpl.html.

    brochure.php ziet er als volgt uit:

    Code:
    <?php</p><p>require_once("classes/phpmailer/class.phpmailer.php");</p><p>$smarty_mail = new Smarty;
    $smarty_mail->template_dir = 'templates/mail';
    $smarty_mail->compile_dir  = 'pages/templates_c';</p><p>if ( isset($_POST['submit']) )
    {
    $error = '';
    print_r($error);
        if (!trim($_POST['name'])) $error['name']=true;
        if (!check_email($_POST['email']))  $error['email']=true;
        if (!trim($_POST['phone'])) $error['phone']=true;
    if (!trim($_POST['adres'])) $error['adres']=true;
        if (!trim($_POST['postcode'])) $error['postcode']=true;
    if (!trim($_POST['gemeente'])) $error['gemeente']=true;
    $_POST['name'] = stripslashes($_POST['name']);
        $_POST['message'] = stripslashes($_POST['message']);</p><p>    if (!$error)
        {
            $contact = $_POST;
            $contact['ip'] = $_SERVER['REMOTE_ADDR'];
            $contact['host'] = gethostbyaddr( $contact['ip']);</p><p>        $smarty_mail->assign("contact", $contact);
            $message = $smarty_mail->fetch("mail_brochure.tpl.html");</p><p> $subject = "brochure aanvraag";
    if( sendemail(MAIL_FROM_NAME, MAIL_FROM, $_POST['name'], $_POST['email'], $subject, $message, "HTML", "", ""))
    {
    $smarty->assign("send", true);
    }</p><p>    }
        $smarty->assign("error",$error);
        $smarty->assign("set", $_POST);
    }
    $_SESSION['scode'] = get_code();
    $main_content_template = "brochure.tpl.html";
    $breadcrumbs->add('gratis ideeënboek', '');
    $smarty->assign("googlemaps", true);
    ?>
    en brochure_form.tpl.html ziet er als volgt uit:


    Code:
    {if $send}</p><p>	<script type="text/javascript">
        <!--
        window.location = "http://www.immobiliaregroup.be/ideeenboek.pdf"
        //-->
        </script></p><p>    <h2>Bedankt voor uw aanvraag!</h2>
        <p>Wordt u niet doorverwezen, dan kan u via onderstaande link het ideeënboek downloaden.</p>
        <p><input tupe="button" class="btn" value="download het gratis ideeënboek" onclick="goto('http://www.immobiliaregroup.be/ideeenboek.pdf&quot; /></p>
    {else}</p><p>    Vul onderstaand formulier in en download het gratis ideeënboek. Nadat u de gegevens heeft ingegeven wordt u automatisch doorverwezen naar het ideeënboek.
        
    <i><font size="1">Velden aangeduid met een * zijn verplicht in te vullen.</i></p><p>    {assign var=err_img value="<img src=img/error.gif /> "}
        {assign var=required value="<span class=\"required\">*</span>"}	</p><p>    <form action="" method="POST"></p><p>    {if $error}
            <b>{#err#}</b>
            {if $error.name}<img src="{$smarty.const.FOLDER}img/error.gif" /> Gelieve uw naam en voornaam in te vullen.
    {/if}
            {if $error.phone}<img src="{$smarty.const.FOLDER}img/error.gif" /> Gelieve uw telefoonnummer in te vullen.
    {/if}
            {if $error.email}<img src="{$smarty.const.FOLDER}img/error.gif" /> Gelieve uw email in te vullen.
    {/if}
            {if $error.adres}<img src="{$smarty.const.FOLDER}img/error.gif" /> Gelieve uw adres in te vullen.
    {/if}
            {if $error.postcode}<img src="{$smarty.const.FOLDER}img/error.gif" /> Gelieve uw postcode in te vullen.
    {/if}
            {if $error.gemeente}<img src="{$smarty.const.FOLDER}img/error.gif" /> Gelieve uw woonplaats in te vullen.
    {/if}
        {/if}</p><p>    <p>
        <table cellpadding="0" cellspacing="0" width="100%">
            <tr>
                <td colspan="2">{if $error.name}{$err_img}{/if}
                <b>Uw naam en voornaam: <sup>*</sup></b>
                
    <input type="text" name="name" value="" style="width:630px;" onFocus="this.value=''" /></td>
            </tr>
            <tr><td height="5"></td></tr>
            <tr>
                <td colspan="2">{if $error.phone}{$err_img}{/if}
                <b>Telefoonnummer: <sup>*</sup></b>
                
    <input type="text" name="phone" value="" style="width:630px;" onFocus="this.value=''" /></td>
            </tr>
            <tr><td height="5"></td></tr>
            <tr>
                <td colspan="2">{if $error.email}{$err_img}{/if}
                <b>E-mail adres: <sup>*</sup></b>
                
    <input type="text" name="email" value="" style="width:630px;" onFocus="this.value=''" /></td>
            </tr>
            <tr><td height="5"></td></tr>
            <tr>
                <td colspan="2">{if $error.adres}{$err_img}{/if}
                <b>Adres en huisnummer: <sup>*</sup></b>
                
    <input type="text" name="adres" value="" style="width:630px;" onFocus="this.value=''" /></td>
            </tr>
            <tr><td height="5"></td></tr>
            <tr>
                <td colspan="2">{if $error.postcode}{$err_img}{/if}{if $error.gemeente}{$err_img}{/if}
                <b>Postcode en gemeente: <sup>*</sup></b>
                
    <input type="text" name="postcode" value="" style="width:70px;" onFocus="this.value=''" /> <input type="text" name="gemeente" value="" style="width:533px;" onFocus="this.value=''" /></td>
            </tr>
            <tr><td height="20"></td></tr>
            <tr>
                <td valign="top" colspan="2"><b>In welke regio wenst u te bouwen?</b>
                
                    <select name="waar">
                        <option value="Leeg">Maak uw keuze</option>
                        <option value="Antwerpen">Antwerpen</option>
                        <option value="Henegouwen">Henegouwen</option>
                        <option value="Limburg">Limburg</option>
                        <option value="Luik">Luik</option>
                        <option value="Luxemburg">Luxemburg</option>
                        <option value="Oost-Vlaanderen">Oost-Vlaanderen</option>
                        <option value="Namen">Namen</option>
                        <option value="Vlaams-Brabant">Vlaams-Brabant</option>
                        <option value="Waals-Brabant">Waals-Brabant</option>
                        <option value="West-Vlaanderen">West-Vlaanderen</option>
                    </select>
                </td>
            </tr>
             <tr><td height="20"></td></tr>
            <tr>
                <td valign="top" colspan="2"><b>Wanneer denkt u te gaan bouwen?</b>
                
    <input type="radio" value="2012" name="wanneer"> 2012
                
    <input type="radio" value="2013" name="wanneer"> 2013
                
    <input type="radio" value="na_2013" name="wanneer"> Na 2013</td>
            </tr>
             <tr><td height="20"></td></tr>
            <tr>
                <td valign="top" colspan="2"><b>Heeft u reeds bouwgrond?</b>
                
                <table cellpadding="0" cellspacing="0" width="100%">
                	<tr>
                    	<td valign="middle"><input type="radio" name="bouwgrond" value="ja" /> ja, in</td>
                        <td valign="middle"><input type="text" name="bgwaar" value="Gemeente" style="width:300px;" onFocus="this.value=''" /></td>
                    </tr>
                    <tr>
                    	<td><input type="radio" name="bouwgrond" value="nee" /> nee</td>
                    </tr>
                </table>
            	</td>
            </tr>
            <tr><td height="20"></td></tr>
            <tr>
                <td valign="top" colspan="2"><b>Extra informatie:</b>
                
    <textarea name="message" style="width:630px;" rows="5">{$set.message}</textarea></td>
            </tr>
            <tr><td height="20"></td></tr>
            <tr>
                <td valign="top" colspan="2"><b>Waar kent u ons van?</b>
                
    <select name="via">
                    <option value="google">Google</option>
                    <option value="gratishuis">Actie "Gratis Huis"</option>
                    <option value="bouwenwonen">Bouw & Wonen</option>
                    <option value="autosport">Autosport.be</option>
                    <option value="kennis">Kennis of vriend(in)</option>
                    <option value="diverse">Diverse</option>
                 </select>
                </td>
            </tr>
            <tr><td height="20"></td></tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" name="submit" class="btn" value="download gratis ideeënboek" /></td>
            </tr>
        </table>
        </form>
    {/if}</p>
    Zoals het nu is wordt de brochure vaak in de browser getoond (alvast in safari, firefox en de nieuwe IE).
    Maar aangezien het bestand +4mb is, duurt dit soms enkele seconden eer die opent.
    Nu is het de bedoeling dat wanneer de bezoeker op de button "download gratis ideeënboek" klikt dat zij gewoon automatisch het bestand gaan downloaden (in een popup, zoals je eender welk ander bestand op het internet download) en dat de gegevens van het formulier nog steeds gemaild worden.
    Ik had al via een downloadFile.php scriptje getest en dan kan ik het bestand wel later downloaden (via popup), maar dan komt de mail niet meer aan.
    Iemand raad wat ik hiermee moet doen om zowel de mail te laten aankomen van de gegevens als het bestand te laten downloaden (via popup) na het invullen van het formulier.
    no votes  

  2. #2
    sarnath's Avatar
    Registered
    07/11/03
    Location
    Bree
    Posts
    6,239
    iTrader
    158 (99%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Ik hoop dat ik het goed begrijp, maar kan je geen javascript triggeren als eenmaal alles is opgeslagen/gemaild.

    Dus na al je code dit nog toevoegen zodat er een venster wordt geopend met je bestand?:

    <script type="text/javascript">
    window.open= "pad naar je bestand"
    </script>
    webdeveloper / gamer
    no votes  

  3. #3
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Sla het formulier op, verstuur de inhoud via mail en redirect dan naar het script dat de download van de PDF forceert - niet via JavaScript maar in pure PHP code. Vergeet dus - liefst zo snel mogelijk - uw window.location gefoefel.
    Last edited by dJeez; 08-11-2012 at 21:02.
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  4. #4
    bealzebub's Avatar
    Registered
    28/06/06
    Location
    Gent
    Posts
    376
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Quote Originally Posted by dJeez View Post
    This quote is hidden because you are ignoring this member. Show
    Sla het formulier op, verstuur de inhoud via mail en redirect dan naar het script dat de download van de PDF forceert - niet via JavaScript maar in pure PHP code. Vergeet dus - liefst zo snel mogelijk - uw window.location gefoefel.
    +1

    Form opvangen, doormailen via PHP en dan de PDF renderen met content-disposition: attachment en content-type: application/pdf.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in