2

私は、ある時点でユーザーがドロップダウンから製品を選択できるphp/mysqlのシンプルなアプリを持っています。私はデータベースに製品を持っており、ユーザーがドロップダウンからproduct1を選択すると、価格と呼ばれるフィールドにデータベースからの価格が自動的に入力されます。

choose product    |  price
4

4 に答える 4

2

データベーステスト

CREATE TABLE IF NOT EXISTS `price` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_product` int(11) NOT NULL,
  `price` decimal(10,2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `price`
--

INSERT INTO `price` (`id`, `id_product`, `price`) VALUES
(1, 1, 10.20),
(2, 2, 15.50);

クエリ

public function getProductList() {
        $stmt=$this->pdo->prepare('SELECT * FROM product');
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_OBJ);
    }
    public function getProductPrice($product_id){
        $stmt=$this->pdo->prepare('SELECT * FROM price WHERE id_product=?');
        $stmt->execute(array($product_id));
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        return $row['price'];
    }

デモ ファイル

<?php
    include_once('classes/DataLayer.class.php');
    $dl = new DataLayer();
    $product_list = $dl->getProductList();

?>


<html>

<head>
<title>Untitled 1</title>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
    function getPrice(){
        $.get('script.php?product_id='+$('#product option:selected').val(), function(data){
            $(' #price ').val(data);
        })
    }
</script>
</head>

<body>
    <select id="product" name="product" onchange="return getPrice()">
        <option value="">Select Product</option>
        <?php
            if(isset($product_list) && !empty($product_list)){
                foreach($product_list as $product){
        ?>
            <option value="<?php echo $product->id?>"><?php echo $product->productName?></option>
        <?php
                }
            }
        ?>
    </select>

    <input type="text" name="price" id="price" >
</body>

</html>

デモファイルのダウンロード : Download

于 2012-09-03T17:00:10.910 に答える
1

2 つのソリューションがありますが、どちらも javascript を使用します。

ajax なしの Javascript :

データを取得する際に、製品 ID をその価格に関連付ける JavaScript オブジェクトを作成します。このような :

<script>
var products = {};

<?php while($row = ...) : ?>
    products[<?php echo $row['product_id']; ?>] = <?php echo $row['product_price']; ?>;
<?php endwhile; ?>
</script>

ユーザーがドロップダウンで製品を選択すると、次のようなものを使用します (私は JQuery を使用しています)。

$('#my_dropdown').change(function()
{
    val product_id = $(this).val();

    // access to the javascript object created while retrieving data
    val product_price = products[product_id].price;

    // set the price textbox
    $('#price').val(product_price + ' $');
});

ajax を使用した Javascript

$('#my_dropdown').change(function()
{
    val product_id = $(this).val();

    $.ajax(
    {
        type: 'GET',
        url: 'get_product_price.php?product_id=' + product_id,
        success: function(data)
        {
            $('#price').val(data + ' $');
        }
    });
});
于 2012-09-03T16:23:06.017 に答える
0

いくつかのコードを提供して、他の人を助けてください。これにより、何をしていて、何が間違っているのかが明確になります。

コードがなければ、次のように簡単に言えます。

ユーザーがドロップダウンから製品を選択した後、データを入力する必要があります。ユーザーは自分のブラウザでそれを行うので、PHP では何もできません。サーバーで AJAX リクエストを送信する必要があります。

AJAX について少し学べば、簡単に実行できます。

于 2012-09-03T16:06:45.003 に答える