Archief - formulier met 2 acties

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

dennisgodderie

Legacy Member
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.

sarnath

Legacy Member
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>

dJeez

Legacy Member
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.

bealzebub

Legacy Member
dJeez zei:
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.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan