通过php中的复选框表单选择数组中的项目

时间:2014-03-25 01:14:47

标签: php arrays

我尝试从数组中创建一个表单并使项目可选,并且能够单独收集项目以作为变量处理但是当我回显$ _POST [' citem1']时我得到空白屏幕/ p>

<?php
foreach($_SESSION['cart'] as $data1 => $data2)
{echo
'<input type = "checkbox" name = "citem1" value = "'.$data1.'"/> ' .  
 ' price:', $data2 . "<br>";}

?>

我真正想要做的是能够选择一个或多个项目并将它们放在单独的变量中。请帮助。

var_dump of $_SESSION=array (size=3)
'sugar' => string '989.32' (length=6)
'lolli' => string 'inquire' (length=7)
'caramel unreal' => string '00.00' (length=5)

3 个答案:

答案 0 :(得分:0)

字段名称为'citem1',因此您必须使用$ _POST ['citem1']获取此值。

要发送数组,您必须命名为'citem1 []',并且项目将通过PHP接收,如数组:

<?php
foreach($_SESSION['cart'] as $data1 => $data2)
{
echo
'<input type = "checkbox" name = "citem1[]" value = "'.$data1.'"/> ' .  
 ' price:', $data2 . "<br>";}

?>

或者,发送key =&gt;这样的值:

<?php
foreach($_SESSION['cart'] as $data1 => $data2)
{
echo '<input type = "checkbox" name = "'.$data1.'" value = "'.$data2.'"/> ' .  
' price:', $data2 . "<br>";
}

?>

但是在这种情况下你需要循环$ _POST,所以更好的方法是:

<?php
foreach($_SESSION['cart'] as $data1 => $data2)
{
echo '<input type = "checkbox" name = "Item['.$data1.']" value = "'.$data2.'"/> ' .  
' price:', $data2 . "<br>";
}

?>

使用name =“Item [field]”,您可以遍历$ _POST ['Item']并获取key =&gt; value。

答案 1 :(得分:0)

问题是,你在POST变量中没有data1键。在您显示的示例中,该复选框的实际键是citem1,因为这是该字段的名称(在name属性中定义)。

答案 2 :(得分:0)

试试这个:

$counter = 1 ;

if(isset($_SESSION['cart']) AND !empty($_SESSION['cart'])){
    foreach($_SESSION['cart'] as $key => $value){
        echo "<input type='checkbox' name='citem . $counter++' value='$key'>" ;
        echo "Price : $value<br>" ;
    }
}

只需过滤所有的帖子变量(获取所有帖子变量都是$ _POST),名称以&#39; citem&#39;开头,这里是如何:

foreach($_POST as $postVar){
    if(stripos('citem') !== FALSE){
        //then it's a citem
    }
}