Не удается найти тип ввода = значение изображения в $ _POST

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

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

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

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

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

EDIT — Решено

Фактически, как сказал Паскаль Мартин:

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

Это должно быть так. Благодаря 🙂

Solutions Collecting From Web of "Не удается найти тип ввода = значение изображения в $ _POST"

Просто используйте 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 записи buyuka , а тестирование для двух _x и _y – я полагаю, что тестирования для одного из них должно быть достаточно) :

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


Редактировать после комментариев: я понятия не имею, почему так происходит, но с .x и .y именно так определяется в стандарте HTML.

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

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

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

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

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

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

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

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

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

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

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

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

Попробуй.

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

замещать

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

с

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