发布所选复选框的下拉值

时间:2014-08-11 00:21:10

标签: javascript php html phpmyadmin shopping-cart

我在PHP中动态创建了一个html表。该表有复选框,名称价格和数量。数量是下拉列表。我想知道如何根据所选复选框发布所有这些值。这是小snipet.What我想要的是用户会选择 复选框,我想将名称,价格和选定的数量发布到另一个页面cart.php。

我现在正在工作的是我只能通过执行$ _POST ["复选框"]来发布选中的复选框值。但我不知道为所选复选框发布值。请帮助。我正在努力学习PHP。

<form action="cart.php" name="myform" id="menuform" method="post" >
echo "<label>"."Appetizers"."</label>";
echo "<center>";
echo "<table class='appetizerstable'>";
echo "<thead>";
echo "<tr>";
echo "<th>";
echo "Select";
echo "</th>";
echo "<th>";
echo "Name";
echo "</th>";
echo "<th>";
echo "Price";
echo "</th>";
echo "<th>";
echo "quantity";
echo "</th>";
echo "</tr>";
echo "</thead>";
echo "<tbody>";

while($row = mysqli_fetch_array($appetizers)) {
echo "<tr>";
echo "<td>" ."<input type='checkbox' name ='checkboxes[]'  value=".$row['id'].">".
             "</td>";
echo "<td>" ."<label name='foodname[]'>". $row['name']."</label>" . "</td>";
echo "<td>" ."<label name='foodprice[]'>". $row['price']."</label>" . "</td>";
echo "<td>"."<select id='quantity[] name='quantity[]'>".
"<option value='1'>1</option>".
"<option value='1'>2</option>".
"</select>".
"</td>";
echo "</tr>";

}
echo "</tbody>";
echo "</table>";
echo "<center>";

2 个答案:

答案 0 :(得分:0)

您不需要发送名称和价格值,因为您始终可以通过在发送表单数据时知道该项目的ID来从数据库中检索这些值。因此,我们将只关注所检查项目的quantitiesid

您尝试执行的操作的主要问题是quantity[]表单数据和checkboxes[]表单数据在发送表单时不会在数组中具有相同数量的项目...你没有检查每件物品。发生的情况是checkboxes仅在选中此框时发送数据,而quantity[]在选择了选项时发送数据,默认情况下始终选择一个。因此,无论是否检查,基本上每个数量选择数据都将被发送。因此很难确定哪些数量的数组项属于复选框数组项。但是有一个解决方案......一个复杂的解决方案,但仍然是一个只有php的解决方案。

以下是新的HTML 为了便于阅读,我清理了一下

<form action="cart.php" name="myform" id="menuform" method="post" >
    <label>Appetizers</label>
    <center>
        <table class="appetizerstable">
        <thead>
            <tr>
                <th>Select</th>
                <th>Name</th>
                <th>Price</th>
                <th>quantity</th>
            </tr>
        </thead>
        <tbody>

            <?php while($row = mysqli_fetch_array($appetizers)) : ?>
                <tr>
                    <td>
                        <input type="checkbox" name ="checkboxes[]"  value="<?php echo $row['id'] ?>">
                    </td>
                    <td>
                        <label><?php echo $row['name']; ?></label>
                    </td>
                    <td>
                        <label><?php echo $row['price']; ?></label>
                    </td>
                    <td>
                        <select id="quantity[]" name="quantity[]">
                            <option value="<?php echo '1-' . $row['id']; ?>">1</option>
                            <option value="<?php echo '2-' . $row['id']; ?>">2</option>
                        </select>
                    </td>
                </tr>

            <?php endwhile; ?>
        </tbody>
        </table>
    <center>
</form>

好的,改变了......好好看一下新的quantity[]值。我附加了一个破折号,后跟行id。现在每个值都有一个唯一值,我们可以将数值与复选框值相关联。接下来我们将在cart.php文件中解决这个问题。以下是如何做到这一点:

<强> cart.php

<?php 

if(isset($_POST['checkboxes']) && isset($_POST['quantity']) ) {
    $checkboxes = $_POST['checkboxes'];
    $quantities_unfiltered = $_POST['quantity'];

    $quantities = array();

    foreach($quantities_unfiltered as $unfiltered) {

        $filtered = explode('-', $unfiltered);
        // $filtered now equals a 2 item array
        // $flitered[0] = the quantity value
        // $filtered[1] = the id

        // create an associative array for easy access to the quantity by using the id as the array key

        $quantities[ $filtered[1] ] = $filtered[0];

    }

    // now we can figure out the quantity values for each checkbox checked
    // test it out by echoing the values

    foreach($checkboxes as $id) {
        echo 'Item with id of ' . $id . ' was selected with a quantity of ' . $quantities[$id] . '<br>';
    }
}
?>

希望能帮到你一点。

<强>更新

我在cart.php示例中添加了一个if语句,并从名称属性中删除了foodprice[]foodname[],因为它们不作为POST数据发送,因为html不是表单元素。我对此有点挑剔。

答案 1 :(得分:0)

您可以使用jquery在下拉值更改时提交表单

  

<select name="" id="" onchange="this.form.submit()"> .......... ......... </select>