Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнение скрипта при нажатии на кнопку (html) 
V
    Опции темы
WindFinder91
Дата 28.11.2013, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.11.2013

Репутация: нет
Всего: нет



Здравствуйте! очень нужна ваша помощь!
мне необходимо чтобы скрипт выполнялся только при нажатии на кнопку
на данный момент запись в текстовый файл идет даже при простом обновлении страницы

Код

#!c:/perl/bin/perl.exe
#/usr/bin/perl
use Fcntl;
use CGI;
$query = CGI->new;
use CGI::Carp qw (fatalsToBrowser);
$CGI::POST_MAX=2000000;
@params=$query->param;
foreach $name (@params)
 {
 $value=$query->param($name);
 $FORM{$name}=$value;
 }
print "Content-type: text/html\n\n";
# вывод заголовков
# плюс общее меню
print <<HTML;
<html><head>

<form action="Vse.pl">
<input type="hidden" name=work value=usp_fam>
<p align="center">Подсчитать успеваемость по тестам</p> 
<p align="center"><INPUT type="submit" value="Подсчитать"></p>
</form>

</body>
HTML

if ($FORM{'work'} eq "usp_fam")
{
open testresults, 'testresults.dat' or die "Невозможно открыть testresults.dat: $!";
open(F1,"> Успеваемость студентов/Успеваемость_по_тесту.txt");
#Ключевые переменные!
@test=('Основы языка Perl','Основы языка HTML','Основы работы в сети Интернет');
#Ключевые переменные!
$i=-1; $n=-1;
while (<testresults>) {
chomp;
$n++;
($date[n],$kod[$n],$name_test[$n],$surname[$n],$name[$n],$father_name[$n],$group[$n],$mark[$n],$mark1[$n],$mark2[$n],$r[$n],$q[$n]) = split(/\|\|/);
}

$c=@surname;
$c=$c-1;
$k=0;
$p=@test;
$p=$p-1;

for ($i=0;$i<=$c;$i++){
if ($mark[$i]>=$mark1[$i] && $mark[$i]>=$mark2[$i]) {($max[$i]=$mark[$i])} elsif ($mark1[$i]>=$mark[$i] && $mark1[$i]>=$mark2[$i]) {($max[$i]=$mark1[$i])} elsif ($mark2[$i]>=$mark1[$i] && $mark2[$i]>=$mark[$i]) {($max[$i]=$mark2[$i])};
}

while ($k<=$p){
for ($i=0;$i<=$c;$i++){
if ($test[$k] eq $name_test[$i]) {($all_mark[$k]++)};
if ($test[$k] eq $name_test[$i] && $max[$i]>=3) {($well_mark[$k]++)};
if ($test[$k] eq $name_test[$i] && $max[$i]>=4) {($good_mark[$k]++)};
}
$k++;
}

for ($k=0;$k<=$p;$k++){
$uspev[$k] = $well_mark[$k] / $all_mark[$k] * 100;
$well_uspev[$k] = $good_mark[$k] / $all_mark[$k] * 100;
}

print (F1 "Название группы     Успеваемость     Качеств. успеваемость");
print (F1 "\n");
print (F1 "\n");
$k=0;
while ($k<=$p){
print (F1 $test[$k],"                    ",int $uspev[$k],"                    ",int $well_uspev[$k]);
print (F1 "\n");
$k++;
}
close testresults;
}
 exit;


PM MAIL   Вверх
arto
Дата 28.11.2013, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



передавайте кнопкой параметр, его и проверяйте в скрипте
PM MAIL ICQ   Вверх
WindFinder91
Дата 28.11.2013, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.11.2013

Репутация: нет
Всего: нет



Код

<input type="hidden" name=work value=usp_fam>


это параметры который запоминаются при нажатии на кнопку

Код

if ($FORM{'work'} eq "usp_fam")


а это условие выполнения скрипта
так по идее должно работать

но по факту, хотя при нажатии на кнопку скрипт выполняется, он выполняется даже если на нее не нажимать(

PM MAIL   Вверх
Jimy
Дата 29.11.2013, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 4.7.2010

Репутация: нет
Всего: 3



Цитата

а это условие выполнения скрипта

вы что-то путаете. при вызове скрипта не будет выполнятся ветка алгоритма внутри условия
Код

if ($FORM{'work'} eq "usp_fam")

Она выполнится при нажатии на кнопку.
Но сам скрипт разумеется будет выполняться не зависимо от того, переданы какие-то значения формы или нет (нажата ли кнопка).


Ну и по существу. Поскольку форма отправляется методом GET, то после нажатия кнопки в URL добавится параметр usp_fam и если потом обновлять страницу, то это параметр уже будет присутствовать (а скрипт именно по его значению проверят нажатие кнопки). Обратите внимание на URL до и после нажатия кнопки.

Это сообщение отредактировал(а) Jimy - 29.11.2013, 08:37
PM   Вверх
arto
Дата 29.11.2013, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



а где на него ссылка стоит?
или вы его прямо и вызываете?
PM MAIL ICQ   Вверх
Grost
Дата 29.11.2013, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 26.8.2010
Где: Москва

Репутация: нет
Всего: нет



Код

<from method="POST">
...
</form>

Есть метод GET то генерируем форму, если POST то обрабатываем форму. 
Либо один скрипт генерирует форму, а другой скрипт обрабатывает её, тогда
Код

<form action="[% ссылка на обработчик%]">
...
</form>


Это сообщение отредактировал(а) Grost - 29.11.2013, 10:57
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0733 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.