我正在使用php和html。我的问题是:如何检测哪个表单将其选择元素的值发送到操作页面。
<?php foreach($myarray as $arr){ ?>
<form name="uniqueform_<?=$arr["product_id]?>" method="post" action="action.php">
<select name="letters">
<option value='a'>a</option>
<option value='b'>b</option>
<option value='c'>c</option>
</select>
<input type="submit" value="Send"/>
</form>
<?php } ?>
action.php的
<?php
$myselect_value = $_POST["letters"];
echo $myselect_value; //returns null;
?>
当我按下发送按钮时,我会进入操作页面但是当使用echo或var_dump()时选择值为Null;
我认为php无法检测哪个表单发布到操作页面。我该如何解决这个问题?这很烦人。
答案 0 :(得分:1)
嗨,简单的答案是将提交按钮命名为不同的名称,例如
<input type="submit" value="Send"/>
你没有名字
<form name="form1" >
....
<input type="submit" value="Send" name="submit_frm1" />
</form>
<form name="form2" >
....
<input type="submit" value="Send" name="submit_frm2" />
</form>
然后你只需检查
if(isset($_POST['submit_frm1'] ){
... do some stuff for form1
}else if(isset($_POST['submit_frm2'] ){
... do some stuff for form2
}
我应该注意,但是共享表单元素名称通常是一种不好的做法。因此,你真的不应该/不应该首先选择相同的名称,它会重新填充它们,如果出现错误,真的很痛苦。
就个人而言,我只是以不同的方式命名,或换一种方式。使用标识符为所有表单元素添加前缀。所以
<form name="frm1" >
....
<select name="frm1_select" > ... </select>
<input type="submit" value="Send" name="frm1_submit" />
</form>
<form name="frm2" >
....
<select name="frm2_select" > ... </select>
<input type="submit" value="Send" name="frm2_submit" />
</form>
然后在后端你可以用非常简单的代码,preg_match(),explode(),substr()等来分隔它们。并用同样简单的代码生成它们。我可举例说明如果你也需要我。
答案 1 :(得分:0)
您可以使用不同名称的提交按钮,或只使用隐藏字段:
<input type="hidden" name="form" value="uniqueform_<?=$arr["product_id]?>">
然后检查$_POST['form']
。
答案 2 :(得分:-1)
您需要一个字段来标识相关表单。例如:
<input type="hidden" name="product_id" value="<?=$arr["product_id]?>" />
$_POST['product_id']
以确定提交的表单。例如,如果产品ID为7,则$_POST['product_id']
为7,表单为uniqueform_7
。