[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Калькуляция - проблема со скриптом
Майка
Добрый день, сообщество.
Недавно написала скрипт, который предлагает пользователю рас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.

Спустя 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 написал(а):
да ладно. все уж и так решили biggrin.gif тема исчерпана

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

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

Спасибо большое, Lenarfate! wub.gif
Спасибо большое всем, кто принимал участие в обсуждении!

Спустя 5 минут, 48 секунд (2.08.2010 - 12:59) Ice написал(а):
Ну понятно, кто первый, того и лавры biggrin.gif

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

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

Спустя 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 и будет шик блеск
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.