2012-09-03 92 views
2

我有一个php/mysql简单的应用程序,用户可以从一个下拉列表中选择一个产品。我有分贝的产品,我想 - 当用户从下拉菜单中选择product1时,称为价格的字段将自动从db的价格价格中填充。从选择选项填充字段

choose product | price 

回答

0

请帮助其他提供一些代码。这清楚地表明了你在做什么和错在哪里。

没有代码,我可以简单地说:

你需要的数据从下拉菜单中选择用户的产品后,需要填补。用户将在他的浏览器上执行此操作,因此您无法在PHP中执行任何操作。您将需要在服务器上发送AJAX请求。

了解一些关于AJAX的知识,您可以轻松完成。

+0

我将搜索关于ajax ...我没有什么代码发布它在这里,因为我没有ideea如何做到这一点。我会尝试Ajax并在此处添加一些代码。谢谢 – David

1

你有两个解决方案,但他们都用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 + ' $'); 
     } 
    }); 
}); 
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> 

下载演示文件:Downlaod

0

喜再次非常感谢你的帮助。我设法这个

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)输入,其中显示从其他产品,如笔记... 有人可以帮/指向我?

再次感谢