基本上,我有一个动态创建提交按钮的网站。前任:
input type="submit" name="test1"
input type="submit" name="test2"
等等....
我如何找出按下了哪个按钮(test1、test2、test3 等)?
我知道您可以使用隐藏值创建多个表单,但我宁愿只有一个带有多个提交的巨型表单。
编辑:按钮是动态创建的,所以我不知道会有多少。它可能是 test1-test55,所以我需要创建一些自动查看所有可能性的东西。
基本上,我有一个动态创建提交按钮的网站。前任:
input type="submit" name="test1"
input type="submit" name="test2"
等等....
我如何找出按下了哪个按钮(test1、test2、test3 等)?
我知道您可以使用隐藏值创建多个表单,但我宁愿只有一个带有多个提交的巨型表单。
编辑:按钮是动态创建的,所以我不知道会有多少。它可能是 test1-test55,所以我需要创建一些自动查看所有可能性的东西。
您可以使用 if 或 switch 语句来测试发送了哪个提交,如下所示:
if(isset($_POST['test1'])){
//form test1 submitted
}
else{
if(isset($_POST['test2'])){
//form test2 submitted
}
}
您可以像这样签入所有 $_POST 密钥
foreach($_POST as $key => $value){
if(substr($key,0,4) == 'test'){
$form_submitted = substr($key,5); //retrieve number of submitted test
}
}
如果您要提交这样的简单表格:
<form>
<input type="text" id="icebear" value="tickle" />
<input type="submit" id="doit" value="SUBMIT" />
</form>
接收页面会得到两个变量:
如果您不知道提交按钮的名称可能是什么,请记住这$_POST
是一个数组。你可以在上面使用foreach。您可以通过这种方式过滤掉公共前缀上的提交按钮。
foreach( $_POST as $key => $value ) {
echo "{$key} was submitted with value {$value}<br/>";
}
<form action ="" method="post">
<input type="submit" name="test1" />
<input type="submit" name="test2" />
<input type="submit" name="test3" />
</form>
<?php
if(isset($_POST['test1'])){
echo 'first button is pressed';
}elseif(isset($_POST['test2'])){
echo 'Second button is pressed';
}
elseif(isset($_POST['test3'])){
echo 'Third button is pressed';
}
?>
将$_POST
数组存储在不同的变量中,反转数组,并用于key()
获取第一个键(即提交按钮):
以下应该有效:
<?php
if(!empty($_POST)) {
$array = $_POST;
$array = array_reverse($array);
$key = key($array); // get first key
echo $key;
}
?>
<form action="" method="post">
<input type="text" name="foo" />
<input type="submit" name="submit1" />
<input type="submit" name="submit2" />
<input type="submit" name="submit3" />
</form>
例如,如果您提交一个值并单击任何提交按钮,它应该回name
显被单击的提交按钮的属性。无论表单中有多少提交按钮,上述解决方案都将起作用。
如果您可以更改按钮生成代码,您有几个选择。
如果您的按钮是连续生成的(1,2,3,...),您可以使用此处记录的 PHP 的魔力(向下滚动到“如何从选择多个 HTML 标记中获取所有结果?”):
for ($i = 0; $i < MAX; $i++){
echo '<input type="submit" name="test[]"'." more button code />";
}
如果您的按钮编号来自数组,您可以这样做:
for ($arr as $i){
echo '<input type="submit" name="test['.$i.']"'." more button code />";
}
通过以上任何一种方式,您都可以访问数组中的表单元素。由于这些是按钮,并且只有其中一个可以负责,因此您可以使用这种巧妙的方法来获取发布的值。
$the_posted_button_value = reset($_POST['test']);