/
task1.php
135 lines (116 loc) · 2.86 KB
/
task1.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
<?php
require_once 'functions.php';
$result = '';
$operations = [
1 => '+',
2 => '-',
3 => '*',
4 => '/',
];
$validationErrors = [];
$operationFromPost = getValue($_POST, 'operation');
$firstNumber = getValue($_POST, 'firstNumber');
$secondNumber = getValue($_POST, 'secondNumber');
function validateForm(&$errors) {
global $firstNumber, $secondNumber, $operation;
if (!validateRequired($firstNumber)) {
$errors['firstNumber'][] = 'Please enter a number.';
} else if (!validateNumeric($firstNumber)) {
$errors['firstNumber'][] = 'This must be a number!';
}
if (!validateRequired($secondNumber)) {
$errors['secondNumber'][] = 'Please enter a number.';
} else {
if (!validateNumeric($secondNumber)) {
$errors['secondNumber'][] = 'This must be a number!';
}
}
return empty($errors);
}
if ($_POST) {
validateForm($validationErrors);
}
switch($operationFromPost){
case 1:
$result = $firstNumber+$secondNumber;
break;
case 2:
$result = $firstNumber-$secondNumber;
break;
case 3:
$result = $firstNumber*$secondNumber;
break;
case 4:
if(isZero($secondNumber)){
$result = "Error: division by zero is not allowed!";
}else{
$result = $firstNumber/$secondNumber;
}
break;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Calculator</title>
<link rel="stylesheet" type="text/css" href="reset.css"/>
<style type="text/css">
body{
font-family: Helvetica;
font-size: 16px;
}
form > div {
margin: 0 0 3px 0;
}
form > div > label {
display: inline-block;
width: 100px;
}
form div.error {
color: red;
}
form div.error input,
form div.error select,
form div.error textarea {
border-color: red;
}
</style>
</head>
<body>
<div id="main">
<form action="" method="post">
<div class="<?= getFieldErrorClass($validationErrors, 'firstNumber')?>">
<label for="firstNumber">Enter the first number:</label>
<input type="text" id="firstNumber" name="firstNumber" value="<?= $firstNumber ?>"/>
<?= formErrors(getValue($validationErrors, 'firstNumber', [])) ?>
</div>
<br>
<br>
<div class="<?= getFieldErrorClass($validationErrors, 'secondNumber')?>">
<label for="secondNumber">Enter the second number:</label>
<input type="text" id="secondNumber" name="secondNumber" value="<?= $secondNumber ?>"/>
<?= formErrors(getValue($validationErrors, 'secondNumber', [])) ?>
</div>
<br>
<br>
<div>
<label>Please choose the operation:</label>
<select name="operation">
<?php foreach ($operations as $key => $value) :?>
<option value="<?= $key?>"><?=$value?></option>
<?php endforeach;?>
</select>
</div>
<br>
<br>
<input type="submit" />
<div class="<?= getFieldResultClass($validationErrors, 'firstNumber', 'secondNumber')?>">
<label for="result">The result is:</label>
<br>
<?= $result ?>
</div>
</form>
</div>
</body>
</html>