Javascript 所选复选框的Post下拉列表值

Javascript 所选复选框的Post下拉列表值,javascript,php,html,phpmyadmin,shopping-cart,Javascript,Php,Html,Phpmyadmin,Shopping Cart,我有一个用PHP动态创建的html表。该表有复选框、名称价格和数量。数量是下拉列表。我想知道如何根据选中的复选框发布所有这些值。这是小snipet。我想让用户选择 复选框,我想将名称、价格和所选数量发布到另一个页面cart.php 我现在正在工作的是,我只能通过执行$_post[“checkbox”]来发布选中的复选框值。但我不知道如何发布这些选中复选框的值。请帮助..我正在尝试学习PHP <form action="cart.php" name="myform" id="menuform

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

我现在正在工作的是,我只能通过执行$_post[“checkbox”]来发布选中的复选框值。但我不知道如何发布这些选中复选框的值。请帮助..我正在尝试学习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>";

“开胃菜”;
回声“;
回声“;
回声“;
回声“;
回声“;
回显“选择”;
回声“;
回声“;
呼应“姓名”;
回声“;
回声“;
呼应“价格”;
回声“;
回声“;
回声“量”;
回声“;
回声“;
回声“;
回声“;
while($row=mysqli\u fetch\u数组($开胃菜)){
回声“;
回音“.”。
"";
回显“.”.$row['name']”;
回音“.”.$行[“价格]”;

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

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

这是新的HTML 为了便于阅读,我把它整理了一下

希望这能帮你一点忙

更新


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

当下拉值发生变化时,可以使用jquery提交表单


..........
.........

<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>
<?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>';
    }
}
?>