Hoi,

Voor onderstaande website moet ik per assortiment een soort bestelformulier hebben, waarin de naam van de bloem het onderwerp is van het bericht.
http://binnenkijkenbij.nl/happycolors/roses.html

Als je dus op een van die bloemen klikt, zie je in de lightbox een tekst met "contact us". Als je hierop klikt moet ik of direct naar de contactpagina gaan waarin het onderwerp automatisch wordt ingevuld met de naam van de bloem. Of dat je na het klikken een popup krijgt met een formulier waarin ook het onderwerp automatisch is ingevuld.
Ik heb nu een heel eenvoudig contactformulier waarin je eigen gegevens kunnen invullen.
En ik heb geen idee of zoiets mogelijk is / of hoe ik dit moet aanpakken. Hoop dat jullie mij wat verder kunnen helpen?

Thanks!


<div class="col-sm-8">
          <h1 class="post-title">Feel free to contact us</h1>
          <p></p>
          <div class="divide20"></div>
          <div class="form-container">
            <div class="response alert alert-success"></div>
            <form class="forms" action="contact/form-handler.php" method="post">
              <fieldset>
                <ol>
                  <li class="form-row text-input-row name-field">
                    <input type="text" name="name" class="text-input defaultText required" title="Name (Required)"/>
                  </li>
                  <li class="form-row text-input-row email-field">
                    <input type="text" name="email" class="text-input defaultText required email" title="Email (Required)"/>
                  </li>
                  <li class="form-row text-input-row subject-field">
                    <input type="text" name="subject" class="text-input defaultText" title="Subject"/>
                  </li>
                  <li class="form-row text-area-row">
                    <textarea name="message" class="text-area required"></textarea>
                  </li>
                  <li class="form-row hidden-row">
                    <input type="hidden" name="hidden" value="" />
                  </li>
                  <li class="nocomment">
                    <label for="nocomment">Leave This Field Empty</label>
                    <input id="nocomment" value="" name="nocomment" />
                  </li>
                  <li class="button-row">
                    <input type="submit" value="Submit" name="submit" class="btn btn-submit bm0" />
                  </li>
                </ol>
                <input type="hidden" name="v_error" id="v-error" value="Required" />
                <input type="hidden" name="v_email" id="v-email" value="Enter a valid email" />
              </fieldset>
            </form>
          </div>
          <!-- /.form-container --> 
        </div>

<?php
include('SMTPClass.php');

$use_smtp = '0';
$emailto = '[email protected]';

	// retrieve from parameters
	$emailfrom = isset($_POST["email"]) ? $_POST["email"] : "";
	$nocomment = isset($_POST["nocomment"]) ? $_POST["nocomment"] : "";
	$subject = 'Contactformulier Happy Colors';
	$message = '';
	$response = '';
	$response_fail = 'There was an error verifying your details.';
	
		// Honeypot captcha
		if($nocomment == '') {
		
			$params = $_POST;
			foreach ( $params as $key=>$value ){
			
				if(!($key == 'ip' || $key == 'emailsubject' || $key == 'url' || $key == 'emailto' || $key == 'nocomment' || $key == 'v_error' || $key == 'v_email')){
				
					$key = ucwords(str_replace("-", " ", $key));
					
					if ( gettype( $value ) == "array" ){
						$message .= "$key: \n";
						foreach ( $value as $two_dim_value )
						$message .= "...$two_dim_value<br>";
					}else {
						$message .= $value != '' ? "$key: $value\n" : '';
					}
				}
			}
			
		$response = sendEmail($subject, $message, $emailto, $emailfrom);
			
		} else {
		
			$response = $response_fail;
		
		}

	echo $response;

// Run server-side validation
function sendEmail($subject, $content, $emailto, $emailfrom) {
	
	$from = $emailfrom;
	$response_sent = 'Thank you. Your messsage has been received.';
	$response_error = 'Error. Please try again.';
	$subject =  filter($subject);
	$url = "Origin Page: ".$_SERVER['HTTP_REFERER'];
	$ip = "IP Address: ".$_SERVER["REMOTE_ADDR"];
	$message = $content."\n$ip\r\n$url";
	
	// Validate return email & inform admin
	$emailto = filter($emailto);

	// Setup final message
	$body = wordwrap($message);
	
	if($use_smtp == '1'){
	
		$SmtpServer = 'SMTP SERVER';
		$SmtpPort = 'SMTP PORT';
		$SmtpUser = 'SMTP USER';
		$SmtpPass = 'SMTP PASSWORD';
		
		$to = $emailto;
		$SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
		$SMTPChat = $SMTPMail->SendMail();
		$response = $SMTPChat ? $response_sent : $response_error;
		
	} else {
		
		// Create header
		$headers = "From: $from\r\n";
		$headers .= "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/plain; charset=utf-8\r\n";
		$headers .= "Content-Transfer-Encoding: quoted-printable\r\n";
		
		// Send email
		$mail_sent = @mail($emailto, $subject, $body, $headers);
		$response = $mail_sent ? $response_sent : $response_error;
		
	}
	return $response;
}

