Ria Ria - 1 year ago 80
HTML Question

Populate a dropdown menu with values from a Database

I have a database with different products in it. Each product is available in different colours. What I want to achieve is in a dropdown menu select the colours in which the product is available and then load the page with the product of chosen colour.

I have got the following:
The product is initially chosen as follows:

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']);
$row_RS_Product =$RS_Product->fetch();

Now I want to select the colours that are available for this product and create a dropdown menu

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

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

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

However the menu will not populate
Any help welcome

Answer Source

Transcribed from (my) comments.

Two obvious errors are in here WHERE (Model = ':productcolor'

1) The bracket ( which should be removed; that's a parse error right there.

2) The quotes around the placeholder; those need to be removed.

Then $resultp->bindValue(':productcolor', $productcolor ); You can't bind a "query", you need to bind a value/array.

You need to rename your variable in $productcolor="SELECT ... to something else, and using the variable for the (GET) array.

Both PHP's error reporting and PDO error handling would have been of help here.


Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download