2012-09-03 95 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)輸入,其中顯示從其他產品,如筆記... 有人可以幫/指向我?

再次感謝