Недавно написала скрипт, который предлагает пользователю расcчитать стоимость доставки от Москвы в один из 85 городов России, учитывая вес груза. Никогда не занималась разработкой php-скриптов, но начальство сказало сделай и я сделала. Вот только не работает чего-то... =( Видимо, где-то закралась ошибка. Помогите, пожалуйста, уважаемые пользователи, найти её.
И так...
Первая страничка index.php
На ней пользователю предлагается выбрать город и указать вес груза.
Эти значения передаются в файл script.php
В котором и происходит все волшебство. =)
Подключив массив значений (price.php) с индексами город-весовой промежуток (85х11), мы можем получить нужное значение (ставку руб./кг.), которое потом умножаем на вес указанный пользователем.
Возможно, ошибка в синтаксисе, но смотрю и ничего в глаза не попадает.
INDEX.php
<!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>Форма калькулятора</title>
</head>
<body>
<form action='script.php' method='post'>
<p>от Москвы до <select name="city">
<option value='abakan'>Абакан</option>
</select></p>
<p>Вес: <input type="text" name="weight" />кг.</p>
<input type="submit" name="button" value="Считать!">
</form>
</body>
</html>
PRICE.PHP
<?php
// 935
// Abakan (1:1-11)
$price['abakan']['min'] = 1590.00;
$price['abakan']['50'] = 29.70;
$price['abakan']['51-100'] = 24.70;
$price['abakan']['101-200'] = 22.30;
$price['abakan']['201-300'] = 21.10;
$price['abakan']['301-500'] = 20.40;
$price['abakan']['501-1000'] = 20.00;
$price['abakan']['1001-2000'] = 18.20;
$price['abakan']['2001-3000'] = 17.20;
$price['abakan']['3001'] = 16.20;
$price['abakan']['time'] = '6-7';
?>
SCRIPT.PHP
<?php
include('price.php');
$City = $_POST['city'];
$Weight = $_POST['weight'];
if ($Weight <= 50) {$Cargo = '50';}
elseif (51 <= $Weight <= 100) {$Cargo = '51-101';}
elseif (101 <= $Weight <= 200) {$Cargo = '101-200';}
elseif (201 <= $Weight <= 300) {$Cargo = '201-300';}
elseif (301 <= $Weight <= 500) {$Cargo = '301-500';}
elseif (501 <= $Weight <= 1000) {$Cargo = '501-1001';}
elseif (1001 <= $Weight <= 2000) {$Cargo = '1001-2000';}
elseif (2001 <= $Weight <= 3000) {$Cargo = '2001-3000';}
elseif (3001 <= $Weight) {$Cargo = '3001';}
endif;
$Point = $price['$City']['$Cargo'];
$Sum = $Point * $Weight;
?>
<!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>Результат калькуляции</title>
</head>
<body>
<?php echo 'Рузультат подсчета: ' . number_format($Sum, 0, '.','.') . ' руб. за доставку из Москвы в ' . $City . '. По времени перевозка займет: ' . $price['$City']['time'] . '(дня)дней!'; ?>
</body>
</html>
Спустя 1 минута, 58 секунд (2.08.2010 - 11:09) Lenarfate написал(а):
засуньте код в форметер. читать невозможно
Спустя 7 минут, 58 секунд (2.08.2010 - 11:17) inpost написал(а):
Делаешь глупую проверку: echo $point.$price[$city][$cargo]; какие данные не ввелись, там и проблема! А вообще, обрати внимание на эту запись и сравни со своей: $price[$city][$cargo] - вот так должно работать!
Спустя 10 минут, 10 секунд (2.08.2010 - 11:27) Майка написал(а):
inpost, я тебя не поняла.
Я присвоила переменной $Point значение массива $price['$City']['$Cargo'] с подставленными значениями переменных $City и $Cargo.
Я присвоила переменной $Point значение массива $price['$City']['$Cargo'] с подставленными значениями переменных $City и $Cargo.
Спустя 5 минут, 14 секунд (2.08.2010 - 11:32) Ice написал(а):
$Point = $price['$City']['$Cargo'];
Попробуйте здесь поставить двойные кавычки. Вернусь, чуть позже - посмотрю более детально.
Спустя 4 минуты, 7 секунд (2.08.2010 - 11:36) Lenarfate написал(а):
не читай айса. возможно дело в том, что переменные в кавычках, нужно убрать их, как сказал inpost
то есть не так
а так
то есть не так
$Point = $price['$City']['$Cargo'];
а так
$Point = $price[$City][$Cargo];
Спустя 10 минут (2.08.2010 - 11:46) Майка написал(а):
Попробовала, нет результата. А вообще, есть какой-нибудь инструмент для проверки, как в Билдере Си'шном?
Спустя 9 минут, 3 секунды (2.08.2010 - 11:55) Lenarfate написал(а):
если самому дебагер писать...
у меня саш код вообще ошибку выдает
неправильное условие??
может так
??
у меня саш код вообще ошибку выдает
51 <= $Weight <= 100
неправильное условие??
может так
51 <= $Weight && $Weight <= 100
??
Спустя 5 минут, 17 секунд (2.08.2010 - 12:00) Lenarfate написал(а):
по моему последнему посту исправьте все условия. у меня заработало
Спустя 3 минуты, 29 секунд (2.08.2010 - 12:04) Lenarfate написал(а):
вот вам прикрепил.все работает. исправил
Спустя 1 минута, 13 секунд (2.08.2010 - 12:05) Майка написал(а):
Ну, в таком случае, правильнее записать:
Сейчас попробую...
Дополнила...
Ой, и Вы тоже пришли к такому же выражению. Как здорово. Сейчас попробую.
$Weight >= 51 and $Weight <= 100
Сейчас попробую...
Дополнила...
Ой, и Вы тоже пришли к такому же выражению. Как здорово. Сейчас попробую.
Спустя 1 минута, 48 секунд (2.08.2010 - 12:07) Lenarfate написал(а):
я уже выложил выше готовый архив
Спустя 35 минут, 58 секунд (2.08.2010 - 12:43) Ice написал(а):
Цитата (Lenarfate @ 2.08.2010 - 12:36) |
не читай айса. возможно дело в том, что переменные в кавычках, нужно убрать их, как сказал inpost |
Ты полагаешь, что
$Point = $price[$City][$Cargo];
и
$Point = $price["$City"]["$Cargo"];
даст разные результаты в данном случае?
$Point = $price['$City']['$Cargo'];точно ничего путного не даст, так что насчёт не читать ты явно поторопился
Спустя 2 минуты, 14 секунд (2.08.2010 - 12:45) Lenarfate написал(а):
да ладно. все уж и так решили
тема исчерпана

