来自input type =“image”数组的$ _POST值?

时间:2011-05-17 16:10:08

标签: php arrays post dynamic-data

我有一个从数据库中提取的动态项目列表,其中列表包含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 个答案:

答案 0 :(得分:3)

尝试更改

name=\"deleteItem[]\"

name=\"deleteItem[" . $item->ID . "]\"

在提交时,deleteItem的唯一成员是deleteItem [ID]

list($deletedItemID) = array_keys($_POST['deleteItem']);

答案 1 :(得分:1)

我认为输入的名称应该只是“deleteItem”而不是“deleteItem []”。试试吧。这样你就可以在$ _POST ['deleteItem']中得到它的id值。

答案 2 :(得分:1)

以下是对您具体问题的更一般化答案:

如果我有这样的表格:

<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

不是将所有提交的图像都放在一个数组中,而是通过组合某种已知的ID(最好)或者通过附加一个计数器变量来为它们生成一个唯一的名称。然后,您可以进行简单的isset($_POST['{button name}'])检查,例如:

<input type = 'image' src = '...' name = 'deleteItem<?php echo($iteml->ID); ?>'/>