$Значение записи из массива входного типа = массив "изображение"?
У меня есть динамический список элементов, извлеченных из базы данных, где список содержит от 0 до N элементов. Каждый элемент указан в строке в таблице HTML с кнопкой "Отправить". Мне нужно знать, какая из этих кнопок, в частности, нажата на $_POST, и получить значение этого элемента.
Мой нынешний подход заключается в использовании массива. Однако значение $_POST возвращает все элементы в массиве, а не только элемент, по которому был сделан щелчок. Более того, значения массива не коррелируют со значениями извлечен из базы данных. Одна и та же кнопка отправки изображения может быть нажата несколько раз и выдавать разные значения.
<?php
else if (isset($_POST["deleteItem"]))
{
foreach ($_POST["deleteItem"] as $value) :
WishList::Delete($value);
endforeach;
}
?>
<form method="post" action="">
<table id="WishListTable">
<?php
$wishlist = WishList::GetAllByID($userID);
foreach ($wishlist as $item)
{
echo "<tr><td>" . $item->Description . "</td>";
echo "<td>";
if ($item->InStock)
{
$primaryEmailAlreadyUsed = true;
echo "In Stock";
}
else {
echo "Out of Stock";
}
echo "</td>";
echo "<td style=\"text-align:center;\"><input type=\"image\" src=\"/images/deleteX.gif\" border=\"0\" alt=\"Delete\" id='" . $iteml->ID . "' name=\"deleteItem[]\" value=\"" . $item->ID . "\" ></td>";
echo "</tr>";
}
?>
</table>
</form>
3 answers
Попробуйте изменить
name=\"deleteItem[]\"
До
name=\"deleteItem[" . $item->ID . "]\"
При отправке единственным участником DeleteItem будет DeleteItem[ID]
list($deletedItemID) = array_keys($_POST['deleteItem']);
Я думаю, что имя вашего ввода должно быть просто "DeleteItem" вместо "DeleteItem[]". Попробовать это. Таким образом, вы получите значение его идентификатора в $_POST['DeleteItem'].
Вот более обобщенный ответ на ваш конкретный вопрос:
Если у меня есть такая форма:
<form method = 'post' action = 'action.php'>
<input type = 'submit' name = 'submit1' value = 'Submit 1'/>
<input type = 'submit' name = 'submit2' value = 'Submit 2'/>
</form>
И в action.php
У меня есть:
<?php
foreach($_POST as $k => $v)
echo($k . ": " . $v . "<br/>")
?>
Затем, если я нажму кнопку submit1
, вывод в action.php
будет:
submit1: Submit 1
Если я нажму кнопку submit2
, вывод будет следующим:
submit2: Submit 2
Вместо того, чтобы отправлять все изображения в массив, я бы сгенерировал уникальное имя для каждого из них, либо объединив какой-либо известный идентификатор (предпочтительно), либо добавление к ним переменной счетчика. Затем вы можете просто выполнить простую проверку isset($_POST['{button name}'])
, например:
<input type = 'image' src = '...' name = 'deleteItem<?php echo($iteml->ID); ?>'/>