Offerte met dynamisch input fields versturen naar Email dmv PHP
Ik ben bezig met een offerte formulier. Een static formulier met invoervelden, dropdownboxes en radiobuttons invullen en vervolgens versturen naar een e-mail adres heb ik. Nu is het zo dat mensen ook de mogelijkheid moeten hebben om een input field erbij te plaatsen (net als gmail upload dinges, waarbij je op een link klikt en er een volgende input field verschijnt).
Het is me gelukt om door middel van javascript deze velden erbij te kunnen halen en weer te verwijderen. Ik krijg het alleen niet voor elkaar om dan met PHP ervoor te zorgen dat deze ook in de POST verschijnen, voor de mail, snappen jullie?
Het is namelijk natuurlijk mogelijk dat mensen maar 1 ding uit de offerte willen, en andere willen meerdere input fields hebben.
Ik zal het even laten zien dmv mijn code.
----- Het Javascript ------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
function addEvent() {
var ni = document.getElementById('myDiv');
var numi = document.getElementById('anotherName');
var num = (document.getElementById("anotherName").value -1)+ 2;
numi.value = num;
var divIdName = "my"+num+"Div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "<input type=\"text\" name=\"yourname\" /> <a href=\"javascript:;\" onclick=\"removeElement(\'"+divIdName+"\')\">Remove the element ""+divIdName+""</a>";
ni.appendChild(newdiv);
}
function removeElement(divNum) {
var d = document.getElementById('myDiv');
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);
}
</script>
function addEvent() {
var ni = document.getElementById('myDiv');
var numi = document.getElementById('anotherName');
var num = (document.getElementById("anotherName").value -1)+ 2;
numi.value = num;
var divIdName = "my"+num+"Div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "<input type=\"text\" name=\"yourname\" /> <a href=\"javascript:;\" onclick=\"removeElement(\'"+divIdName+"\')\">Remove the element ""+divIdName+""</a>";
ni.appendChild(newdiv);
}
function removeElement(divNum) {
var d = document.getElementById('myDiv');
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);
}
</script>
----- Kleine greep uit de Form ------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="contact.php" method="post">
<dl>
<dt><label for="name">Naam:</label></dt>
<dd><input type="text" name="yourname" /></dd>
</dl>
<dl>
<dt><label for="anotherName"><input type="hidden" value="0" id="anotherName" /><a href="javascript:;" onclick="addEvent();">Voeg nog een naam toe</a></label></dt>
<dd><div id="myDiv"> </div></dd>
</dl>
<dl>
<input type="submit" value="Send it!">
</dl>
<dl>
<dt><label for="name">Naam:</label></dt>
<dd><input type="text" name="yourname" /></dd>
</dl>
<dl>
<dt><label for="anotherName"><input type="hidden" value="0" id="anotherName" /><a href="javascript:;" onclick="addEvent();">Voeg nog een naam toe</a></label></dt>
<dd><div id="myDiv"> </div></dd>
</dl>
<dl>
<input type="submit" value="Send it!">
</dl>
----------
Als er dan op Submit wordt geklikt, moet er een tweede naam bij komen als deze is ingevuld, anders niet.
---- En dan hier mijn PHP ----
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
/* Set e-mail recipient */
$myemail = "mijn email adres";
/* Check all form inputs using check_input function */
$yourname = check_input($_POST['yourname'], "Enter your name");
$subject = check_input($_POST['subject'], "Write a subject");
$email = check_input($_POST['email']);
$telefoon = check_input($_POST['telefoon']);
$website = check_input($_POST['website']);
$likeit = check_input($_POST['likeit']);
$isolatieglas_aantal = check_input($_POST['isolatieglas_aantal']);
$isolatieglas_uwaarde = check_input($_POST['isolatieglas_uwaarde']);
$isolatieglas = check_input($_POST['isolatieglas']);
$spiegels = check_input($_POST['spiegels']);
$spiegels_aantal = check_input($_POST['spiegels_aantal']);
$spiegels_anderekleur = check_input($_POST['spiegels_anderekleur']);
$comments = check_input($_POST['comments'], "Write your comments");
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("E-mail address not valid");
}
/* If URL is not valid set $website to empty */
if (!preg_match("/^(https?:\/\/+[\w\-]+\.[\w\-]+)/i", $website))
{
$website = '';
}
/* Let's prepare the message for the e-mail */
$message = "Er is een nieuwe offerte geplaatst, hieronder staan de ingevulde gegevens:
---------------------------- PERSOONLIJKE INFORMATIE ----------------------------
Name: $yourname
E-mail: $email
Telefoonnummer: $telefoon
--------------------------------- ISOLATIEGLAS ----------------------------------
Aantal isolatieglas: $isolatieglas_aantal
Isolatieglas: $isolatieglas
U-waarde: $isolatieglas_uwaarde
----------------------------------- SPIEGELS ------------------------------------
Aantal spiegels: $spiegels_aantal
Kleur: $spiegels
Andere kleur: $spiegels_anderekleur
---------------------------------- COMMENTAAR -----------------------------------
$comments
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Redirect visitor to the thank you page */
header('Location: thanks.htm');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<b>Gelieve de volgende error te corrigeren:</b><br />
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
/* Set e-mail recipient */
$myemail = "mijn email adres";
/* Check all form inputs using check_input function */
$yourname = check_input($_POST['yourname'], "Enter your name");
$subject = check_input($_POST['subject'], "Write a subject");
$email = check_input($_POST['email']);
$telefoon = check_input($_POST['telefoon']);
$website = check_input($_POST['website']);
$likeit = check_input($_POST['likeit']);
$isolatieglas_aantal = check_input($_POST['isolatieglas_aantal']);
$isolatieglas_uwaarde = check_input($_POST['isolatieglas_uwaarde']);
$isolatieglas = check_input($_POST['isolatieglas']);
$spiegels = check_input($_POST['spiegels']);
$spiegels_aantal = check_input($_POST['spiegels_aantal']);
$spiegels_anderekleur = check_input($_POST['spiegels_anderekleur']);
$comments = check_input($_POST['comments'], "Write your comments");
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("E-mail address not valid");
}
/* If URL is not valid set $website to empty */
if (!preg_match("/^(https?:\/\/+[\w\-]+\.[\w\-]+)/i", $website))
{
$website = '';
}
/* Let's prepare the message for the e-mail */
$message = "Er is een nieuwe offerte geplaatst, hieronder staan de ingevulde gegevens:
---------------------------- PERSOONLIJKE INFORMATIE ----------------------------
Name: $yourname
E-mail: $email
Telefoonnummer: $telefoon
--------------------------------- ISOLATIEGLAS ----------------------------------
Aantal isolatieglas: $isolatieglas_aantal
Isolatieglas: $isolatieglas
U-waarde: $isolatieglas_uwaarde
----------------------------------- SPIEGELS ------------------------------------
Aantal spiegels: $spiegels_aantal
Kleur: $spiegels
Andere kleur: $spiegels_anderekleur
---------------------------------- COMMENTAAR -----------------------------------
$comments
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Redirect visitor to the thank you page */
header('Location: thanks.htm');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<b>Gelieve de volgende error te corrigeren:</b><br />
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
--------
En dan nog meer code dat even niet relevant is.
Dus: Hoe zorg ik ervoor dat als de gebruiker een 2e input field kiest, dat deze dan een naam krijgt en automatisch bij de uitkomst voor de e-mail verschijnt.
Hopelijk ben ik niet de verwarrend!!
Everlast
Gewijzigd op 01/01/1970 01:00:00 door Don
Ik heb hem aangepast, mijn excuses.