Paige Rose Figueira
Paige Rose Figueira

Reputation: 121

Populate text field based on result of dropdown selection - both with php mysql ajax requests

I have a form with a dropdown select menu of products and a text field that should contain the price of the product. The dropdown menu is dynamically populated from a mysql database via php. I need for the text field to automatically be filled with the price associated with that product (in the same row in the database) once the product is selected from the dropdown list.

What I have so far is:

<label>Product or Service</label>
    <select name="product" required>
        <option value=""></option>

            <?php $productSql = "SELECT product_id, product, price FROM products ORDER BY product desc";

                  $productResult = mysql_query($productSql, $link);

                  while($productRow = mysql_fetch_assoc($productResult)){?>

                  <option value="<?php echo $productRow['product_id'];?>"><?php echo $productRow['product']; ?></option><?php } ?>
    </select>

<label>Price</label>
    <input type="text" name="price">

Upvotes: 0

Views: 4917

Answers (1)

jcaron
jcaron

Reputation: 17720

Add the information as a data-price attribute to the option.

Then you can get the currently selected option of the <select>, get the corresponding data-price attribute, and update the text field with it.

It's easier with jQuery:

$('select[name="product"]').change(function()
    {
         $('#textfieldid').val($('select[name="product"] option:selected').data('price'));
    }
);

but you can certainly achieve the same result using pure JS if needed.

NB: you want to correctly escape any text you output. The echo $productRow['product']; can lead to weird results if it contains any & or <.

Upvotes: 2

Related Questions