Forum Webscript.Ru
Программирование => Perl => Тема начата: 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;}
-
Э... вот строка
if ($ds101 == \'0\'){$usr101 == 2.0} if ($ds101 == \'1\'){$usr101 == 1.7} if ($ds101 == \'2\'){$usr101 == 1.8}
если где то в ней присвоение нужно (исходя из логики работы), то замени "==" на "=", т.к. "==" это не есть присвоение. Может поэтому
данные подставляются другие
-
Заменил на "=", то же самое.
Самое интересное, что при первой загрузке скрипта (с получение данных с формы) скрипт присваивает переменным правильные значения. Но когда заходишь с другими данными с формы он оставляет их прежними. Аналогично с других машин в сети!!!
-
max2003 ты кроме if и == больше никаких операторов не знаешь?
Обьясни мне что делает эта строка if ($count == \'id101\'){$ds101 == $in{\'Car\'};
-
max2003:
if ($count == \'id101\'){$ds101 == $in{\'Car\'};
Наверное правильнее былобы
if ($count eq \'id101\'){$ds101 = $in{\'Car\'};
А вот интересно во что превратится скрипт если
idXXX будет лежать в диапозоне id100 - id 901
:)
-
Уважаемый NeoNox!!!!
Данная строка
if ($count == \'id101\'){$ds101 == $in{\'Car\'};
на мой взгляд значит следующее:
с поля формы с NAME (id) получаем данные и заносим их в переменную $count, далее смотрим соответствует ли она id101, если соответствует, то $ds101 присваиваем данные с другой формы $in{\'Car\'}.....
P.S. NeoNox может Вы и правы на счет операторов..... Обидно.....
-
max2003 на самом деле это оператор сравнения.
Оператор присваивания "=".
Пример:
my $sex = 2;
if ($sex == 1)
{
print "This is the boy";
}else{
print "This is the girl";
}
При этом $sex все еще остается равной двум.
Надеюсь понятно?
И совет на будующее - если ваша программа состоит только из несметного количества операторов if -проверьте логику, найдете массу ошибок.
-
Уважаемый NeoNox!!!!
Скоре всего действитель в скрипте потеряна логика, по большему счету if`ов там порядочное кол-во!!!
Спасибо за поддержку!!!!
-
Так в чем же все таки ошибка!!!
Если все эти действия выполняются в теле else!!!!
-
Какой else?
Ты напиши своими словами как должен работать блок.
Если $count равняется \'id101\' то делаем то-то и то-то.
-
Идея была таковой:
пользователь вводит пароль, если он правильный, то загружаем форму поиска , если нет сообщение об ошибке. Далее в поле вводим искомый код, если его нет ошибка, есть (else) обрабатываем и присваиваем данные и данные подставляем в HTML.
-
Я разобрался с проблемой!!!
Исходный текст таков:
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