如何动态创建按钮名称并检测PHP中按下了哪个按钮?

时间:2013-12-28 14:23:05

标签: javascript php

这是我目前正在研究的PHP实验。它将成为更大文件的一部分。 我们的想法是,程序将在表单中生成一组提交按钮,并为此约定中的每个按钮分配唯一的名称: btn [按钮的顺序 ]

然后页面将轮询以查找是否使用isset()按下了任何按钮。这是我到目前为止所做的事情。

<html>
<head>
    <title>Test Dynamic Naming</title>
</head>

<body>
    <form action="testDynamicNaming.php" method="POST">
        <?php
            $row = 9;

            for($i = 0; $i < $row; $i++) {
                $name = 'btn['.$i.']';

                ?>
                    <input type="submit" name="<?php echo $name; ?>" value="<?php echo $name; ?>"/>
                <?php

                echo "<br>";
            }
        ?>
    </form>

    <?php
        extract($_REQUEST);

        for($i = 0; $i < $row; $i++) {
            $name = 'btn['.$i.']';

            if(isset($_POST[$name])) {
                echo "<br><br>".$name.' is pressed.';
            }

            // OR

            if(isset($$name)) {
                echo "<br><br>".$name.' is pressed.';
            }
        }
    ?>
</body>
</html>

我设法按照我的意愿设置按钮的名称和值,但页面无法检测到按下的按钮。我在这里缺少什么,或者还有其他方法可以完成同样的任务吗?

3 个答案:

答案 0 :(得分:2)

if(isset($_POST['btn'])){
  foreach($_POST['btn'] as $key => $value){
    echo "Button {$key}:{$value} pressed";
  }
}

答案 1 :(得分:1)

你可以使用

if(isset($_POST['btn'][$i])) {
            echo "<br><br>".$_POST['btn'][$i].' is pressed.';
        }

答案 2 :(得分:1)

也许使用javascript?

很容易,例如

     <input type="submit" name="<?php echo $name; ?>" onclick="document.getElementById('<?php echo $name; ?>_pressed').value='true';" value="1"/>
     <input type="hidden" id="<?php echo $name; ?>_pressed" name="x1_pressed" value="false"> 

if(isset($_POST[$name]) == "true") {