PHP- 3 Варианта нажатия кнопок -- не работает javaScript, форма не отправляется

<html>
<head><title>Button1</title></head>
<body> 
<FORM NAME="form1" ACTION="phpbuttons.php" METHOD="POST">
<INPUT TYPE="HIDDEN" NAME="BUTTON">
<INPUT TYPE="BUTTON" VALUE="BUTTON1" ONCLICK="button1 ()">
<INPUT TYPE="BUTTON" VALUE="BUTTON2" ONCLICK="button2 ()">
<INPUT TYPE="BUTTON" VALUE="BUTTON3" ONCLICK="button3 ()">
</FORM>
 <form>
<input type="button" value="щелкни меня" onClick="alert('АЙ ЯЯЯЯЯЯЙЙЙЙ!')">
</form> 
 <SCRIPT LANGUAGE="JavaScript">
<!--
function button1 ()
{
document.form1.Button.value="Button1"
form1.submit ()
}
function button2 ()
{
document.form1.Button.value="Button2"
form1.submit ()
}
function button3 ()
{
document.form1.Button.value="Button3"
form1.submit ()
}
//-->
</SCRIPT>

А это код обрабатывает кнопки

<html>
<head> <title> DOWNLOAD FILE</title></head>
<body>

 <?php
 if (isset ($_REQUEST ["BUTTON"]))
	 echo $_REQUEST ["BUTTON"],"<BR>";
?>
</body>
</html>
 

Здесь мы не используем JavaScript всё работает , кнопки расположены вертикально:

 <html>
<head><title>Button1</title></head>
<body> 
<FORM NAME="form1" ACTION="phpbuttons.php" METHOD="POST">
<INPUT TYPE="HIDDEN" NAME="BUTTON" VALUE="Knopka1">
<INPUT TYPE="SUBMIT" VALUE="Knopka1">
</FORM>
<FORM NAME="form2" ACTION="phpbuttons.php" METHOD="POST">
<INPUT TYPE="HIDDEN" NAME="BUTTON" VALUE="Knopka2">
<INPUT TYPE="SUBMIT" VALUE="Knopka2">
</FORM>
<FORM NAME="form3" ACTION="phpbuttons.php" METHOD="POST">
<INPUT TYPE="HIDDEN" NAME="BUTTON" VALUE="Knopka3">
<INPUT TYPE="SUBMIT" VALUE="Knopka3">
</FORM>
 </SCRIPT>
  </body>
  </html>
<html>
<head> <title> DOWNLOAD FILE</title></head>
<body>

 <?php
 if (isset ($_REQUEST ["BUTTON"]))
	 echo $_REQUEST ["BUTTON"],"<BR>";
?>
</body>
</html>
 

И третий вариант как получить три кнопки и обработать нажатие :

 <html>
<head><title>Button1</title></head>
<body> 
<FORM NAME="form1" ACTION="phpbuttons.php" METHOD="POST">
<INPUT TYPE="SUBMIT"  NAME="BUTTON" VALUE="Knopka1">
</FORM>
<FORM NAME="form2" ACTION="phpbuttons.php" METHOD="POST">
<INPUT TYPE="SUBMIT" NAME="BUTTON" VALUE="Knopka2">
</FORM>
<FORM NAME="form3" ACTION="phpbuttons.php" METHOD="POST">
<INPUT TYPE="SUBMIT" NAME="BUTTON"  VALUE="Knopka3">
</FORM>
 </SCRIPT>
  </body>
  </html>
 
<html>
<head> <title> DOWNLOAD FILE</title></head>
<body>

 <?php
 if (isset ($_REQUEST ["BUTTON"]))
	 echo $_REQUEST ["BUTTON"],"<BR>";
?>
</body>
</html>
 
fgh's picture

Странно, то что JavaScript здесь не работает. И почему-то, когда жмёшь на кнопки, они не ссылают на вторую страничку phpbuttons.php. Код переписан с книги, но всё равно не работает.

В строке

<INPUT TYPE="HIDDEN" NAME="BUTTON">

указано имя "BUTTON".
В файле phpbuttons.php тоже использовано имя "BUTTON":

 <?php
 if (isset ($_REQUEST ["BUTTON"]))
     echo $_REQUEST ["BUTTON"],"<BR>";
?>

Но в JavaScript фунциях использовано другое имя --- Button:

function button1 ()
{
document.form1.Button.value="Button1"
form1.submit ()
}

Здесь имеет место чувствительность к регистру символов.
Исправьте "BUTTON" на "Button",
и Ваш код заработает.

melisa's picture

Воспользовалась советом отсюда, но JavaScript всё равно не работает. Переход на страницу phpbutton.php не происходит. В чём ошибка?

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>
            Экспериментальный HTML (продолжение)
        </title>
    </head>
    <body>
        <form name="form1" method="post" action="8_phpbutton.php">
            <br><br><b> 2) Кнопки: вариант 1 </b><br><br>
            <input type="hidden" name="Button">
            <input type="button" value="Кнопка 1" onclick="button1()">
            <input type="button" value="Кнопка 2" onclick="button2()"><br><br>
        </form>
        <script language="JavaScript">
            function button1()
            {
                document.form1.Button.value="Кнопка 1"
                form1.submit()
            }
            function button2()
            {
                document.form1.Button.value="Кнопка 2"
                form1.submit()
            }
        </script>
    </body>
</html>

Файл PHP-скрипта выглядит так:

<?php
if (isset($_REQUEST["Button"])) {
    echo $_REQUEST["Button"], "<br>";
}
?>
vedro-compota's picture

Для начала измените открывающий тэг джаскрипта (как уже говорили тут) на:

<script type="text/javascript">

Далее:

action="8_phpbutton.php"

-- точно ли этот обработчик существует? попробуйте открыть в браузере страницу: http://вашсайт/8_phpbutton.php

Перед открытием этой страницы код обработчика можно поправить так:

if (isset($_REQUEST["Button"])) {
    echo $_REQUEST["Button"], "<br>";
} else  { echo 'нет запроса'; }

_____________
матфак вгу и остальная классика =)

melisa's picture

Открывающий тег и код обработчика изменила.
обработчик "8_phpbutton.php" существует и корректно исполняется: на нём также работают 2 и 3 вариант кнопок (они были описаны также в этой теме выше).

Результат такой же, при нажатии кнопки ничего не происходит.

vedro-compota's picture

Как выяснили проблема оказалась в том, что на странице было несколько форм с одинаковым значением атрибута name.

_____________
матфак вгу и остальная классика =)