Can't find an input type=image value in $_POST

2019-01-27 00:39发布

Well may be it is to easy question but:

I want to sort the numbers by clicking an image. I thought that i make a form and add an imagefield.

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

Then i will write these codes.

$sorgu='SELECT * FROM urunler';

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

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

$sonuclar=mysql_query($sorgu);

However it doesn't sort. When i try adding submit button in order to add imagefield, it works. So it means i make a really basic mistake but i cant find it.

Thank you for helping. :)

EDIT --- Solved

Actually as Pascal Martin said:

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

It must be like that. Thanks :)

5条回答
对你真心纯属浪费
2楼-- · 2019-01-27 01:12
    if(isset($_POST['buyuka'])
    {
        $sorgu='SELECT * FROM urunler ORDER BY uyeno DESC';
    } 
    else 
    {
        $sorgu='SELECT * FROM urunler';
    }

Give this a try.

查看更多
小情绪 Triste *
3楼-- · 2019-01-27 01:16

Just use var_dump() to see what's in $_POST :

var_dump($_POST);

And you'll see that, when your form is submitted using the <input type="image">, you get :

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


So, there is no $_POST['buyuka'] -- instead, there are :

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

Which means your code should look like this (not testing for the unexistant buyuka entry, and testing for the two _x and _y -- I suppose that testing for one of those should be enough) :

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



Edit after the comments : I have no idea why it goes like that -- but having a .x and a .y is how it's defined in the HTML standard.

If you take a look at Forms in HTML documents, and scroll down a little, you'll be able to read :

When a pointing device is used to click on the image, the form is submitted and the click coordinates passed to the server.
The x value is measured in pixels from the left of the image, and the y value in pixels from the top of the image.
The submitted data includes name.x=x-value and name.y=y-value where "name" is the value of the name attribute, and x-value and y-value are the x and y coordinate values, respectively.

In PHP, the dots in parameters names are automatically replaced by and unerscore.
So :

  • name.x becomes name_x
  • and name.y becomes name_y

As a source for that last statement, you can read Variables From External Sources - HTML Forms (GET and POST) (quoting) :

Dots and spaces in variable names are converted to underscores.
For example <input name="a.b" /> becomes $_REQUEST["a_b"].

查看更多
The star\"
4楼-- · 2019-01-27 01:22

For the image input try adding an id. You have a name, but no id.

Replace

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

with

<input id="buyuka" name="buyuka" type="image" src="resimler/azalt.gif" />
查看更多
可以哭但决不认输i
5楼-- · 2019-01-27 01:23

If I am reading the question properly, then having the image as part of the form does not automatically submit the form as POST. The button made it work because you were actually submitting the form.

When you initially load the page, it will be a GET request with no relation to the form that you are showing us (and you could have numerous other forms in the page using different names, that would similarly have no effect unless submitted themselves). When you submit using the button, it requests index.php and adds the POST parameters.

Try adding onsubmit="submit-form();" to the input element?

查看更多
Emotional °昔
6楼-- · 2019-01-27 01:23
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="index.php">
     <input name="buyuka" type="image" src="resimler/azalt.gif" />
</form>

try this.

查看更多
登录 后发表回答