Forum Webscript.Ru

Программирование => Perl => Тема начата: max2003 от 26 Мая 2003, 15:01:28

Название: Help Me!!!!
Отправлено: max2003 от 26 Мая 2003, 15:01:28
Господа!!!
Помогите со скриптом!!
Ошибка заключается в том, что данные подставляются другие.

листинг скрипта:

$count=$in{\'id\'};

#----------
if ($count == \'id101\'){$ds101 == $in{\'Car\'};
if ($ds101 == \'0\'){$usr101 == 2.0} if ($ds101 == \'1\'){$usr101 == 1.7} if ($ds101 == \'2\'){$usr101 == 1.8}
if ($ds101 == \'3\'){$usr101 == 1.8} if ($ds101 == \'4\'){$usr101 == 1.8} if ($ds101 == \'5\'){$usr101 == 1.8}
if ($ds101 == \'6\'){$usr101 == 1.8} if ($ds101 == \'7\'){$usr101 == 1.8} if ($ds101 == \'8\'){$usr101 == 1.8}
if ($ds101 == \'9\'){$usr101 == 1.8} $ass = @w[2]* $usr101; $rrr =sprintf "%.1f", $ass;}

#----------
if ($count == \'id102\'){$ds102 == $in{\'Car\'};
if ($ds102 == \'0\'){$usr102 == 3.0} if ($ds102 == \'1\'){$usr102 == 1.6} if ($ds102 == \'2\'){$usr102 == 1.7}
if ($ds102 == \'3\'){$usr102 == 1.5} if ($ds102 == \'4\'){$usr102 == 1.5} if ($ds102 == \'5\'){$usr102 == 1.5}
if ($ds102 == \'6\'){$usr102 == 1.5} if ($ds102 == \'7\'){$usr102 == 1.5} if ($ds102 == \'8\'){$usr102 == 1.5}
if ($ds102 == \'9\'){$usr102 == 1.5} $ass = @w[2]* $usr; $rrr =sprintf "%.1f", $ass;}

#----------
if ($count == \'id103\'){$ds103 == $in{\'Car\'};
if ($ds103 == \'0\'){$usr103 == 4.0} if ($ds103 == \'1\'){$usr103 = 1.9} if ($ds103 == \'2\'){$usr103 == 1.7}
if ($ds103 == \'3\'){$usr103 == 1.5} if ($ds103 == \'4\'){$usr103 = 1.5} if ($ds103 == \'5\'){$usr103 == 1.5}
if ($ds103 == \'6\'){$usr103 == 1.5} if ($ds103 == \'7\'){$usr103 = 1.5} if ($ds103 == \'8\'){$usr103 == 1.5}
if ($ds103 == \'9\'){$usr103 == 1.5} $ass = @w[2]* $usr103; $rrr =sprintf "%.1f", $ass;}
Название: Help Me!!!!
Отправлено: Mog. от 26 Мая 2003, 15:18:14
Э... вот строка
Цитировать
if ($ds101 == \'0\'){$usr101 == 2.0} if ($ds101 == \'1\'){$usr101 == 1.7} if ($ds101 == \'2\'){$usr101 == 1.8}

если где то в ней присвоение нужно (исходя из логики работы), то замени "==" на "=", т.к. "==" это не есть присвоение. Может поэтому
Цитировать
данные подставляются другие
Название: Help Me!!!!
Отправлено: max2003 от 26 Мая 2003, 17:01:37
Заменил на "=", то же самое.
Самое интересное, что при первой загрузке скрипта (с получение данных с формы) скрипт присваивает переменным правильные значения. Но когда заходишь с другими данными с формы он оставляет их прежними. Аналогично с других машин в сети!!!
Название: Help Me!!!!
Отправлено: NeoNox от 26 Мая 2003, 18:11:51
max2003 ты кроме if и == больше никаких операторов не знаешь?
Обьясни мне что делает эта строка if ($count == \'id101\'){$ds101 == $in{\'Car\'};
Название: Help Me!!!!
Отправлено: Alone от 26 Мая 2003, 18:14:29
Цитировать
max2003:
if ($count == \'id101\'){$ds101 == $in{\'Car\'};

Наверное правильнее былобы
if ($count eq \'id101\'){$ds101 = $in{\'Car\'};

А вот интересно во что превратится скрипт если
idXXX будет лежать в диапозоне id100 - id 901
:)
Название: Help Me!!!!
Отправлено: max2003 от 26 Мая 2003, 18:39:01
Уважаемый NeoNox!!!!

Данная строка

if ($count == \'id101\'){$ds101 == $in{\'Car\'};

на мой взгляд значит следующее:

с поля формы с NAME (id) получаем данные и заносим их в переменную $count, далее смотрим соответствует ли она id101, если соответствует, то $ds101 присваиваем данные с другой формы $in{\'Car\'}.....

P.S. NeoNox может Вы и правы на счет операторов..... Обидно.....
Название: Help Me!!!!
Отправлено: NeoNox от 26 Мая 2003, 18:56:28
max2003 на самом деле это оператор сравнения.
Оператор присваивания "=".

Пример:
my $sex = 2;
if ($sex == 1)
{
 print "This is the boy";
}else{
print "This is the girl";
}
При этом $sex все еще остается равной двум.
Надеюсь понятно?
И совет на будующее - если ваша программа состоит только из несметного количества операторов if -проверьте логику, найдете массу ошибок.
Название: Help Me!!!!
Отправлено: max2003 от 26 Мая 2003, 19:06:42
Уважаемый NeoNox!!!!

Скоре всего действитель в скрипте потеряна логика, по большему счету if`ов там порядочное кол-во!!!

Спасибо за поддержку!!!!
Название: Help Me!!!!
Отправлено: max2003 от 26 Мая 2003, 19:24:16
Так в чем же все таки ошибка!!!
Если все эти действия выполняются в теле else!!!!
Название: Help Me!!!!
Отправлено: NeoNox от 26 Мая 2003, 19:30:46
Какой else?
Ты напиши своими словами как должен работать блок.
Если $count равняется \'id101\' то делаем то-то и то-то.
Название: Help Me!!!!
Отправлено: max2003 от 26 Мая 2003, 19:39:55
Идея была таковой:

пользователь вводит пароль, если он правильный, то загружаем форму поиска , если нет сообщение об ошибке. Далее в поле вводим искомый код, если его нет ошибка, есть (else) обрабатываем и присваиваем данные и данные подставляем в HTML.
Название: Help Me!!!!
Отправлено: max2003 от 27 Мая 2003, 14:48:42
Я разобрался с проблемой!!!

Исходный текст таков:

if ($count eq \'id101\'){ &counter01; }
else {}
if ($count eq \'id102\'){ &counter02; }
else {}

sub counter01
{
$ds = $in{\'Car\'};
if ($ds == \'0\'){$usr = 6.0} if ($ds == \'1\'){$usr = 2.0} if ($ds == \'2\'){$usr = 1.7}
if ($ds == \'3\'){$usr = 1.5} if ($ds == \'4\'){$usr = 1.5} if ($ds == \'5\'){$usr = 1.5}
if ($ds == \'6\'){$usr = 1.5} if ($ds == \'7\'){$usr = 1.5} if ($ds == \'8\'){$usr = 1.5}
if ($ds == \'9\'){$usr = 1.5} $ass = @w[2]* $usr; $rrr =sprintf "%.1f", $ass;
$hide ="id101";
}
sub counter02
{
$ds = $in{\'Car\'};
if ($ds == \'0\'){$usr = 3.0} if ($ds == \'1\'){$usr = 4.0} if ($ds == \'2\'){$usr = 1.7}
if ($ds == \'3\'){$usr = 1.5} if ($ds == \'4\'){$usr = 1.5} if ($ds == \'5\'){$usr = 1.5}
if ($ds == \'6\'){$usr = 1.5} if ($ds == \'7\'){$usr = 1.5} if ($ds == \'8\'){$usr = 1.5}
if ($ds == \'9\'){$usr = 1.5} $ass = @w[2]* $usr; $rrr =sprintf "%.1f", $ass;
$hide ="id102";
}

.
.
.
.

P.S. Спасибо всем за помощь....... MAX2003