Toevoeging van een Aantal-Filter in een bestelscript
Ik heb een script wat normaal gesproken gebruikt wordt voor een mailformulier.
Nu ben ik een site aan het ontwerpen voor een bedrijf dat graag ook kerstpakketten en relatiegschenken te koop wil aanbieden op internet.
Nu heb ik een pagina gemaakt waar de persoonlijke gegevens ingevuld kunnen worden,
en daarna een selectie kunnen maken uit een aantal kerstpakketten.
Het probleem is alleen dat alle velden worden meegestuurd, dus ook als er geen aantal bij het pakket is ingevuld.
Hoe ik het nu binnen krijg:
Bedrijfsnaam: (Ingevulde gegevens)
Kvk:(Ingevulde gegevens)
Contactpersoon: (Ingevulde gegevens)
Email: (Ingevulde gegevens)
Tel_nr: (Ingevulde gegevens)
etc..
_________________________bestelde_kerstpakketten______________________________:
Pakket_Helderaantal: 1
Pakket_Roadtripaantal:
Pakket_Haar_aantal: 3
Zoals je ziet word het 2e pakket(Dikgedrukt) ook meegezonden ondanks er geen aantal is ingevuld. Hiervoor zou ik graag een extra filter in me script willen hebben die alleen de pakketten meestuurd als er een aantal is opgegeven, wie zou me hierbij kunne helpen?
Het Php script:
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
$sWebsitenaam = " "; //vul hier de naam van jouw website in
$sMail = " "; //Het e-mailadres waarnaar de mail word gestuurd. Voor meerdere adressen, scheid de emailadressen met een comma.
$bHTML = TRUE; //Bij TRUE word er een HTML-mail gestuurd. Bij FALSE een plain-text-mail
$sOnderwerp = "Mailformulier website"; //Vul hier een onderwerp in. Dit word het onderwerp wanneer er geen ondewerp is opgegeven of als $bOnderwerp op TRUE staat
$bOnderwerp = FALSE; //TRUE als bovenstaand onderwerp altijd gebruikt zal worden. FALSE wordt er eerst gekeken of er een onderwerp in het formulier voor komt
$bBedanktmail = TRUE; //Moet er een bedankt mailtje gestuurd worden aan die gene die verstuurde? (e-mail invoerveld is dan dus verplicht)
$sBedanktmail = " "; //de tekst van het bedank mailtje
$sBedanktfrom = " "; //vanaf welk adres moet dit bedankmailtje vestuurd worden?
$sBedanktsubj = "Bedankt!"; //dit is het ondewerp van het bedanktmailtje
$bBedanktTxt = FALSE; //TRUE als onderstaande tekst als bedankje moet worden weergegeven, FALSE als er moet worden doorgestuurd naar de pagina welke hieronder is aangegeven
$sBedanktTxt = "De e-mail is verzonden."; //bedankt text
$sBedanktURL = " ";; //bedankt url
#########################
# Einde configuratie #
#########################
if (count($_POST) > 0)
{
//controleer of de $bHTML wel fatsoenlijk is ingesteld
if(!is_bool($bHTML))
{
print("De configuratie is onjuist. Zorg dat je bij <font color=blue><i>$bHTML</i></font> een booleaanse waarde (TRUE of FALSE) hebt ingevuld. Letop: Hier moeten geen quotes ( \" of ') omheen!");
exit;
}
$errors = array();//definieer arrray voor de errormeldingen
$aKeys = array_keys($_POST); //pak alle arraykeys in een arraytje
foreach($_POST as $key=>$value)
{
$_POST[$key] = trim($value); //maak alle waarden netjes
}
foreach($aKeys as $key=>$value)
{
$aKeys[$key]=strtolower($value);//maak alle waarden in kleine letters
}
$aMail = explode(",",$sMail);
$aDomein = explode("@",$sMail[0]);
$sDomein = $aMail[1];
//mail detectie
if (in_array("mail",$aKeys)) { $sFrom = $_POST['mail']; }
elseif (in_array("email",$aKeys)) { $sFrom = $_POST['email']; }
elseif (in_array("e-mail",$aKeys)) { $sFrom = $_POST['e-mail']; }
elseif (in_array("1mail",$aKeys)) { $sFrom = $_POST['1mail']; }
elseif (in_array("1email",$aKeys)) { $sFrom = $_POST['1email']; }
elseif (in_array("1e-mail",$aKeys)) { $sFrom = $_POST['1e-mail']; }
else
{
$sFrom = "postmaster@".$sDomein;
$bBedanktmail = FALSE;
}
if ($bOnderwerp)
{
$sSubject = $sOnderwerp;
}
else
{
if (in_array("onderwerp",$aKeys)) { $sSubject = $_POST['onderwerp']; }
elseif (in_array("subject",$aKeys)) { $sSubject = $_POST['subject']; }
elseif (in_array("1onderwerp",$aKeys)) { $sSubject = $_POST['1onderwerp']; }
elseif (in_array("1subject",$aKeys)) { $sSubject = $_POST['1subject']; }
else { $sSubject = $sOnderwerp; }
}
//check alle verplichte velden
foreach($_POST AS $key => $value)
{
if(substr($key,0,1) == 1)
{
if (empty($_POST[$key]))
{
$name = substr($key,1);
$error[] = "Het veld <i>'".$name."'</i> is verplicht en moet worden ingevuld.";
}
}
}
//als er een error was
if (isset($error) && count($error) > 0)
{
//haalt alle errors uit
print("<ul style=\"list-style: none; color: red;\">\n");
foreach($error as $value)
{
print("\t<li>".$value."</li>\n");
}
print("</ul>");
}
else
{
$headers = "MIME-Version: 1.0\n";
$headers .= "From: ".$sWebsitenaam." <".$sFrom.">\n";
$headers .= "Reply-to: ".$sWebsitenaam." <noreply@".$sDomein.">\n";
$headers .= ($bHTML) ? "Content-Type: text/html; charset=iso-8859-1\n" : "Content-Type: text/plain; charset=iso-8859-1\n";
$sContent = "Dit is een automatisch gegenereerd e-mailbericht die vanaf je site is verstuurd.\n\n";
foreach($_POST as $key => $value)
{
if (substr($key,0,1) == 1) { $key = substr($key,1); }
$sContent .= ucfirst(strtolower($key)).": ".$value."\n\n";
}
$sContent .= "IP: ".$_SERVER['REMOTE_ADDR']."\n\n";
$sContent .= "Tijdstip: ".date("D j M, Y G:i")."\n\n";
$enter = "
";
$sContent = ($bHTML) ? nl2br(htmlspecialchars($sContent)) : str_replace("\n",$enter,$sContent) ;
foreach ($aMail as $sMailAdress)
{
mail(trim($sMailAdress),$sSubject,$sContent,$headers);
}
if ($bBedanktmail)
{
$sBedanktmail = ($bHTML) ? nl2br(htmlspecialchars($sBedanktmail)) : str_replace("\n",$enter,$sBedanktmail) ;
mail($sFrom,$sBedanktsubj,$sBedanktmail,$headers);
}
if (isset($bBedanktTxt) && $bBedanktTxt == TRUE)
{
print($sBedanktTxt);
}
else
{
ob_clean();
header("location: $sBedanktURL");
print('<meta http-equiv=refresh content="0; url='.$sBedanktURL.'">');
}
}
}
else
{
print("<form action=\"".$_SERVER['REQUEST_URI']."\" METHOD=\"POST\">\n"); ?>
$sWebsitenaam = " "; //vul hier de naam van jouw website in
$sMail = " "; //Het e-mailadres waarnaar de mail word gestuurd. Voor meerdere adressen, scheid de emailadressen met een comma.
$bHTML = TRUE; //Bij TRUE word er een HTML-mail gestuurd. Bij FALSE een plain-text-mail
$sOnderwerp = "Mailformulier website"; //Vul hier een onderwerp in. Dit word het onderwerp wanneer er geen ondewerp is opgegeven of als $bOnderwerp op TRUE staat
$bOnderwerp = FALSE; //TRUE als bovenstaand onderwerp altijd gebruikt zal worden. FALSE wordt er eerst gekeken of er een onderwerp in het formulier voor komt
$bBedanktmail = TRUE; //Moet er een bedankt mailtje gestuurd worden aan die gene die verstuurde? (e-mail invoerveld is dan dus verplicht)
$sBedanktmail = " "; //de tekst van het bedank mailtje
$sBedanktfrom = " "; //vanaf welk adres moet dit bedankmailtje vestuurd worden?
$sBedanktsubj = "Bedankt!"; //dit is het ondewerp van het bedanktmailtje
$bBedanktTxt = FALSE; //TRUE als onderstaande tekst als bedankje moet worden weergegeven, FALSE als er moet worden doorgestuurd naar de pagina welke hieronder is aangegeven
$sBedanktTxt = "De e-mail is verzonden."; //bedankt text
$sBedanktURL = " ";; //bedankt url
#########################
# Einde configuratie #
#########################
if (count($_POST) > 0)
{
//controleer of de $bHTML wel fatsoenlijk is ingesteld
if(!is_bool($bHTML))
{
print("De configuratie is onjuist. Zorg dat je bij <font color=blue><i>$bHTML</i></font> een booleaanse waarde (TRUE of FALSE) hebt ingevuld. Letop: Hier moeten geen quotes ( \" of ') omheen!");
exit;
}
$errors = array();//definieer arrray voor de errormeldingen
$aKeys = array_keys($_POST); //pak alle arraykeys in een arraytje
foreach($_POST as $key=>$value)
{
$_POST[$key] = trim($value); //maak alle waarden netjes
}
foreach($aKeys as $key=>$value)
{
$aKeys[$key]=strtolower($value);//maak alle waarden in kleine letters
}
$aMail = explode(",",$sMail);
$aDomein = explode("@",$sMail[0]);
$sDomein = $aMail[1];
//mail detectie
if (in_array("mail",$aKeys)) { $sFrom = $_POST['mail']; }
elseif (in_array("email",$aKeys)) { $sFrom = $_POST['email']; }
elseif (in_array("e-mail",$aKeys)) { $sFrom = $_POST['e-mail']; }
elseif (in_array("1mail",$aKeys)) { $sFrom = $_POST['1mail']; }
elseif (in_array("1email",$aKeys)) { $sFrom = $_POST['1email']; }
elseif (in_array("1e-mail",$aKeys)) { $sFrom = $_POST['1e-mail']; }
else
{
$sFrom = "postmaster@".$sDomein;
$bBedanktmail = FALSE;
}
if ($bOnderwerp)
{
$sSubject = $sOnderwerp;
}
else
{
if (in_array("onderwerp",$aKeys)) { $sSubject = $_POST['onderwerp']; }
elseif (in_array("subject",$aKeys)) { $sSubject = $_POST['subject']; }
elseif (in_array("1onderwerp",$aKeys)) { $sSubject = $_POST['1onderwerp']; }
elseif (in_array("1subject",$aKeys)) { $sSubject = $_POST['1subject']; }
else { $sSubject = $sOnderwerp; }
}
//check alle verplichte velden
foreach($_POST AS $key => $value)
{
if(substr($key,0,1) == 1)
{
if (empty($_POST[$key]))
{
$name = substr($key,1);
$error[] = "Het veld <i>'".$name."'</i> is verplicht en moet worden ingevuld.";
}
}
}
//als er een error was
if (isset($error) && count($error) > 0)
{
//haalt alle errors uit
print("<ul style=\"list-style: none; color: red;\">\n");
foreach($error as $value)
{
print("\t<li>".$value."</li>\n");
}
print("</ul>");
}
else
{
$headers = "MIME-Version: 1.0\n";
$headers .= "From: ".$sWebsitenaam." <".$sFrom.">\n";
$headers .= "Reply-to: ".$sWebsitenaam." <noreply@".$sDomein.">\n";
$headers .= ($bHTML) ? "Content-Type: text/html; charset=iso-8859-1\n" : "Content-Type: text/plain; charset=iso-8859-1\n";
$sContent = "Dit is een automatisch gegenereerd e-mailbericht die vanaf je site is verstuurd.\n\n";
foreach($_POST as $key => $value)
{
if (substr($key,0,1) == 1) { $key = substr($key,1); }
$sContent .= ucfirst(strtolower($key)).": ".$value."\n\n";
}
$sContent .= "IP: ".$_SERVER['REMOTE_ADDR']."\n\n";
$sContent .= "Tijdstip: ".date("D j M, Y G:i")."\n\n";
$enter = "
";
$sContent = ($bHTML) ? nl2br(htmlspecialchars($sContent)) : str_replace("\n",$enter,$sContent) ;
foreach ($aMail as $sMailAdress)
{
mail(trim($sMailAdress),$sSubject,$sContent,$headers);
}
if ($bBedanktmail)
{
$sBedanktmail = ($bHTML) ? nl2br(htmlspecialchars($sBedanktmail)) : str_replace("\n",$enter,$sBedanktmail) ;
mail($sFrom,$sBedanktsubj,$sBedanktmail,$headers);
}
if (isset($bBedanktTxt) && $bBedanktTxt == TRUE)
{
print($sBedanktTxt);
}
else
{
ob_clean();
header("location: $sBedanktURL");
print('<meta http-equiv=refresh content="0; url='.$sBedanktURL.'">');
}
}
}
else
{
print("<form action=\"".$_SERVER['REQUEST_URI']."\" METHOD=\"POST\">\n"); ?>
Omdat ik zelf niet heel erg thuis ben in php, heb ik het stukje script van jou op meerdere plekken geprobeerd in mijn eige script te zetten, dit alles zonder resultaat. Op welke positie(regelnr) in mijn script kan ik dit het beste proberen volgens jou?