Javascript 所选复选框的Post下拉列表值
我有一个用PHP动态创建的html表。该表有复选框、名称价格和数量。数量是下拉列表。我想知道如何根据选中的复选框发布所有这些值。这是小snipet。我想让用户选择 复选框,我想将名称、价格和所选数量发布到另一个页面cart.php 我现在正在工作的是,我只能通过执行$_post[“checkbox”]来发布选中的复选框值。但我不知道如何发布这些选中复选框的值。请帮助..我正在尝试学习PHPJavascript 所选复选框的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
<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>';
}
}
?>