2016-09-15 112 views
0

我有一个包含不同产品的数据库。每种产品都有不同的颜色。我想要实现的是在下拉菜单中选择产品可用的颜色,然后使用所选颜色的产品加载页面。使用数据库中的值填充下拉菜单

我有以下几点: 该产品最初选择如下:

if (isset($_GET['product_id'])) { 
$query_RS_Product = ("SELECT * FROM products WHERE id = :pid AND hidden ='no'"); 
$RS_Product = $conn->prepare($query_RS_Product) or die(errorinfo()); 
$RS_Product->bindValue(':pid', $_GET['product_id']); 
$RS_Product->execute(); 
$row_RS_Product =$RS_Product->fetch(); 

现在我要选择可用于该产品的颜色,并创建一个下拉菜单

<form><select name="productColor" id="pColor" class="dropmenu" > 

<?php 
    $productcolor = $row_RS_Product['Model']; 
    $productcolor="SELECT * FROM products WHERE (Model = ':productcolor' AND hidden ='no' ORDER BY Color"; 
    $resultp=$conn->prepare($productcolor); 
    $resultp->bindValue(':productcolor', $productcolor); 
    $resultp->execute(); 

    while ($pcolor = $resultp->fetch($productcolor)) { 
     echo '<option value="Select Color">' . htmlspecialchars($pcolor['Color']) . '</option>'; 
    } 
    ?> 
</select> 
</form> 

但是菜单将不会填充 任何帮助,欢迎

+0

任何错误?是'$ resultp'不是空的? – momouu

+0

这和jquery有什么关系? – madalinivascu

+0

我希望你的url中有product_id – madalinivascu

回答

2

从(我)的意见转录。

两个明显的错误是在这里WHERE (Model = ':productcolor'

1)应删除该托架(;那是一个解析错误。

2)围绕占位符的引号;那些需要被删除。

Then $resultp->bindValue(':productcolor', $productcolor);你不能绑定一个“查询”,你需要绑定一个值/数组。

您需要将$productcolor="SELECT ...中的变量重命名为其他内容,并将该变量用于(GET)数组。

PHP的错误报告和P​​DO错误处理在这里都有帮助。

参考文献: