eenvoudig script berekening
Ik ben bezig met een eenvoudig script maar dit lukt nog niet zo.
In het script wil ik;
- vragen om het aantal m2 in een nette invulveld.
- Een knop "berekenen" (submit)
Dan als antwoord weergeven het ingevulde aantal * 2
wie zou hier een eenvoudig voorbeeld van kunnen plaatsen?Als het kan met nette opvang als er bijvoorbeeld tekst wordt ingevuld.
Alvast bedankt!
Code (php)
Gewijzigd op 07/07/2010 13:09:44 door Sander de Vos
if($_SERVER['REQUEST_METHOD'] == 'POST')
De haakjes hoeven niet om de berekening (doe je ook niet bij wiskunde).
Je kunt ook gewoon direct $_POST['m2'] * 2 doen.
Als hij meerdere forms in z'n php bestand zet, weet je dus niet welk gedeelte hij moet uitvoeren. Met '$_POST['m2']' geef ik dat dus aan.
Tussen haakjes ziet er naar mijn mening toch echt een stuk beter uit.
De haakjes veroorzaken alleen maar verwarring vind ik, want ze zijn dus niet nodig.
Hidden input kan ook ja, maar gebruikt alleen maar meer ruimte, en veroorzaakt een onnodige input. Want de input m2 alleen, is al genoeg om aan te wijzen welk deel van de php pagina moet worden uitgevoerd.
Sander de Vos op 07/07/2010 14:27:29:
Verwarring als je er niet mee kom kan gaan ja, anders is het heel logisch.
Hidden input kan ook ja, maar gebruikt alleen maar meer ruimte, en veroorzaakt een onnodige input. Want de input m2 alleen, is al genoeg om aan te wijzen welk deel van de php pagina moet worden uitgevoerd.
Hidden input kan ook ja, maar gebruikt alleen maar meer ruimte, en veroorzaakt een onnodige input. Want de input m2 alleen, is al genoeg om aan te wijzen welk deel van de php pagina moet worden uitgevoerd.
Waarom mag een extra input, die er juist voor kan zorgen dat het duidelijker wordt, volgens jou niet? En moeten haakjes, die totaal geen toegevoegde waarden hebben, juist weer wel?
Dat is inconsequent.
De haakjes zorgen voor verwarring omdat ze niet nodig (ook wiskundig niet), als je ze dan wel zou gebruiken zou dat erop kunnen duiden dat er wat speciaals aan de hand is. Wat niet het geval is. Ook scheelt het weer tik werk.
Er is met de regel echt gewoon niks aan de hand. Dat jij het onduidelijk vind, licht niet aan mij, maar aan jou. Iedereen heeft een eigen mening over wat wel of niet duidelijk is. Om nou met iedereen rekening te houden is nogal omslagtig, en kost nog meer 'tikwerk'.
Kijk anders even op http://www.google.nl/#hl=nl&q=if+isset+_post&aq=1&aqi=g6&aql=&oq=if+(isset(%24_p&gs_rfai=&fp=1&cad=b en klik voor de grap is wat linkjes aan. Hit de CTRL+F knop op je toetsenbord, en tik isset(_POST[' is in.
Wiskundig zijn de haakjes bij de uitreken som niet nodig. Ik doe dit echter gewoon op mijn manier, omdat ik het wél overzichtelijker vind. Vind je dit niet, haal de haakjes dan weg.
Gewijzigd op 07/07/2010 14:43:23 door Sander de Vos
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
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
<?php
/*--------------------------------------------------------------------------------------------------------------------------
(§) Settings.
--------------------------------------------------------------------------------------------------------------------------*/
#| Minimaal aantal meters.
$min_meters = 1;
#| Maximaal aantal meters.
$max_meters = 10;
/*--------------------------------------------------------------------------------------------------------------------------
(§) Defaults.
--------------------------------------------------------------------------------------------------------------------------*/
#| Set " $error_log " array voor het opslaan van alle fouten.
$error_log = array();
#| Set " $msg " variabele voor het opslaan van het resultaat / bericht.
$msg = 'Vul hieronder het aantal gewenste meters in.';
/*--------------------------------------------------------------------------------------------------------------------------
(§) Aantal vierkante meters berekenen.
--------------------------------------------------------------------------------------------------------------------------*/
#| Kijken of het formulier is verzonden.
if($_SERVER['REQUEST_METHOD'] == 'POST'){
/*---- INFO: Ja het formulier is verzonden. ----*/
#| Eerst controleren we of het formulier veld " m2 " is mee verzonden.
if(isset($_POST['m2'])){
/*---- INFO: Ja het formulier veld " m2 " is mee verzonden. ----*/
#| Dan kunnen we nu controleren of er een geldig aantal meters is ingevuld.
if(!in_array($_POST['m2'], range($min_meters, $max_meters))){
/*---- INFO: Helaas! er is een ongeldig aantal meters ingevuld. ----*/
#| Error toevoegen.
$error_log[] = 'Ongeldig aantal meters, U dient een getal in te vullen tussen de '.$min_meters.' en '.$max_meters.'.';
}
}
else{
#| Error toevoegen.
$error_log[] = 'Het formulier veld " m2 " is niet mee verzonden.';
}
#| Kijken of er niets fout is gegaan.
if(empty($error_log)){
/*---- INFO: Hoera! er is niets fout gegaan. ----*/
#| Uitkomst berekenen en deze gebruiken om de default waarde van " $msg " te vervangen.
$msg = 'Uitkomst: '.( $_POST['m2'] * 2 ).' vierkante meter.';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Vierkante meters.</title>
</head>
<body>
<?php
/*--------------------------------------------------------------------------------------------------------------------------
(§) Eventuele fouten en het resultaat weergeven.
--------------------------------------------------------------------------------------------------------------------------*/
#| Eerst controleren of er fouten zijn die moeten worden weergegeven.
if(!empty($error_log)){
/*---- INFO: Er zijn helaas fouten. ----*/
#| De fouten in een lijstje weergeven.
echo '<ol><li>'.implode('</li><li>', $error_log).'</li></ol>';
}
#| Resultaat terug geven.
echo $msg;
?>
<form method="post" action="" />
Aantal meter: <input type="text" name="m2" /> <input type="submit" value="Berekenen" />
</form>
</body>
</html>
/*--------------------------------------------------------------------------------------------------------------------------
(§) Settings.
--------------------------------------------------------------------------------------------------------------------------*/
#| Minimaal aantal meters.
$min_meters = 1;
#| Maximaal aantal meters.
$max_meters = 10;
/*--------------------------------------------------------------------------------------------------------------------------
(§) Defaults.
--------------------------------------------------------------------------------------------------------------------------*/
#| Set " $error_log " array voor het opslaan van alle fouten.
$error_log = array();
#| Set " $msg " variabele voor het opslaan van het resultaat / bericht.
$msg = 'Vul hieronder het aantal gewenste meters in.';
/*--------------------------------------------------------------------------------------------------------------------------
(§) Aantal vierkante meters berekenen.
--------------------------------------------------------------------------------------------------------------------------*/
#| Kijken of het formulier is verzonden.
if($_SERVER['REQUEST_METHOD'] == 'POST'){
/*---- INFO: Ja het formulier is verzonden. ----*/
#| Eerst controleren we of het formulier veld " m2 " is mee verzonden.
if(isset($_POST['m2'])){
/*---- INFO: Ja het formulier veld " m2 " is mee verzonden. ----*/
#| Dan kunnen we nu controleren of er een geldig aantal meters is ingevuld.
if(!in_array($_POST['m2'], range($min_meters, $max_meters))){
/*---- INFO: Helaas! er is een ongeldig aantal meters ingevuld. ----*/
#| Error toevoegen.
$error_log[] = 'Ongeldig aantal meters, U dient een getal in te vullen tussen de '.$min_meters.' en '.$max_meters.'.';
}
}
else{
#| Error toevoegen.
$error_log[] = 'Het formulier veld " m2 " is niet mee verzonden.';
}
#| Kijken of er niets fout is gegaan.
if(empty($error_log)){
/*---- INFO: Hoera! er is niets fout gegaan. ----*/
#| Uitkomst berekenen en deze gebruiken om de default waarde van " $msg " te vervangen.
$msg = 'Uitkomst: '.( $_POST['m2'] * 2 ).' vierkante meter.';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Vierkante meters.</title>
</head>
<body>
<?php
/*--------------------------------------------------------------------------------------------------------------------------
(§) Eventuele fouten en het resultaat weergeven.
--------------------------------------------------------------------------------------------------------------------------*/
#| Eerst controleren of er fouten zijn die moeten worden weergegeven.
if(!empty($error_log)){
/*---- INFO: Er zijn helaas fouten. ----*/
#| De fouten in een lijstje weergeven.
echo '<ol><li>'.implode('</li><li>', $error_log).'</li></ol>';
}
#| Resultaat terug geven.
echo $msg;
?>
<form method="post" action="" />
Aantal meter: <input type="text" name="m2" /> <input type="submit" value="Berekenen" />
</form>
</body>
</html>
Sander de Vos op 07/07/2010 14:41:38:
Ik snap van jou nou nog steeds niet helemaal wat het probleem is bij:
Er is met de regel echt gewoon niks aan de hand. Dat jij het onduidelijk vind, licht niet aan mij, maar aan jou. Iedereen heeft een eigen mening over wat wel of niet duidelijk is. Om nou met iedereen rekening te houden is nogal omslagtig, en kost nog meer 'tikwerk'.
Er is met de regel echt gewoon niks aan de hand. Dat jij het onduidelijk vind, licht niet aan mij, maar aan jou. Iedereen heeft een eigen mening over wat wel of niet duidelijk is. Om nou met iedereen rekening te houden is nogal omslagtig, en kost nog meer 'tikwerk'.
Als je even leest vind ik dit niet onduidelijk, ik vind dit niet te bedoeling. Je doet gewoon altijd overal dezelfde standaard volgen (dat is met request method). Uit deze manier die jij nu aandraagt, kan de conclusie worden gekeken dat er ook naar de submit variabele kan gekeken worden. Dit is niet het geval. Die wordt namelijk niet altijd gezet.
Sander de Vos op 07/07/2010 14:41:38:
Wiskundig zijn de haakjes bij de uitreken som niet nodig. Ik doe dit echter gewoon op mijn manier, omdat ik het wél overzichtelijker vind. Vind je dit niet, haal de haakjes dan weg.
Wiskundig gezien zijn de haakjes bijna nooit nodig. Als je maar de juiste volgorde weet. Je leert ook bij wiskunde dat je de som zo duidelijk mogelijk wilt houden, met te veel haakjes is dat dus niet het geval.
Die oplossing van Mark is het mooiste (want die doet ook gelijk html d'r bij, dus geen halve pagina). Al is ie misschien inderdaad wel wat doorgeschoten met die error log.
Amen.
Allen zeer bedankt voor de uitgebreide reacties. /Ik kan hier zeker iets mee, is zo goede te volgen.
Nogmaals bedankt!
Een oppervlakte berekenen doe je met kwadraat of lengte * breedte.
Gewijzigd op 07/07/2010 15:43:17 door - SanThe -
misschien is het een vierkant?
Johan Dam op 07/07/2010 16:09:57:
misschien is het een vierkant?
Dan is het nog steeds geen * 2.
SanThe Nvt op 07/07/2010 16:11:24:
Dan is het nog steeds geen * 2.
Johan Dam op 07/07/2010 16:09:57:
misschien is het een vierkant?
Dan is het nog steeds geen * 2.
Misschien is het niet m^2, maar gewoon 2m, dus dan is het wel *2.
2 is een willekeurig getal, de juiste verhouding was nog niet bekend, inmiddel 1,5 van gemaakt.
PS waar ben je dit eigenlijk voor aan het gebruiken als ik vragen mag?
Verander
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
/*---- INFO: Ja het formulier veld " m2 " is mee verzonden. ----*/
#| Dan kunnen we nu controleren of er een geldig aantal meters is ingevuld.
if(!in_array($_POST['m2'], range($min_meters, $max_meters))){
/*---- INFO: Helaas! er is een ongeldig aantal meters ingevuld. ----*/
#| Error toevoegen.
$error_log[] = 'Ongeldig aantal meters, U dient een getal in te vullen tussen de '.$min_meters.' en '.$max_meters.'.';
}
?>
/*---- INFO: Ja het formulier veld " m2 " is mee verzonden. ----*/
#| Dan kunnen we nu controleren of er een geldig aantal meters is ingevuld.
if(!in_array($_POST['m2'], range($min_meters, $max_meters))){
/*---- INFO: Helaas! er is een ongeldig aantal meters ingevuld. ----*/
#| Error toevoegen.
$error_log[] = 'Ongeldig aantal meters, U dient een getal in te vullen tussen de '.$min_meters.' en '.$max_meters.'.';
}
?>
in
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
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
<?php
/*---- INFO: Ja het formulier veld " m2 " is mee verzonden. ----*/
#| Dan kunnen we nu controleren of er een numerieke waarde is ingevuld.
if(ctype_digit($_POST['m2'])){
/*---- INFO: De ingevulde waarde voor " $_POST['m2'] " is numeriek. ----*/
#| Dan gaan we nu controleren of " $_POST['m2'] " een waarde heeft binnen het minimale en maximale aantal meters.
if($_POST['m2'] < $min_meters){
/*---- INFO: " $_POST['m2'] " is minder dan het minimaal aantal meters. ----*/
#| Error toevoegen.
$error_log[] = 'X';
}
elseif($_POST['m2'] > $max_meters){
/*---- INFO: " $_POST['m2'] " is meer dan het maximale aantal meters. ----*/
#| Error toevoegen.
$error_log[] = 'Y';
}
}
else{
#| Error toevoegen.
$error_log[] = 'De waarde ingevoerd voor het aantal meters dient numeriek te zijn.';
}
?>
/*---- INFO: Ja het formulier veld " m2 " is mee verzonden. ----*/
#| Dan kunnen we nu controleren of er een numerieke waarde is ingevuld.
if(ctype_digit($_POST['m2'])){
/*---- INFO: De ingevulde waarde voor " $_POST['m2'] " is numeriek. ----*/
#| Dan gaan we nu controleren of " $_POST['m2'] " een waarde heeft binnen het minimale en maximale aantal meters.
if($_POST['m2'] < $min_meters){
/*---- INFO: " $_POST['m2'] " is minder dan het minimaal aantal meters. ----*/
#| Error toevoegen.
$error_log[] = 'X';
}
elseif($_POST['m2'] > $max_meters){
/*---- INFO: " $_POST['m2'] " is meer dan het maximale aantal meters. ----*/
#| Error toevoegen.
$error_log[] = 'Y';
}
}
else{
#| Error toevoegen.
$error_log[] = 'De waarde ingevoerd voor het aantal meters dient numeriek te zijn.';
}
?>
Gewijzigd op 16/07/2010 01:03:25 door - Mark -