Спустя 1 минута, 6 секунд (2.08.2010 - 12:46) Ice написал(а):
ну дай пофлудить немного на радостях-то

Спустя 7 минут, 1 секунда (2.08.2010 - 12:53) Майка написал(а):
Заработало! Правда, криво... буду корректировать.
Спасибо большое, Lenarfate!
Спасибо большое всем, кто принимал участие в обсуждении!
Спасибо большое, Lenarfate!

Спасибо большое всем, кто принимал участие в обсуждении!
Спустя 5 минут, 48 секунд (2.08.2010 - 12:59) Ice написал(а):
Ну понятно, кто первый, того и лавры

Спустя 28 секунд (2.08.2010 - 13:00) Lenarfate написал(а):


Спустя 27 минут, 57 секунд (2.08.2010 - 13:27) Майка написал(а):
Отдельное спасибо и Ice

Спустя 5 часов, 3 минуты, 13 секунд (2.08.2010 - 18:31) inpost написал(а):
Майка
а я ведь самый первый внес одно изменение...
а я ведь самый первый внес одно изменение...
Спустя 9 минут, 21 секунда (2.08.2010 - 18:40) Lenarfate написал(а):
да расслабьтесь.я ей понравился)
Спустя 1 день, 13 часов, 33 минуты, 32 секунды (4.08.2010 - 08:14) Майка написал(а):
Главное, что помогли... вот, кстати, рабочий скрипт: www.g13.ru/calculator/
Спустя 15 минут, 36 секунд (4.08.2010 - 08:29) Basili4 написал(а):
Ему еще моднявых фишек типа Ajax и будет шик блеск