在$ _POST中找不到输入类型=图像值

时间:2011-04-15 20:09:29

标签: php mysql forms imagefield

可能是容易提问但是:

我想通过点击图片对数字进行排序。我以为我制作了一个表格并添加了一个图像场。

<form id="form1" name="form1" method="post" action="index.php">
<input name="buyuka" type="image" src="resimler/azalt.gif" />
</form>

然后我会写这些代码。

$sorgu='SELECT * FROM urunler';

if(isset($_POST['buyuka'])

{
    $sorgu='SELECT * FROM urunler ORDER BY uyeno DESC';
}

$sonuclar=mysql_query($sorgu);

然而它没有排序。当我尝试添加提交按钮以添加图像域时,它的工作原理。所以这意味着我犯了一个非常基本的错误,但我无法找到它。

感谢您的帮助。 :)

编辑---解决了

实际上正如Pascal Martin所说:

if(isset($_POST['buyuka_x'], $_POST['buyuka_y']))
{
    $sorgu='SELECT * FROM urunler ORDER BY uyeno DESC';
}

一定是这样的。谢谢:))

5 个答案:

答案 0 :(得分:14)

只需使用var_dump()查看$_POST中的内容:

var_dump($_POST);

您会看到,当您使用<input type="image">提交表单时,您会得到:

array
  'buyuka_x' => string '0' (length=1)
  'buyuka_y' => string '0' (length=1)


所以,没有$_POST['buyuka'] - 相反,有:

  • $_POST['buyuka_x']
  • $_POST['buyuka_y']

这意味着您的代码应该如下所示(不测试未阻止的buyuka条目,并测试两个_x_y - 我想测试一下其中一个应该足够了)

if(isset($_POST['buyuka_x'], $_POST['buyuka_y']))
{
    $sorgu='SELECT * FROM urunler ORDER BY uyeno DESC';
}



在评论后进行修改:我不知道为什么就是这样 - 但是.x.y是如何它是在HTML标准中定义的。

如果您查看Forms in HTML documents,然后向下滚动一下,您就可以阅读:

  

使用指点设备时   点击图片,表格是   提交和点击坐标   传递给服务器。
x值   以左边的像素为单位进行测量   图像和y值(以像素为单位)   从图像的顶部。
的   提交的数据包括   name.x=x-valuename.y=y-value   其中“name”是名称的值   属性,x值和y值是   x和y坐标值,   分别

在PHP中,参数名称中的点会自动替换为unerscore。
所以:

  • name.x变为name_x
  • name.y变为name_y

作为最后一句话的来源,您可以阅读变量From External Sources - HTML Forms (GET and POST) (引用)

  

变量名中的点和空格是   转换为下划线。对于
  示例<input name="a.b" />变为   $_REQUEST["a_b"]

答案 1 :(得分:0)

如果我正确地阅读了问题,那么将图像作为表单的一部分不会自动将表单作为POST提交。该按钮使其正常工作,因为您实际上是在提交表单。

当您最初加载页面时,它将是一个GET请求,与您向我们展示的表单无关(并且您可以使用不同的名称在页面中包含许多其他表单,除非提交,否则这些表单同样无效他们自己)。当您使用按钮提交时,它会请求index.php并添加POST参数。

尝试将onsubmit="submit-form();"添加到输入元素?

答案 2 :(得分:0)

<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="index.php">
     <input name="buyuka" type="image" src="resimler/azalt.gif" />
</form>

试试这个。

答案 3 :(得分:-1)

    if(isset($_POST['buyuka'])
    {
        $sorgu='SELECT * FROM urunler ORDER BY uyeno DESC';
    } 
    else 
    {
        $sorgu='SELECT * FROM urunler';
    }

试一试。

答案 4 :(得分:-2)

对于图像输入,请尝试添加ID。你有一个名字,但没有id。

替换

<input name="buyuka" type="image" src="resimler/azalt.gif" />

<input id="buyuka" name="buyuka" type="image" src="resimler/azalt.gif" />