// Remove any un-safe values to prevent email injection
function filter($value) {
	$pattern = array("/\n/", "/\r/", "/content-type:/i", "/to:/i", "/from:/i", "/cc:/i");
	$value = preg_replace($pattern, "", $value);
	return $value;
}

exit;

?>

In de lightbox staat al de code van de bloem, dus die zou je dan met een GET-parameter kunnen meegeven in de URL naar het contactformulier.

'contact.php?code=R1001'
Dan kan je met $_GET['code'] in je PHP-script de waarde alvast invullen.

Let er wel op dat PHP standaard niet wordt uitgevoerd in een *.html-document. Daarom heb ik hier als voorbeeld .php van gemaakt.
Hoi Ariën,
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?

& bedankt voor de tip! over html het document.

Stephanie - op 15/12/2015 13:56:17

Hoi Ariën,
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?

& bedankt voor de tip! over html het document.




Je zult je contact.html moeten wijzigen van .html extensie naar .php
http://binnenkijkenbij.nl/happycolors/contact.html wordt dan:
http://binnenkijkenbij.nl/happycolors/contact.php

In contact.php kun je het volgende doen:


<input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>


Als je naar contact.php?bloem=1000 gaat, zal $_GET['bloem'] "1000" zijn.
Als je naar contact.php?bloem=tulp gaat, zal $_GET['bloem'] "tulp" zijn.

Peter K op 15/12/2015 14:06:23

[quote="Stephanie - op 15/12/2015 13:56:17"]
Hoi Ariën,
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?

& bedankt voor de tip! over html het document.




Je zult je contact.html moeten wijzigen van .html extensie naar .php
http://binnenkijkenbij.nl/happycolors/contact.html wordt dan:
http://binnenkijkenbij.nl/happycolors/contact.php

In contact.php kun je het volgende doen:


<input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>


Als je naar contact.php?bloem=1000 gaat, zal $_GET['bloem'] "1000" zijn.
Als je naar contact.php?bloem=tulp gaat, zal $_GET['bloem'] "tulp" zijn.


[/quote]


Hoi Peter thanks voor de hulp!
Ik heb nu inderdaad bij de bloem de url aangegeven met de code:

<h2>R1000 &nbsp;&nbsp;&nbsp;<a href="contact.php?bloem=R1000"><strong>Contact us ></strong></a></h2>


en in mijn contact.php heb ik het volgende gedaan:

<li class="form-row text-input-row subject-field">
                    <input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>
                  </li>



Url werkt prima, maar het onderwerp wordt nog niet weergegeven in het formulier.
Waar kan ik dit dan aanpassen? Ik heb geprobeerd de GET-parameter in het phpscript te plaatsen die de mail verzendt maar dat ging niet. (Ik had hem zo
$subject = '$_GET['bloem']';
maar ik denk dat ik iets fout doe haha.

Excuses,

Je moet er dit van maken:

<input type="text" name="subject" class="text-input defaultText" title="Subject" value="<?php printf("{$_GET['bloem']}"); ?>">


Als je naar contact.php?bloem=test gaat zul je dit zien in je bron:
<input type="text" name="subject" class="text-input defaultText" title="Subject" test>

De waarde komt dus wel mooi in je script, maar hij moest nog in de value gezet worden. Met bovenstaande zou het moeten werken.

Zonder de buitenste quotjes: $subject = $_GET['bloem'];
Je moet die GET-waarde wel netjes in een value=" " zetten ;-)
OOOOOH, wauw Nice!
Dank jullie wel! valt best mee hoe moeilijk dit was haha.
Je kunt het nog mooier maken natuurlijk.

Als onderwerp kun je ook plaatsen:
Bloem bestelling: (HIER DE GET WAARDE)

Uiteraard moet die tekst 'Bleom bestelling:' er enkel komen zodra er een bloem is gekozen.
Als iemand standaard naar het contact formulier gaat wil je dat niet.

Je kunt een controle doen of dus de GET gevuld is.
Als dat zo is maak je een nieuwe variabele aan.

Deze nieuwe variabele kun je dan ook toevoegen in de value van subject.

Reageren