如何使用动态给出名称的“ isset()”函数中的提交按钮名称?

时间:2019-05-04 12:13:24

标签: php

我正在基于php中的数据库查询ID创建许多按钮。但是我无法在其他php页面上的PHP isset函数中使用单击按钮的名称属性。

while($row = $result->fetch_assoc()) 
    {
        echo "<form method='post' action='#'>";
        echo "<tr><td>" . $row["id"]. "</td><td>" . $row["iname"]. " </td> 
               <td>" . $row["itype"]. "</td><td>".$row["icost"]."</td> 
               <td>".$row["irestaurant"]."</td><td>"; 
        ?>
        <input type="submit"  name="<?php echo $row["id"];?>" 
                 value="Order Now" onclick="btn(name)"></td></tr>
        <?php

    }
    echo "</table>";
    echo "</form>";

1 个答案:

答案 0 :(得分:0)

帖子将包含一个name => value,其中name将是echo $row["id"];的值,而值将是Order Now

请注意,您将重复为while循环的每次迭代创建一个<form>标签,并且仅将其关闭一次。

以您的示例为例,从提交中获取ID的一个选项是使用例如array_search返回该值的第一个对应密钥。

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    echo "id: " . array_search('Order Now', $_POST, true);
}

另一种选择是给按钮起一个例如submit的名称,而不是行ID,并将行ID传递给一个函数,该函数将向表单添加一个隐藏的输入,并带有行ID的值。

您还可以为该隐藏的输入提供名称,例如id,这样就可以使用post数组中的键名来获取它们。

例如:

function btn(id) {
    var input = document.createElement("input");
    input.setAttribute("type", "hidden");
    input.setAttribute("name", "id");
    input.setAttribute("value", id);
    document.forms[0].appendChild(input);
}

输入

<input type="submit"  name="submit"
           value="Order Now" onclick="btn(<?php echo $row["id"];?>)">

帖子数组可能类似于:

Array
(
    [id] => 200
    [submit] => Order Now
)