Форма отправки нескольких изображений в формате PHP

Я создаю сайт, на котором мои пользователи могут оценивать загруженные изображения. В настоящее время я использую радиокнопки и кнопку отправки, чтобы получить рейтинг пользователей и сохранить его в системе. Я хотел бы изменить это так, чтобы код использовал клики изображения, чтобы получить рейтинг пользователей. Пока у меня есть следующий код, но он работает только для одной кнопки изображения. Есть ли способ изменить это, чтобы получить результат в зависимости от того, какое изображение было нажато.

Код:

HTML

<form> <input type="image" name="flag_submit" src="img/Flag.png" onmouseover="this.src='img/Flag_Click.png'" onmouseout="this.src='img/Flag.png'" height="30" width="30" /> </form> 

PHP

 if (isset($_POST['flag_submit_x'])) { //Do process of rating. } 

Есть ли способ, которым я мог бы создать несколько кнопок изображения, а в коде PHP – определить, какая кнопка изображения нажата?

  1. Измените имя на имя массива name="flag_submit[1]" . Назначьте другое значение для каждого изображения, и вы его получили.

  2. Прочитайте его как массив на стороне php: if (isset($_POST['flag_submit'][1])) .

Или лучше было бы, loop throu, если $_POST['flag_submit'] и найти все значения:

 foreach ( $_POST['flag_submit'] as $value ) { echo $value . ' has been clicked.'; } 

 <form method="post"> <input type="image" name="rateButton[1]" src="img/Rate1.png" height="40" width="40" value="1"/> T <input type="image" name="rateButton[2]" src="img/Rate1.png" height="40" width="40" value="1"/> T <input type="image" name="rateButton[3]" src="img/Rate1.png" height="40" width="40" value="1"/> T <input type="image" name="rateButton[4]" src="img/Rate1.png" height="40" width="40" value="1"/> T </form> <pre> <?php if ( isset( $_POST['rateButton'] ) ) { foreach ( $_POST['rateButton'] as $key => $value ) { echo 'Image number '.$key.' was clicked.'; } } ?> 

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

Вот трюк, который может помочь:

Я создал HTML-страницу формы:

КОД

 <html><body><form method="post" action="show_post.php"> <input type="image" name="stamp[1134118800]" src="redstar.gif" value="red"> <input type="image" name="stamp[1134140400]" src="greenstar.gif" value="green"> </form></body></html> 

Скрипт, который представляет форма, show_post.php, гласит:

КОД

 <?php print '<html><body><pre>'; print_r ($_POST); print '</pre></body></html>'; ?> 

Когда я нажимаю на первое изображение, я получаю:

 Array ( [stamp] => Array ( [1134118800] => 21 ) ) 

Когда я нажимаю на второе изображение, я получаю:

 Array ( [stamp] => Array ( [1134140400] => 15 ) ) 

Это работает с Opera, IE и Mozilla.

Первый код работает отлично для меня, смените имя на имя массива = «flag_submit [1]». Назначьте другое значение для каждого изображения, и вы его получили.

Прочитайте его как массив на стороне php:

 if (isset($_POST['flag_submit'][1])) 

У вас может быть несколько элементов <button type = "submit"> с тем же именем, но с разными значениями, которые могут содержать изображения, будет отправлено только значение того, которое было нажато.

Для получения дополнительной информации см. Спецификацию: http://www.w3.org/html/wg/drafts/html/master/forms.html#the-button-element

это может помочь вам

 <?php if($_POST['button']) { echo "you have pressed button ".$_POST['button']; } ?> <style> input.overridecss { background-color: transparent; border: 0px; background-position: center; background-repeat: no-repeat; background-image: url(http://img.ruphp.com/php/rm2w0i.png); } </style> <form method="POST"> <input type="submit" name="button" value="1" class="overridecss"/> <input type="submit" name="button" value="2" class="overridecss"/> <input type="submit" name="button" value="3" class="overridecss"/> <input type="submit" name="button" value="4" class="overridecss"/> <input type="submit" name="button" value="5" class="overridecss"/> </form>