Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从选择选项填充字段_Php_Mysql - Fatal编程技术网

Php 从选择选项填充字段

Php 从选择选项填充字段,php,mysql,Php,Mysql,我有一个php/mysql简单的应用程序,用户可以从下拉列表中选择产品。我有db中的产品,我希望-当用户从下拉列表中选择product1时,名为price的字段将自动填充db中的值price choose product | price 请提供一些代码来帮助其他人。这清楚地表明了你在做什么,以及其中的错误 如果没有代码,我可以简单地说: 用户从下拉列表中选择产品后,需要填写数据。用户将在他的浏览器上执行此操作,所以您无法在PHP中执行任何操作。您需要在服务器上发送AJAX请求 了解一点

我有一个php/mysql简单的应用程序,用户可以从下拉列表中选择产品。我有db中的产品,我希望-当用户从下拉列表中选择product1时,名为price的字段将自动填充db中的值price

choose product    |  price

请提供一些代码来帮助其他人。这清楚地表明了你在做什么,以及其中的错误

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

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


了解一点AJAX,您就可以轻松做到这一点。

您有两种解决方案,但它们都使用javascript:

不带ajax的Javascript:

在检索数据时,创建一个javascript对象,该对象将产品id与其价格相关联。像这样:

<script>
var products = {};

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

数据库测试

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>

下载演示文件:

再次您好,非常感谢您的帮助。我设法做到了这一点

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;
?> 
在本例中,当我从下拉列表中选择产品时,我可以在输入中显示产品的价格

我还想有其他的输入,以显示其他产品,如笔记。。。 有人能帮我指一下吗


再次非常感谢

我将搜索ajax…我没有什么代码发布在这里,因为我不知道如何做。我将尝试ajax,并在这里添加一些代码。谢谢
<?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>
<?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;
?>