Wiskundig probleem
Ik wil een rekensom maken met vergelijking (if, then)
In exell lukt me dit wel, maar nu in PHP loop ik vast.
De waardes die ingevoerd kunnen worden zijn (selectie box)
500
1000
1500
2000
2500
3000
3500
4000
Alleen als ik dan op verzenden klik, krijg ik altijd de uitkomst 4000
De code die ik zover heb.
Code (php)
Kan iemand mij vertellen waar het fout gaat, en hoe ik dit het beste kan oplossen?
Alvast bedankt!
Sorry maar ik kon het niet laten..
Waarom zet je eerst dat $_POST['ballen'] op 4000?
Want als hij een waarde heeft dan hoef je alleen nog maar de rekensom te maken.
Wat je nu doet is zeggen: ik heb alleen maar 4000 ballen..
Misschien moesten er 2 gelijk aan tekens?
Als het aantal 4000 is moet hij zeggen 90
Als het aantal 2000 is moet hij zeggen 45
Als het aantal < 2000 moet hij rekenen
Aantal / 500 * 12
Als het aantal > 2000 en < 4000 moet hij het volgende doen
(Aantal - 2000) / 500 * 12 + 45
Want elke 2000 is 45 erbij en elke 500 is 12 erbij
In feite zijn dit de mogelijke uitkomsten
500 = 12
1000 = 24
1500 = 36
2000 = 45
2500 = 57
3000 = 69
3500 = 81
4000 = 90
Hoop dat ik duidelijk genoeg ben voor je.
Alvast bedankt.
Toevoeging op 13/05/2012 12:06:52:
Klopt Dem,
Het moesten er 2 zijn, die heb ik al opgelost, maar het juiste antwoord krijg ik nog niet.
Nu geeft hij als uitkomst 45, terwijl ik 1500 heb opgegeven.
Het antwoord zou dus 36 moeten zijn
Toevoeging op 13/05/2012 12:39:58:
Ik heb nu dit geprobeerd, maar dit resulteert in 0
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Toevoeging op 13/05/2012 12:56:22:
En een ps, dit is een reken probleem, geen wiskundig probleem.
Of kijk naar een switch-constructie.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$entree = 10;
switch ($_POST['ballen']) {
case 4000:
$bal = 90;
break;
case 2000:
$bal = 45;
break;
case $_POST['ballen'] < 2000:
$bal = $_POST['ballen'] / 500 * 12;
break;
case $_POST['ballen'] > 2000 && $_POST['ballen'] < 4000:
$bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
break;
case default:
/* iets van een foutmelding ofzo
dan wel controleren of $bal is ingevuld bij $totaal */
break;
}
$totaal = $entree + $bal;
?>
$entree = 10;
switch ($_POST['ballen']) {
case 4000:
$bal = 90;
break;
case 2000:
$bal = 45;
break;
case $_POST['ballen'] < 2000:
$bal = $_POST['ballen'] / 500 * 12;
break;
case $_POST['ballen'] > 2000 && $_POST['ballen'] < 4000:
$bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
break;
case default:
/* iets van een foutmelding ofzo
dan wel controleren of $bal is ingevuld bij $totaal */
break;
}
$totaal = $entree + $bal;
?>
Dit kan uiteraard ook met if / elseif.
Gewijzigd op 13/05/2012 13:15:47 door Jurgen B
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
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
<?php
$entree = 10;
$_POST['ballen'] = 500; // Dit is een voorbeeld, dit kan je natuurlijk weglaten. Was om te testen!
if ($_POST['ballen'] == 4000)
{
$bal = 90;
}
elseif ($_POST['ballen'] == 2000)
{
$bal = 45;
}
elseif ($_POST['ballen'] < 2000)
{
$bal = $_POST['ballen'] / 500 * 12;
}
elseif ($_POST['ballen'] > 2000 AND $_POST['ballen'] < 4000)
{
$bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
}
else
{
echo 'POST waarde voldoet niet aan bovenstaande eisen!';
}
$totaal = $entree + $bal;
echo $bal; // prijs van $bal
echo '<br>'; // spatie
echo $totaal; // totaalprijs
?>
$entree = 10;
$_POST['ballen'] = 500; // Dit is een voorbeeld, dit kan je natuurlijk weglaten. Was om te testen!
if ($_POST['ballen'] == 4000)
{
$bal = 90;
}
elseif ($_POST['ballen'] == 2000)
{
$bal = 45;
}
elseif ($_POST['ballen'] < 2000)
{
$bal = $_POST['ballen'] / 500 * 12;
}
elseif ($_POST['ballen'] > 2000 AND $_POST['ballen'] < 4000)
{
$bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
}
else
{
echo 'POST waarde voldoet niet aan bovenstaande eisen!';
}
$totaal = $entree + $bal;
echo $bal; // prijs van $bal
echo '<br>'; // spatie
echo $totaal; // totaalprijs
?>
Gewijzigd op 13/05/2012 13:13:31 door - Diov -
Ik ga het eens proberen, hartstikke bedankt allemaal
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
#| De basis entree.
$entree = 10;
#| De extra entree berekend aan de hand van de gekozen aantal ballen.
$bal = (($base = floor($_POST['ballen'] / 2000)) * 45) + ((($_POST['ballen'] - ($base * 2000)) / 500) * 12);
#| Het totaal berekenen.
$totaal = $entree + $bal;
?>
#| De basis entree.
$entree = 10;
#| De extra entree berekend aan de hand van de gekozen aantal ballen.
$bal = (($base = floor($_POST['ballen'] / 2000)) * 45) + ((($_POST['ballen'] - ($base * 2000)) / 500) * 12);
#| Het totaal berekenen.
$totaal = $entree + $bal;
?>
Of het er gewoon hard coded in zetten want het ziet er niet naar uit dat het veel veranderd.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
#| De basis entree.
$entree = 10;
#| De kosten per ballen.
$bal_entree = array(500 => 12, 1000 => 24, 1500 => 36, 2000 => 45); // en zo verder.
#| De extra entree berekend aan de hand van de gekozen aantal ballen.
$bal = $bal_entree[$_POST['ballen']];
#| Het totaal berekenen.
$totaal = $entree + $bal;
?>
#| De basis entree.
$entree = 10;
#| De kosten per ballen.
$bal_entree = array(500 => 12, 1000 => 24, 1500 => 36, 2000 => 45); // en zo verder.
#| De extra entree berekend aan de hand van de gekozen aantal ballen.
$bal = $bal_entree[$_POST['ballen']];
#| Het totaal berekenen.
$totaal = $entree + $bal;
?>
Maar nu krijg ik het formulier niet verzonden, en een foutmelding krijg ik ook niet.
Dit zal ik dus eerst moeten fiksen.
Laat nog weten hoe het gaat.
Toevoeging op 13/05/2012 14:01:49:
voor wie het wil proberen.
http://www.thetimberwolves.nl/EPA.html
Toevoeging op 13/05/2012 14:05:13:
ik heb het script van Dem gebruikt
Toevoeging op 13/05/2012 14:22:03:
Ik krijg helaas iedere keer als ik op verzenden klik het zelfde resultaat.
Ik krijg alleen geen fout melding te zien, behalve het volgende :
Het formulier is niet verzonden.
Probeer het opnieuw.
Het volledige 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
145
146
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
145
146
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';
$securimage = new Securimage();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$to = '[email protected]'.',';
$to .= $_POST['email'];
$subject = 'Uw reservering';
$errors = array();
$data = array();
$ip = $_SERVER['REMOTE_ADDR'];
$datum = date("d.m.Y H:i");
$headers = "From: NoReply@The_Timberwolves.nl\r\n";
$entree = 10;
if ($_POST['ballen'] == 4000)
{
$bal = 90;
}
elseif ($_POST['ballen'] == 2000)
{
$bal = 45;
}
elseif ($_POST['ballen'] < 2000)
{
$bal = $_POST['ballen'] / 500 * 12;
}
elseif ($_POST['ballen'] > 2000 AND $_POST['ballen'] < 4000)
{
$bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
}
else
{
echo 'POST waarde voldoet niet aan bovenstaande eisen!';
}
$totaal = $entree + $bal;
$inhoud_mail = "===============================================================================\n";
$inhoud_mail .= "The Timberwolves\n";
$inhoud_mail .= "===============================================================================\n\n";
$inhoud_mail .= "Uw reservering\n\n";
$inhoud_mail .= "Naam : ".$_POST['naam']."\n";
$inhoud_mail .= "Achternaam : ".$_POST['anaam']."\n";
$inhoud_mail .= "Geb. datum : ".$_POST['dag']."-".$_POST['maand']."-".$_POST['jaar']."\n";
$inhoud_mail .= "Email adres : ".$_POST['email']."\n\n";
$inhoud_mail .= "Team naam : ".$_POST['team']."\n";
$inhoud_mail .= "Aantal ballen : ".$_POST['ballen']."\n";
$inhoud_mail .= "===============================================================================\n\n";
$inhoud_mail .= "Rekening overzicht\n\n";
$inhoud_mail .= "Entree € ".$entree.",--\n";
$inhoud_mail .= "Totaal ballen € ".$bal.",--\n";
$inhoud_mail .= "------------------------------\n";
$inhoud_mail .= "Totaal € ".$totaal.",--\n\n";
$inhoud_mail .= "Ter plaatse betalen\n";
$inhoud_mail .= "LET OP, ER KAN NIET GEPIND WORDEN\n";
$inhoud_mail .= "===============================================================================\n\n";
$inhoud_mail .= "Ons adres:\n";
$inhoud_mail .= "Ossendijk\n";
$inhoud_mail .= "5815 CZ Merselo(Venray)\n\n";
$inhoud_mail .= "www.thetimberwolves.nl\n";
$inhoud_mail .= "===============================================================================\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het ip adres " . $ip . "\n";
$inhoud_mail .= "===============================================================================\n";
// formulier velden declareren
$form = array(
'naam',
'email');
// controle voor alle velden
foreach($form as $veld)
{
if(isset($_POST[$veld]))
{
$value = trim($_POST[$veld]);
$form[$veld] = $value;
// controle van email en postcode
// controle op een geldig email adres
if($veld == 'email')
{
if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$value))
{
$errors[$veld] = true;
$errors[] = 'Dit is geen geldig email adres.';
}
}
if(empty($value))
{
$errors[$veld] = true;
$errors[] = 'U bent uw '.$veld.' vergeten in te vullen';
}
}
else
{
$errors[]= 'Het veld '.$veld.' ontbreekt.';
}
}
if(empty($errors))
{
if ($securimage->check($_POST['captcha_code']) == false) {
// the code was incorrect
// you should handle the error so that the form processor doesn't continue
// or you can use the following code if there is no validation or you do not know how
echo "The security code entered was incorrect.<br /><br />";
echo "Please go <a href='javascript:history.go(-1)'>back</a> and try again.";
exit;
}
if(mail($to,$subject,$inhoud_mail,$headers))
{
header('Refresh: 3; url=index.html');
echo '<p>Een bevestiging is naar uw email adres verstuurd';
echo '<p>Uw aanvraag is geregistreerd met ip adres: '.$ip.' op datum: ' .$datum.'</p>';
}
else
{
echo "Het formulier is niet verzonden.<br>Probeer het <a href='javascript:history.back(1);'>opnieuw</a>.";
}
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=EPA.html');
foreach($errors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
?>
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';
$securimage = new Securimage();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$to = '[email protected]'.',';
$to .= $_POST['email'];
$subject = 'Uw reservering';
$errors = array();
$data = array();
$ip = $_SERVER['REMOTE_ADDR'];
$datum = date("d.m.Y H:i");
$headers = "From: NoReply@The_Timberwolves.nl\r\n";
$entree = 10;
if ($_POST['ballen'] == 4000)
{
$bal = 90;
}
elseif ($_POST['ballen'] == 2000)
{
$bal = 45;
}
elseif ($_POST['ballen'] < 2000)
{
$bal = $_POST['ballen'] / 500 * 12;
}
elseif ($_POST['ballen'] > 2000 AND $_POST['ballen'] < 4000)
{
$bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
}
else
{
echo 'POST waarde voldoet niet aan bovenstaande eisen!';
}
$totaal = $entree + $bal;
$inhoud_mail = "===============================================================================\n";
$inhoud_mail .= "The Timberwolves\n";
$inhoud_mail .= "===============================================================================\n\n";
$inhoud_mail .= "Uw reservering\n\n";
$inhoud_mail .= "Naam : ".$_POST['naam']."\n";
$inhoud_mail .= "Achternaam : ".$_POST['anaam']."\n";
$inhoud_mail .= "Geb. datum : ".$_POST['dag']."-".$_POST['maand']."-".$_POST['jaar']."\n";
$inhoud_mail .= "Email adres : ".$_POST['email']."\n\n";
$inhoud_mail .= "Team naam : ".$_POST['team']."\n";
$inhoud_mail .= "Aantal ballen : ".$_POST['ballen']."\n";
$inhoud_mail .= "===============================================================================\n\n";
$inhoud_mail .= "Rekening overzicht\n\n";
$inhoud_mail .= "Entree € ".$entree.",--\n";
$inhoud_mail .= "Totaal ballen € ".$bal.",--\n";
$inhoud_mail .= "------------------------------\n";
$inhoud_mail .= "Totaal € ".$totaal.",--\n\n";
$inhoud_mail .= "Ter plaatse betalen\n";
$inhoud_mail .= "LET OP, ER KAN NIET GEPIND WORDEN\n";
$inhoud_mail .= "===============================================================================\n\n";
$inhoud_mail .= "Ons adres:\n";
$inhoud_mail .= "Ossendijk\n";
$inhoud_mail .= "5815 CZ Merselo(Venray)\n\n";
$inhoud_mail .= "www.thetimberwolves.nl\n";
$inhoud_mail .= "===============================================================================\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het ip adres " . $ip . "\n";
$inhoud_mail .= "===============================================================================\n";
// formulier velden declareren
$form = array(
'naam',
'email');
// controle voor alle velden
foreach($form as $veld)
{
if(isset($_POST[$veld]))
{
$value = trim($_POST[$veld]);
$form[$veld] = $value;
// controle van email en postcode
// controle op een geldig email adres
if($veld == 'email')
{
if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$value))
{
$errors[$veld] = true;
$errors[] = 'Dit is geen geldig email adres.';
}
}
if(empty($value))
{
$errors[$veld] = true;
$errors[] = 'U bent uw '.$veld.' vergeten in te vullen';
}
}
else
{
$errors[]= 'Het veld '.$veld.' ontbreekt.';
}
}
if(empty($errors))
{
if ($securimage->check($_POST['captcha_code']) == false) {
// the code was incorrect
// you should handle the error so that the form processor doesn't continue
// or you can use the following code if there is no validation or you do not know how
echo "The security code entered was incorrect.<br /><br />";
echo "Please go <a href='javascript:history.go(-1)'>back</a> and try again.";
exit;
}
if(mail($to,$subject,$inhoud_mail,$headers))
{
header('Refresh: 3; url=index.html');
echo '<p>Een bevestiging is naar uw email adres verstuurd';
echo '<p>Uw aanvraag is geregistreerd met ip adres: '.$ip.' op datum: ' .$datum.'</p>';
}
else
{
echo "Het formulier is niet verzonden.<br>Probeer het <a href='javascript:history.back(1);'>opnieuw</a>.";
}
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=EPA.html');
foreach($errors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
?>
Toevoeging op 13/05/2012 14:23:27:
kan iemand mij vertellen waarom het formulier niet verzonden word?