我有一个php/mysql简单的应用程序,用户可以从一个下拉列表中选择一个产品。我有分贝的产品,我想 - 当用户从下拉菜单中选择product1时,称为价格的字段将自动从db的价格价格中填充。从选择选项填充字段
choose product | price
我有一个php/mysql简单的应用程序,用户可以从一个下拉列表中选择一个产品。我有分贝的产品,我想 - 当用户从下拉菜单中选择product1时,称为价格的字段将自动从db的价格价格中填充。从选择选项填充字段
choose product | price
请帮助其他提供一些代码。这清楚地表明了你在做什么和错在哪里。
没有代码,我可以简单地说:
你需要的数据从下拉菜单中选择用户的产品后,需要填补。用户将在他的浏览器上执行此操作,因此您无法在PHP中执行任何操作。您将需要在服务器上发送AJAX请求。
了解一些关于AJAX的知识,您可以轻松完成。
你有两个解决方案,但他们都用javascript:
的Javascript没有Ajax:
检索数据时,您创建一个JavaScript对象,产品ID与它的价格相关联。就像这样:
<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 + ' $');
});
的Javascript AJAX
$('#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 + ' $');
}
});
});
数据库测试
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>
下载演示文件:Downlaod
喜再次非常感谢你的帮助。我设法这个
test.php的
<?php
require $_SERVER['DOCUMENT_ROOT'].'/admin/db/config.php';
$time = time();
$query="SELECT id,name FROM products WHERE active='1'";
$result=mysql_query($query);
$options="";
while ($row=mysql_fetch_array($result)) {
$id_product=$row["id"];
$name=$row["name"];
$options=$options . "<option value=" ."'$id_product'" . ">" . $name . "</option>";
}
?>
<html>
<head>
<title>Title</title>
<script language="Javascript">
function postRequest(strURL){
var xmlHttp;
if(window.XMLHttpRequest){ // For Mozilla, Safari, ...
var xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject){ // For Internet Explorer
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open('POST', strURL, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4){
updatepage(xmlHttp.responseText);
}
}
xmlHttp.send(strURL);
}
function updatepage(str){
document.getElementById('result').value = str;
}
function callValue(){
var a = parseInt(document.form1.a.value);
var url = "call.php?a=" + a + ";
postRequest(url);
}
</script>
</head>
<body>
<form name="form1">
<input name="result" type="text" id="result">
<table>
<tr>
<?php
echo "<td><SELECT NAME='a' id='a' onChange='callValue();'><option value='0'>Please select</option>$options</SELECT></td>";
?>
</tr>
</table>
</form>
</body>
</html>
call.php
<?php
$a=$_GET["a"];
require $_SERVER['DOCUMENT_ROOT'].'/admin/db/config.php';
$time = time();
$query="SELECT id,price,note FROM produse WHERE id=$a";
$result=mysql_query($query);
while ($row=mysql_fetch_array($result)) {
$price=$row["price"];
}
echo $price;
?>
在这个例子中,当我请从降的产品向下我可以在输入显示产品的价格。
我想也有另一种(S)输入,其中显示从其他产品,如笔记... 有人可以帮/指向我?
再次感谢
我将搜索关于ajax ...我没有什么代码发布它在这里,因为我没有ideea如何做到这一点。我会尝试Ajax并在此处添加一些代码。谢谢 – David