Php 如何存储动态下拉列表中的选定选项

Php 如何存储动态下拉列表中的选定选项,php,html,sql,dynamic,drop-down-menu,Php,Html,Sql,Dynamic,Drop Down Menu,编辑: 因此,我将颜色转移到我的购物车页面,但当我尝试将其添加到购物车时,它正在选择下拉列表中的最后一个选项。我一直在寻找实现selected='selected'的方法,但这是while循环中的一个难题 我的当前产品页面: <?php include("include/db.php"); include("include/productfunctions.php"); if($_REQUEST['command'] == 'add' && $_REQU

编辑:

因此,我将颜色转移到我的购物车页面,但当我尝试将其添加到购物车时,它正在选择下拉列表中的最后一个选项。我一直在寻找实现selected='selected'的方法,但这是while循环中的一个难题

我的当前产品页面:

        <?php
include("include/db.php");
include("include/productfunctions.php");

 if($_REQUEST['command'] == 'add' && $_REQUEST['productid'] > 0 &&   $_REQUEST['Color'] != ' ')
 {
    $product_id = $_REQUEST['productid'];
    $color = $_REQUEST['Color'];
    add_to_cart($product_id, 1, $color);
    header("Location:cart.php");
    exit();
 }
?>

<script type="text/javascript">
//This js is necessary to determine which button on the 
// form the user clicked.

function addtocart(prod_id, color_ID)
{
document.productform.productid.value = prod_id;
document.productform.Color.value = color_ID;
document.productform.command.value = 'add';
document.productform.submit();
}
</script>

<form name="productform" action="">
<input type="hidden" name="Color" />
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
</form>

<table id="product_table">
<?php

$query = "SELECT * FROM product";
$result = mysqli_query($dbc, $query) or die("Error querying database");
while($row = mysqli_fetch_array($result))
{
    $p_ID = $row['Prod_ID'];

    echo '
    <div class="img">
    <strong>'.$row['name'].'</strong>

    <br><img src="' . $row['image'] . '" /></br>

    <div class="desc"> 
    Description: ' . $row['description'] . '<br>        
    <br>Price: $ ' . $row['price'] . '</br>
    <br>
    </div>';
    $query1 = "SELECT * FROM color c JOIN inventory i ON ( c.Color_ID =  i.Color_ID ) JOIN product p ON ( p.Prod_ID = i.Prod_ID ) WHERE p.Prod_ID = $p_ID"; 
    $result1 = mysqli_query($dbc, $query1) or die("Error querying database");

    Print "<p>Decorative Color:\n";
    Print "<select name=\"Color_ID\">\n";

    while($row = mysqli_fetch_array($result1))
    {
        $color_ID = $row['Color_ID'];

        Print "<option value=".$row['Color_ID']."> " . $row['Color'] . "\n     </option>";

    }

    Print "</select>\n";
    Print "</p>\n";

    echo '<div class="checkout">
    <input type="button" value="Add to Cart" onclick="addtocart('. $p_ID .    ','. $color_ID . ')" /></br>
    </div>
    </div>';

} 

?>

</table>
其他编辑:

Print "<select name=\"Color_" . $p_ID . "\">";
Print”“;

不确定我的观察是否有用,只是我注意到或想知道的一些事情。在第一个代码块中,似乎没有提供关闭选项标记

在第二个代码块中,我看到您试图获得颜色,但是看起来您并没有用它做任何事情。此外,您正在进行“颜色”的设置,但选择装饰颜色的名称是“颜色ID”。最后,您似乎将一个空白单元格放在了物品的“装饰颜色”应该出现的位置。你能确认这些细节是否是故意的吗

编辑:在所有其他JS之前,将以下行添加到您的中,以导入jQuery

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
像那样的东西应该有用,但你得试试。因此,让我们分析一下行的$(“select[name='Color\u ID']”)val()部分。在jQuery中,您可以从DOM中选择某些元素或元素组$(“p”)将选择所有段落元素,$(“a”)将选择所有锚元素,这些元素称为选择器

您可以进一步指定,说您想要具有某些属性的元素;在本例中,您将获得名称属性为“Color\u ID”且“[name='Color\u ID']”部分附加到“select”元素的任何选择。获取该特定元素后,任何选择器上的val()函数都将获取所选元素的值。看看这是否有效

编辑2:

function addtocart(prod_id)
{
document.productform.productid.value = prod_id;
document.productform.Color.value = $("select[name='color_' + prod_id] option:selected").val();
document.productform.command.value = 'add';
document.productform.submit();
}
document.productform.Color.value = $("select[name='Color_ID'] option:selected").val();
document.productform.Color.value = $("select[name='color_' + prod_id +] option:selected").val();
编辑3:

function addtocart(prod_id)
{
document.productform.productid.value = prod_id;
document.productform.Color.value = $("select[name='color_' + prod_id] option:selected").val();
document.productform.command.value = 'add';
document.productform.submit();
}
document.productform.Color.value = $("select[name='Color_ID'] option:selected").val();
document.productform.Color.value = $("select[name='color_' + prod_id +] option:selected").val();

在这种情况下,对于每个select,您都必须给它命名为“color”$p_ID。这取决于你想如何命名它。

是的,我在单元格中有$color,它会出现在那里,但它不会转移。我还更改了GET to Color_ID,这也不会传递值。您是否也关闭了选项标记?不管是哪种方式,我认为查看addtocart函数期间发生的情况可能很重要,因为我不知道您是如何尝试将数据传输到购物车的。您考虑过使用jQuery吗?在addtocart JS函数中,使用jQuery,您可以选择“select[name='Color\u ID']”并获取其当前值。我以前从未使用过jQuery。你能给我举个例子说明我如何在我的代码中使用它吗?我实现了你所说的,当我将产品添加到购物车时,它会将我的第一个产品的第一个选项的颜色转移到我尝试添加到购物车的任何产品中。