私は、ある時点でユーザーがドロップダウンから製品を選択できるphp/mysqlのシンプルなアプリを持っています。私はデータベースに製品を持っており、ユーザーがドロップダウンからproduct1を選択すると、価格と呼ばれるフィールドにデータベースからの価格が自動的に入力されます。
choose product | price
データベーステスト
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
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 + ' $');
}
});
});
いくつかのコードを提供して、他の人を助けてください。これにより、何をしていて、何が間違っているのかが明確になります。
コードがなければ、次のように簡単に言えます。
ユーザーがドロップダウンから製品を選択した後、データを入力する必要があります。ユーザーは自分のブラウザでそれを行うので、PHP では何もできません。サーバーで AJAX リクエストを送信する必要があります。
AJAX について少し学べば、簡単に実行できます。