Php Codeigniter中的图像提交按钮-我缺少什么?

Php Codeigniter中的图像提交按钮-我缺少什么?,php,codeigniter,Php,Codeigniter,我有下面的Codeigniter代码来显示一个表单,有两个图像提交按钮。我需要知道用户点击了哪个按钮。通常我只引用传递的名称或值,但这些按钮不传递任何内容。所有其他字段/文本框等。。在表单上,通过ok,但这些按钮中没有任何内容 。。。。我错过了什么?我已经思考了几个小时了,但也没有从网上得到任何帮助 助教 我也遇到了类似的问题(尽管是Zend)! 问题是,当输入类型=图像时,浏览器不会传递“值”。 要检查单击了哪个按钮,您仍然可以通过在按钮名称(例如“Button2\u x”)中添加“\u x

我有下面的Codeigniter代码来显示一个表单,有两个图像提交按钮。我需要知道用户点击了哪个按钮。通常我只引用传递的名称或值,但这些按钮不传递任何内容。所有其他字段/文本框等。。在表单上,通过ok,但这些按钮中没有任何内容

。。。。我错过了什么?我已经思考了几个小时了,但也没有从网上得到任何帮助

助教


我也遇到了类似的问题(尽管是Zend)! 问题是,当输入类型=图像时,浏览器不会传递“值”。 要检查单击了哪个按钮,您仍然可以通过在按钮名称(例如“Button2\u x”)中添加“\u x”或“\u y”来引用该按钮,并根据此项检查$\u Post数组

if(isset($_POST['button2_x']))
{
  //button2 was clicked! 
}
else if(isset($_POST['button1_x']))
{
  //button1 was clicked go on!
}

如果您需要查看。Codeigniter论坛中解释了相同的问题

问题与Codeigniter无关,而是与HTML有关。“图像”类型输入将提交单击位置的x和y坐标,如果未单击,则提交两个坐标的“0”。将不提交

当使用定点设备单击图像时,将提交表单,并将单击坐标传递给服务器。x值以图像左侧的像素为单位测量,y值以图像顶部的像素为单位测量。提交的数据包括name.x=x-value和name.y=y-value,其中“name”是name属性的值,x-value和y-value分别是x和y坐标值

但是,这仍然适用于您,因为未单击的按钮不会显示在
$\u POST
数组中。下面是一个示例
var\u dump()
,来自您的表单,使用您的精确代码单击按钮1(但没有可用的实际图像):

因此,这有点黑客化,但您可以简单地执行此操作以检查单击了哪一个:

if (isset($_POST['button1_x'])) // Button 1 clicked
老实说,在我查找之前,我忘记了这一点,因为我从未使用
image
输入。您可以考虑使用样式<代码>提交< /代码>类型或<代码> <代码>。后者允许HTML,并且更容易使用-但是要小心IE6


使用
,IE6将发送实际的HTML内容作为post值,而不是
!不幸的是,我不是在开玩笑。但是,您只需要检查它是否
isset()
,因此如果使用这种方法,实际上不要依赖
值。希望这能帮你解决问题。

如果你检查源代码,每个按钮的
名称
值包含什么?var\u dump($\u POST)返回什么?谢谢Luca,我会尝试一下!Wesley,非常感谢-我实际上没有意识到值没有传递-但是名称似乎也没有传递。。。虽然我想这可能是出于同样的原因。我会在名字上加上x!你提到了一个样式化的提交按钮,而不是那样做的-大概是css样式?是的,这是正确的,使用css。还有其他样式吗?:)以防您不确定:您不会在HTML中向名称添加
\ux
\uy
,只有在您使用PHP阅读时,您才能理解吗?这绝对是不寻常的行为。试试看,你会明白的。是的,
标记非常灵活,因为它们可以包含哪些内容以及它们的样式有多容易。
array(3) {
  ["subtype"]=>
  string(0) ""
  ["button1_x"]=>
  string(1) "0"
  ["button1_y"]=>
  string(1) "0"
}
if (isset($_POST['button1_x'])) // Button 1 clicked