Login Retreive lost passwordRegister
Search

Forum Index / NL Forum / Tell a friend

[ This topic is solved ]

  markla 28 April 09 / 23:49  
Heeft iemand al eens met FH een Tell A Friend Form gemaakt?

Ik zoek al een tijdje een goede. Zo een waarmee mee ik van uit artikel op de website een pop-up krijg met waar mee ik de URL en de titel per mail kan versturen. En optionele "mail een kopie aan u zelf" optie en dan liefst me Captcha er over.

  Johan Wiegel (Admin) 29 April 09 / 07:31  
ja hoor wel eens gedaan.

  markla 29 April 09 / 18:11  
Heb je misschien een paar hint/tips waar ik aan moet denken /op moet letten?

  Johan Wiegel (Admin) 29 April 09 / 19:38  
nou nee eigenlijk niet, het is gewoon een formuliertje.

wettelijk verplicht om de afzender erbij te zetten overigens.

  markla 01 May 09 / 11:35  
Het volgnde script is mijn begin maar twee problemen

1) Notice: class.FormHandler.php at 1502 This way of disabling the table tag is deprecated! Use the method "useTable" instead!

2) De Captcha werkt niet


<?php
/********************************************************* 
* Author: markla (c) 
* Date  : 30th apr 2009 
* File  : tellafriend.php 
*****************************************************/
// include the class 
include("../FH3/class.FormHandler.php"); 

// create a new FormHandler object 
$form =& new FormHandler(); 

// the options for the checkbox 

$form -> setMask(  
  
"  <tr><td align=right>%title% %seperator% </td><td>%field% </td></tr>\n".  
  
"  <tr><td colspan=2><font color=red>%error% </font></td></tr>\n",  
  
true  # repeat this mask!  
);  


// some fields.. (see manual for examples) 
$form->textField"Jou naam ""yourname"FH_STRING2040); 
$form->textField"Jou email ""youremail"FH_EMAIL 2040); 
$form->textField"Je vriends naam ""friendsname"FH_STRING2040); 
$form->textField"Je vriends email ""friendsemail"FH_EMAIL 2040); 

$form -> setMask(  
  
"  <tr><td align=right>%title% %seperator% </td></tr>\n".  
  
"  <tr><td colspan=2>%field% </td></tr>\n",  
  
"  <tr><td colspan=2><font color=red>%error% </font></td></tr>\n",  
  
  
true  # repeat this mask!  
);  

// the textarea 
$form -> textArea("Message""message"FH_TEXT);

// make the checkbox 
$form -> checkBox("Stuur jezelf een copy?""sendcopy",  1); 

// make a new $oForm object 
$oForm = new FormHandler(); 

// a textfield 
$oForm->CaptchaField("Verify the code""code"); 


// button for submitting 
$form->submitButton(); 

// set the 'commit-after-form' function 
$form->onCorrect('doRun'); 

// display the form 
$form->flush(); 

// the 'commit-after-form' function 
function doRun$data )  

    echo 
"
    <tr><td>Uw tip naar een vriend is verzonden.</td></tr>
    <tr><td>U kunt nu het venster&nbsp;<a href=\"javascript:window.close()\">sluiten</a>.</td></tr>"
;


?>

  Johan Wiegel (Admin) 01 May 09 / 11:47  
Changed at 01 May 09 / 11:47
Markla,

je hebt dingen bij elkaar gekopieerd, dat is op zich goed, maar je moet dan zelf wel je code goed door lezen.

je start 2 maal een formhandler formulier

<?php
// create a new FormHandler object 
$form =& new FormHandler(); 
....
// make a new $oForm object 
$oForm = new FormHandler(); 
?>

de captcha maak je vervolgens op $oForm waar je verder niets mee doet.

Ik zou zeggen verwijder de regel

<?php
// make a new $oForm object 
$oForm = new FormHandler(); 
?>


en wijzig

<?php
$oForm
->CaptchaField("Verify the code""code"); 
?>

in
<?php
$form
->CaptchaField("Verify the code""code"); 
?>


vervolgens krijg je nog een notice omdat je setmask gebruikt met 3 argumenten.

de tweede setmask:
<?php
$form 
-> setMask(  
  
"  <tr><td align=right>%title% %seperator% </td></tr>\n".  
  
"  <tr><td colspan=2>%field% </td></tr>\n",  
  
"  <tr><td colspan=2><font color=red>%error% </font></td></tr>\n",  
  
  
true  # repeat this mask!  
); 
?>


even aanpassen naar:

<?php
$form 
-> setMask(  
  
"  <tr><td align=right>%title% %seperator% </td></tr>\n".  
  
"  <tr><td colspan=2>%field% </td></tr>\n".
  
"  <tr><td colspan=2><font color=red>%error% </font></td></tr>\n",  
  
  
true  # repeat this mask!  
); 
?>


en je formulier werkt naar behoren.

  markla 01 May 09 / 15:41  
Thanks voor de snelle reactie

Die $oForm = new FormHandler(); had ik er in gezet op dat ik dacht dat die speciaal nodig was voor de captcha.

Ik heb het formulier aangepast maar nu krijg ik

Fatal error: Call to a member function CaptchaField() on a non-object in inc_recommend.php on line 42

regel 42 is $Form->CaptchaField("Verify the code", "code");

Ik kan er alleen niet achterkomen of dat met config.inc.php en FH_FHTML_DIR te meken heeft.


als ik regel 42 // dan werkt de rest van het formulier wel

  Johan Wiegel (Admin) 01 May 09 / 15:57  
<?php
$Form
->CaptchaField("Verify the code""code"); 
?>


