Не удается найти тип ввода = значение изображения в $ _POST - PullRequest
2 голосов
/ 16 апреля 2011

Ну, может быть, это простой вопрос, но:

Я хочу отсортировать числа, щелкнув изображение.Я думал, что я делаю форму и добавляю поле изображения.

<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);

Однако это не сортирует.Когда я пытаюсь добавить кнопку отправки, чтобы добавить поле изображения, это работает.Так что это означает, что я делаю действительно основную ошибку, но не могу ее найти.

Спасибо за помощь.:)

РЕДАКТИРОВАТЬ --- Решено

На самом деле, как сказал Паскаль Мартин:

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

Это должно быть так.Спасибо:)

Ответы [ 5 ]

14 голосов
/ 16 апреля 2011

Просто используйте 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 .

Если вы посмотрите форм в документах HTML и прокрутите немного вниз, вы сможете прочитать:

Когда указательное устройство используется для нажмите на изображение, форма отправлено и координаты клика перешел на сервер.
Значение х измеряется в пикселях слева от изображение и значение у в пикселях с верхней части изображения.
The представленные данные включают name.x=x-value и name.y=y-value где «имя» - это значение имени атрибут, и значения х и значения у значения координат x и y, соответственно.

В PHP точки в именах параметров автоматически заменяются на и отменяются.
Итак:

  • name.x становится name_x
  • и name.y становится name_y

В качестве источника для этого последнего оператора вы можете прочитать Переменные Из внешних источников - HTML-формы (GET и POST) (цитирование) :

Точки и пробелы в именах переменных преобразован в подчеркивание.
Для пример <input name="a.b" /> становится $_REQUEST["a_b"].

0 голосов
/ 16 апреля 2011
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="index.php">
     <input name="buyuka" type="image" src="resimler/azalt.gif" />
</form>

попробуйте это.

0 голосов
/ 16 апреля 2011

Если я правильно читаю вопрос, то включение изображения в форму не приводит к автоматической отправке формы как POST.Кнопка заставила его работать, потому что вы фактически отправляли форму.

Когда вы изначально загружаете страницу, это будет запрос GET, не имеющий отношения к форме, которую вы нам показываете (и у вас может быть множество другихформы на странице с разными именами, которые также не будут иметь эффекта, если не будут отправлены сами).Когда вы отправляете, используя кнопку, он запрашивает index.php и добавляет параметры POST.

Попробуйте добавить onsubmit="submit-form();" к элементу ввода?

0 голосов
/ 16 апреля 2011

Для ввода изображения попробуйте добавить идентификатор. У вас есть имя, но нет идентификатора.

Заменить

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

с

<input id="buyuka" name="buyuka" type="image" src="resimler/azalt.gif" />
0 голосов
/ 16 апреля 2011
    if(isset($_POST['buyuka'])
    {
        $sorgu='SELECT * FROM urunler ORDER BY uyeno DESC';
    } 
    else 
    {
        $sorgu='SELECT * FROM urunler';
    }

Попробуйте.

...