2016-06-10 134 views
0

早上所有,PHP - 根据选择的下拉值自动填充文本框?

我正在用HTML/PHP构建一个web应用程序,并且有一个编辑产品页面,其中有一个从存储在MySQL数据库中的产品填充的选择下拉列表。下面的表格的图像;

Edit product form

每个字段的相应数据也存储在数据库中,我不能为我的生活中,我是如何得到的文本框,它能够实现相应的信息时,通过下拉菜单选择产品摸出,并且我正在努力寻找关于我如何能够完成这项工作的任何教程?我明白,我可能需要使用AJAX来获取信息,而无需重新加载页面。对于小白quesitons道歉,我是新太本,

与往常一样,任何帮助appriciated,

感谢。

PHP到目前为止其填充选择下拉菜单:

<?php 


    or die ('Cannot connect to db'); 

$result = $conn->query("select ID, NAME from PRODUCTS"); 

print "<h3>EDIT PRODUCT</h3>"; 

print "<p>&nbsp;<strong>SELECT PRODUCT: <br><br></strong>" . "<select name='ID'"; 

while ($row = $result->fetch_assoc()) { 

       unset($id, $name); 
       $id = $row['ID']; 
       $name = $row['NAME']; 
       echo '<option value="'.$id.'">'.$name.'</option>'; 

} 

?> 

回答

0

你需要使用一些JavaScript!看看以下...我没有测试过,所以你可能会遇到一个错误,但它应该很容易修复。

我只添加了一些代码,在选择框中选择产品后预先填充单个文本框,但您应该能够找出其余的。

<?php 

$conn = new mysqli('localhost', 'bradleyb_badbrad', '20password40', 'bradleyb_testDb') 
or die ('Cannot connect to db'); 

$result = $conn->query("select ID, NAME from PRODUCTS"); 

// Build up an array of options to show in our select box. 
$productSelectOptions = array(); 
while ($row = $result->fetch_assoc()) { 
    $productSelectOptions[$row['ID']] = $row['NAME']; 
} 

?> 

<h3>EDIT PRODUCT</h3> 

<p> 
    <strong>SELECT PRODUCT:</strong> 
    <select name="ID" id="productSelect"> 
     <?php foreach ($productSelectOptions as $val => $text): ?> 
      <option value="<?= $val; ?>"><?= $text; ?></option> 
     <?php endforeach; ?> 
    </select> 
</p> 

<h3>ID:</h3> 

<p> 
    <input type="text" name="id_text" id="idText" /> 
</p> 

<!-- Include jQuery --> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 

<script> 
    var $productSelect = $('#productSelect'); 
    var $idText = $('#idText'); 

    // This should be the path to a PHP script set up to receive $_POST['product'] 
    // and return the product info in a JSON encoded array. 
    // You should also set the Content-Type of the response to application/json so as our javascript parses it automatically. 
    var apiUrl = '/getProductInfo.php'; 

    function refreshInputsForProduct(product) 
    { 
     $.post(apiUrl, {product: product}, function(r) { 
      /** 
      * Assuming your PHP API responds with a JSON encoded array, with the ID available. 
      */ 
      $idText.val(r.ID); 
     }); 
    } 

    // Listen for when a new product is selected. 
    $productSelect.change(function() { 
     var product = $(this).val(); 
     refreshInputsForProduct(product); 
    }); 
</script> 

例如PHP API一些一般性说明... /getProductInfo.php

​​

我没有意思,给你充分的工作代码,立即修复您的问题,但更希望向您展示关于这些事情的一般方法。

我希望这有助于!

+0

真的很感谢!我想我会得到它..将有一个游戏周围,让你知道如何去。再次感谢! – boothprod

0

有两种方法可以通过AJAX或通过提交表单解决此问题。 通过php表单提交示例。

<?php 
//after submitting the form you get the value of selected product 
if(isset($_GET['id'])){ 
    $product_id=$_GET['ID']; 
    $productQuery = $conn->query("select ID, NAME from PRODUCTS WHERE ID='".$."'"); 
    $productResult = $productQuery ->fetch_assoc() 
    //use the value of productResult in your textbooxes 
}else{ 
    $productResult =array(); 
} 
<form method='get' action=''> 
    <select name='ID' onchange="this.form.submit()"> 
<?php 
    while ($row = $result->fetch_assoc()) { 
     unset($id, $name); 
     $id = $row['ID']; 
     $name = $row['NAME']; 
     echo '<option value="'.$id.'">'.$name.'</option>'; 
    }?> 
</select> 
</form> 
相关问题