Ниже пример скрипта , интересно ваше мнение , устоит ли такой для данной платформы?
Калькулятор расчета стоимости отправки груза на PHP. Новая ветка статей на workmake.ru
Сегодня я разбирал «завалы» своих скриптов на одном из компьютеров и мне на глаза попалась папка со старыми заказами и тренировочными скриптами. Обычно свои старые скрипты удаляю, т.к. они мне в большинстве своем не нравятся (наверно вам тоже знакомо это чувство, когда вы набрались по-больше опыта чем раньше, и уверены что все предыдущие работы можно было выполнить более качественно), но на этот раз мне на ум пришла другая идея — выложить некоторые из них на свой сайт. Почему некоторые? К сожалению, я не смогу выложить в сеть все что у меня накопилось, т.к. некоторые мои движки до сих пор работают и, как вы понимаете, выкладывать их исходники будет небезопасно для сайтов основанных на них (изучив исходники можно изрядно напакостить администраторам сайта).
Для «затравки» выложу один простенький скрипт калькулятора, который будет рассчитывать стоимость отправки груза. Контактные данные фирмы я, конечно, уберу, но все остальное останется так, как это было около 2-х лет назад. Скрипт состоит из одного файла, который в свою очередь содержит только один класс. Хоть и не сохранилось технического задания (помню только что этот скрипт потом встроили в WordPress), разобраться в скрипте будет довольно просто. Вот его исходный код:
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
<?php
// объявляем класс калькулятор
class calculator
{
// отображение калькулятора на экране
public function ShowCalculatorForm()
{
?>
<style type="text/css">
div:before{
content:attr(title);
display:none;
}
div:hover{
z-index:10;
position:relative;
}
.tablestyle {
border-color: #1F707A;
border-width: thick;
}
</style>
<form method="post" action="index.php">
<b>Маршрут</b><br /><br />
<table border="1" class="tablestyle">
<tr>
<td>
<table>
<tr>
<td>Пункт отправления</td>
<td>
<div title="Выберите пункт отправления груза из выпадающего списка">
<img src="hint.gif" />
</div>
</td>
</tr>
</table>
</td>
<td>
<select name="punkt_otpravleniya">
<option>Москва</option>
<option>Волгоград</option>
<option>Астрахань</option>
</select>
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td>Пункт назначения</td>
<td>
<div title="Выберите пункт назначения груза из выпадающего списка">
<img src="hint.gif" />
</div>
</td>
</tr>
</table>
</td>
<td>
<select name="punkt_naznacheniya">
<option>Москва</option>
<option>Волгоград</option>
<option>Астрахань</option>
</select>
</td>
</tr>
</table> <br />
<b>Характеристика груза</b><br /><br />
<table border="1" class="tablestyle">
<tr>
<td>
<table>
<tr>
<td>
<input type="radio" name="gabarit" value="1" checked="checked"/>
</td>
<td>Габарит</td>
<td>
<div title="Поставьте соответствующее значение габарита/негабарита, учитывая, что габаритными параметрами одного места в партии считаются: вес - менее 1000 кг (1 т), сумма измерений трех сторон - менее 4 м">
<img src="hint.gif" />
</div>
</td>
</tr>
</table>
<table>
<tr>
<td><input type="radio" name="gabarit" value="0" /></td>
<td>Негабарит</td>
<td>
<div title="Поставьте соответствующее значение габарита/негабарита, учитывая, что габаритными параметрами одного места в партии считаются: вес - менее 1000 кг (1 т), сумма измерений трех сторон - менее 4 м">
<img src="hint.gif" />
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td>Вес, кг</td>
<td>
<div title="Вес груза не должен превышать 20 000 кг (20 т)">
<img src="hint.gif" />
</div>
</td>
<td>
<input name="ves" type="text" size="10" maxlength="30" placeholder="Не более 20т"/>
</td>
</tr>
</table>
<table>
<tr>
<td>Объем, м<sup>3</sup></td>
<td>
<div title="Объем груза не должен превышать 80 кб.м.">
<img src="hint.gif" />
</div>
</td>
<td>
<input name="obiem" type="text" size="10" maxlength="30" placeholder="Не более 90"/>
</td>
</tr>
</table>
</td>
</tr>
</table> <br />
<table>
<tr>
<td><b>Упаковка груза</b> (деревянная обрешетка</td>
<td>
<div title="Изготовление деревянной упаковки индивидуально по размеру груза. Подлежат обязательной обрешетке изделия из стекла, керамики, гипса, сантехнического фаянса, мебель со стеклянными элементами, оборудование с хрупкими или стеклянными элементами, кузовные автозапчасти, холодильное оборудование, солярии, ванны, душевые кабины, оборудование и металлоконструкции, имеющие неправильную геометрическую форму, жидки и текучие грузы в любой упаковке. ">
<img src="hint.gif" /> )
</div>
</td>
</tr>
</table> <br />
<table border="1" class="tablestyle">
<tr>
<td>
<table>
<tr>
<td>
<input type="radio" name="upakovka" value="0" checked="checked" /> Без упаковки
</td>
</tr>
</table>
<table>
<tr>
<td>
<input type="radio" name="upakovka" value="1" /> Ящик глухой
</td>
</tr>
</table>
<table>
<tr>
<td>
<input type="radio" name="upakovka" value="2" /> Ящик с крестообразными стенами
</td>
</tr>
</table>
<table>
<tr>
<td>
<input type="radio" name="upakovka" value="3" /> Подставка с крышкой
</td>
</tr>
</table>
<table>
<tr>
<td>
<input type="radio" name="upakovka" value="4" /> Поддон
</td>
</tr>
</table>
</td>
</tr>
</table><br />
<input type="submit" value="Рассчитать" />
</form>
<?php
}
// метод рассчитывающий стоимость отправки груза
public function CalculateResult()
{
$punkt_otpravleniya = $_POST['punkt_otpravleniya'];
$punkt_naznacheniya = $_POST['punkt_naznacheniya'];
$gabarit = $_POST['gabarit'];
$upakovka = $_POST['upakovka'];
$ves = $_POST['ves'];
$obiem = $_POST['obiem'];
$resultat = 0;
$coethicient = 0;
if($punkt_otpravleniya == $punkt_naznacheniya)
echo "Нельзя указывать один и тот же город в пункте отправления и назначения!";
else
{
echo "Пункт отправления: ".$punkt_otpravleniya.'<br />';
echo "Пункт назначения: ".$punkt_naznacheniya.'<br />';
echo "Пункт габариты: ".$gabarit.'<br />';
echo "Упаковка: ".$upakovka.'<br />';
echo "Вес: ".$ves.'<br />';
echo "Объем: ".$obiem.'<br />';
//echo "<br>Переменная буф: ".$buf;
//echo "<br>Переменная obiem: ".$obiem;
if(($ves / 200) <= $obiem) [size=1]
{ [size=1]
if($punkt_otpravleniya == "Москва" && $punkt_naznacheniya == "Астрахань") [size=1]
$coethicient = 1350;[/size] [size=1]
else if($punkt_otpravleniya == "Астрахань" && $punkt_naznacheniya == "Москва")[/size] [size=1]
$coethicient = 1350;[/size] [size=1]
else if($punkt_otpravleniya == "Москва" && $punkt_naznacheniya == "Волгоград")[/size] [size=1]
$coethicient = 900;[/size] [size=1]
else if($punkt_otpravleniya == "Волгоград" && $punkt_naznacheniya == "Москва")[/size] [size=1]
$coethicient = 900;[/size] [size=1]
else if($punkt_otpravleniya == "Волгоград" && $punkt_naznacheniya == "Астрахань")[/size] [size=1]
$coethicient = 600;[/size] [size=1]
else if($punkt_otpravleniya == "Астрахань" && $punkt_naznacheniya == "Волгоград")[/size] [size=1]
$coethicient = 600;[/size]
[size=1]
$resultat = $obiem * $coethicient;[/size] [size=1]
}[/size] [size=1]
else[/size] [size=1]
{[/size] [size=1]
if($punkt_otpravleniya == "Москва" && $punkt_naznacheniya == "Астрахань")[/size] [size=1]
$coethicient = 6.75;[/size] [size=1]
else if($punkt_otpravleniya == "Астрахань" && $punkt_naznacheniya == "Москва")[/size] [size=1]
$coethicient = 6.75;[/size] [size=1]
else if($punkt_otpravleniya == "Москва" && $punkt_naznacheniya == "Волгоград")[/size] [size=1]
$coethicient = 4.5;[/size] [size=1]
else if($punkt_otpravleniya == "Волгоград" && $punkt_naznacheniya == "Москва")[/size] [size=1]
$coethicient = 4.5;[/size] [size=1]
else if($punkt_otpravleniya == "Волгоград" && $punkt_naznacheniya == "Астрахань")[/size] [size=1]
$coethicient = 3;[/size] [size=1]
else if($punkt_otpravleniya == "Астрахань" && $punkt_naznacheniya == "Волгоград")[/size] [size=1]
$coethicient = 3;[/size]
[size=1]
$resultat = $ves * $coethicient;[/size] [size=1]
}[/size]
[size=1]
if($gabarit != "1")[/size] [size=1]
{[/size] [size=1]
//увеличиваем на 25%[/size] [size=1]
$procent = $resultat / 4;[/size] [size=1]
$resultat += $procent;[/size] [size=1]
}[/size]
[size=1]
//650*объём груза,2)450*объём груза,3)350*объём груза;4)150*обЪём груза[/size] [size=1]
//100%[/size] [size=1]
if($upakovka == "1")[/size] [size=1]
$resultat += 650 * $obiem;[/size] [size=1]
//75%[/size] [size=1]
else if($upakovka == "2")[/size] [size=1]
$resultat += 450 * $obiem;[/size] [size=1]
//50%[/size] [size=1]
else if($upakovka == "3")[/size] [size=1]
$resultat += 350 * $obiem;[/size] [size=1]
//25%[/size] [size=1]
else if($upakovka == "4")[/size] [size=1]
$resultat += 150 * $obiem;[/size]
[size=1]
echo "<br><br> Результат: ".$resultat;[/size] [size=1]
}[/size] [size=1]
}[/size]
[size=1]
public function ExecuteCalculator()[/size] [size=1]
{[/size] [size=1]
if(isset($_POST['punkt_otpravleniya']))[/size] [size=1]
$this->CalculateResult();[/size] [size=1]
else[/size] [size=1]
$this->ShowCalculatorForm();[/size] [size=1]
}[/size] [size=1]
}[/size]
[size=1]
$calc = new calculator();[/size] [size=1]
$calc->ExecuteCalculator();[/size] [size=1]
?>[/size] [/size] [/size]
В данном скрипте используется одна картинка (вопросительный знак), ее вы можете скачать (как и файл со скриптом) в конце статьи. Комментарии в данном скрипте сохранены в таком виде, в котором они были и раньше. Работу скрипта можно описать следующим образом: создается экземпляр класса «calculator» и вызывается его единственный «public» метод «ExecuteCalculator», который и выполняет всю работу. Разберем подробнее метод «ExecuteCalculator». В начале мы определяем была ли нажата кнопка «Рассчитать», если она была нажата, то массив «$_POST» будет содержать какое-нибудь значения (как вы видите я взял «punkt_otpravleniya») и, следовательно, нам нужно рассчитать стоимость перевозки
[size=1]
[size=1]
1
2
[size=1]
if(isset($_POST['punkt_otpravleniya']))[/size] [size=1]
$this->CalculateResult();[/size] [/size] [/size]
с помощью метода «CalculateResult». Если же массив «$_POST» пуст, то просто выводим на экран форму нашего калькулятора (за это у нас отвечает метод «ShowCalculatorForm»).
[size=1]
[size=1]
1
2
[size=1]
else[/size] [size=1]
$this->ShowCalculatorForm();[/size] [/size] [/size]
Работу методов «CalculateResult» и «ShowCalculatorForm» описывать не буду, т.к. там нет ничего сложного.