is iets anders als

<?php
$form
->CaptchaField("Verify the code""code"); 
?>


je moet echt wat zorgvuldiger naar je eigen code kijken

  markla 01 May 09 / 16:04  
OEPS

'k heb de code ergens van gedaan gekopie/plakt en helemaal niet op deh F of f gelet.
Sorry!

  markla 01 May 09 / 19:00  
klopt het overigens dat de mailer class niet meer in FH zit?

  Johan Wiegel (Admin) 01 May 09 / 19:04  
ja dat klopt die is al sinds 1.2.2 verwijderd, deze hoort naar onze mening niet in FormHandler.

kijk eens naar phpmailer, een uitstekende klasse voor de mail afhandeling

  markla 01 May 09 / 19:55  
Die PHPmailer class kan ik intergeren in FH?

  Johan Wiegel (Admin) 01 May 09 / 20:57  
zie niet in waarom je dat zou willen.

in de functie die aangeroepen wordt door oncorrect kun je een object voor phpmailer openen, versturen wat je wilt.

  markla 01 May 09 / 22:04  
Changed at 01 May 09 / 22:12
Misschien 'zeg' ik het niet helemaal goed. Wat ik bedoel is dat ik het resultaat (lees de ingevoerde waardes van FH) door kan geven aan phpmailer. Die neemt dan op zijn beurt de mail afhandeling voor zijn rekening.

Maar als ik heb goed heb bedoel jij dat, toch.

Ik zou dan aan zo iets denken ;
<? 

the 'commit-after-form' function 
function 
doRun$data )  

/ Include 
de class
include(
"include/class.phpmailer.php");

// Maak een instantie van het object aan
$mail = new PHPMailer();

// Geef de afzender aan
$mail->From     $data["youremail"];
$mail->FromName $data["yourname"];


 
Inhoud van de mail
$mail
->Subject     "Onderwerp van de mail";
$mail->Body     "Hallo! \n\n Dit is enkel een testje.";

// Maximaal aantal karakters
$mail->WordWrap 50;

// Probeer de mail te versturen
if(!$mail->Send()){
   echo 
'Er ging iets mis tijdens het versturen, namelijk:<br>';
   echo 
$mail->ErrorInfo;
}else{
   echo 
'De mail is verstuurd.';
}
?>


Maar ja ik ben maar een (ouwe) hobby php'er :-)
vandaar dat ik zo blij ben met FH.

  Johan Wiegel (Admin) 01 May 09 / 22:21  
ik zou zeggen probeer het en je weet het.

  markla 01 May 09 / 23:08  
Ut werkt :-)

Bedankt voor de hulp, Ik ben weer een heel end opgeschoten en heb weer wat nieuws geleerd.

  Johan Wiegel (Admin) 04 May 09 / 15:21  
en deze dan

  markla 04 May 09 / 15:29  
Changed at 04 May 09 / 18:09
Nog een klein probleemje dus

In he tuit eindelijke mail bericht staat:
<? ". $_SERVER['SERVER_NAME']. $data["NewsItem_ID"].""."n ?>


alles staat in het bericht ....behalve
<? $data["NewsItem_ID"]?>


Het zal wel weer een punt/komma enkel/dub quot probleem zijn maar ik kom er niet achter

  Johan Wiegel (Admin) 04 May 09 / 18:42  
dat kan toch ook niet, je kent geen waarde toe aan dat veld.

(als dit tenminste om het script gaat wat je per mail verstuurde)

<?php
$form
->textField('Titel''NewsItem_Titel'FH_STRING4545 "readonly style='background-color: #fffff' 'color: #FFFF00' ");
?>


het is een readonly veld waar je geen waarde aan toekent.
kijk eens naar de setvalue functie

  markla 04 May 09 / 18:55  
hi Johan

Ik roep het script aan met

<?
<a href="javascript:void(window.open('includes/inc_recommend.php?id=$NewsItem_ID','recommend','resizable=no,location=no,menubar=no,scrollbars=no,status=yes,toolbar=no,fullscreen=no,dependent=no,width=410,height=500,left=400,top=200'))\"><b>mail dit artikel naar een vriend</b></a>";
?>

Er komt dus een NewsItem_ID parameter mee. maak ik er van :

<? $form->textField('ItemID''NewsItem_ID'FH_STRING4);?>


dan zie ik de parameter $NewsItem_ID' in het veld staan.

De titel wordt ook getoond:
<? $form->textField('Titel''NewsItem_Titel'FH_STRING4545 "readonly style='background-color: #fffff' 'color: #FFFF00' ");?>


Maar in het mailbericht ontvang ik wel de
<? ". $data["NewsItem_Titel"] ." ?>

maar dus niet
<?  $data["NewsItem_ID"?>


Dit maakte geen verschil uit of ik Hidden of textfield gebruikte.

Dus snap je dat ik het niet snap?

  Johan Wiegel (Admin) 04 May 09 / 19:44  
er komt helemaal geen nieuwsitemid parameter mee, alleen een parameter id.
en dan nog moet je die waarde wel aan een veld geven, de titel wordt alleen gevuld omdat je een dbformhandler in edit mode gebruikt.

  markla 05 May 09 / 18:33  
Changed at 05 May 09 / 18:34
Oke dit laatste opmerking heeft bij mij wat belletje doen rinkelen en na een avondje stoeien met een $_GET Heb ik het voor elkaar. :-)

“I love it when a plan comes together!”

  Top


powered by PHP-GLOBE   © 2004 - 2012 FormHandler. All rights reserved.   -   Open source license