如何使用下拉列表自动填充来自mysql db的数据表单

时间:2014-03-05 16:13:22

标签: php mysql ajax autofill dropdownbox

大家好我已经在下面创建了一个表单(entryform.php)来输入订单详细信息。 表单包含:part_id,price,model。 我已经创建了connect.php来连接数据库,custompcorder.php用于在order_details表和entryform.php中插入数据来输入数据。

以下是我想在entryform.php上做的事情: 1-将Part输入字段设为A下拉,获取零件名称,part_id从Parts表值保存为part_id,但在entryform上显示零件名称。 2-在下拉列表中选取零件后,我希望字段价格和模型自动填充零件表中的相应数据。自动填充将使用part_id来获取正确的数据。正如您在下面的表格中看到的那样,一次会输入很多行。

  entryform.php

<?php

<form action="../action/custompcorder.php/" method="post">
<p>Part: <input type="text" name="part_id"/> Price: <input type="text" name="price"/> Model: <input type="text" name="model"/></p> 
<p>Part: <input type="text" name="part_id2"/> Price: <input type="text" name="price2"/> Model: <input type="text" name="model2"/></p> 
<input type="submit" value="Submit" /></form>

?>



connect.php

<?php

$dbhost = 'localhost';
$dbuser = 'user2';
$dbpass = 'password';
$dbname = 'db3';

$con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
// Check connection
if (mysqli_connect_errno())
  {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
?>


custompcorder.php

<?php
    include_once '../action/connect.php';

$sql="INSERT INTO order_details (part_id, price,model)
VALUES
('$_POST[part_id]','$_POST[price]','$_POST[model]'),
('$_POST[part_id2]','$_POST[price2]','$_POST[model2]')";


?>

1 个答案:

答案 0 :(得分:1)

首先,您的输入字段是文本,因此在那里没有意义。我会为它编写一个函数,因此您只需更改其中的查询即可。以下是此示例。

在评论中提出问题后编辑

您是否使用Google Chrome浏览器中的开发工具进行了检查?它显示了布局和CSS(第1部分,标记)。以及它是如何建立起来的。从那以后,您可以查看需要使用的功能。在您的情况下,您需要几个下拉菜单,您需要做一些数据库工作。

例如,假设您要显示RAM内存,并且您有一个名为models的数据库,请确保您拥有partId, partPrice, partName and partType。例如,如果您有RAM,并且它是RAM内存部分,请说您为其分配值1。在您的情况下,您对下拉列表的查询将是(如上所述)

function LoadRAMParts(){
    $query = "SELECT *
        FROM models
        WHERE partType = '1';
        ORDER BY partName DESC;";
    $resultaat=mysqli_query($query);
    return $resultaat;
}

因此,您现在可以返回所有RAM内存部件,现在只需使用一点PHP将其加载到下拉菜单中

function MakeRAMMemoryDropDown(){  // define name of the php function and open the function
echo "<select name='RAMPartId' class='dropdown'>"; // open the dropdown with the name RAMPPartId
    $results = LoadRAMParts(); // Load in the query from earlier
    while($row = mysqli_fetch_array($results)){   // while lets it loop through your results as long as there are results
    echo "<option value='".$row['partId']."'>" // the value for the ID when it's chosen
    .$row['partName']."</option>"; // the name of the product the user sees
    } // end of the loop
echo "</select>"; // end of the dropdown
} // end of the php function

您可以在顶部包含的单独文件中进行操作。 (我首先运行我的查询,然后创建下拉列表,否则它会变成冲突,因为我在下拉函数中调用的函数必须在下拉列表之前激活。对我来说它看起来像这样。

enter image description here

作为最后一部分,我希望我向你解释一下,你需要在函数中调用你想要使用它的PHP页面。这只是代码:

<?php  MakeRAMMemoryDropDown() ?>

例如:

enter image description here

这就是动态加载你的内容。现在我使用不同类型的代码放置和生成contenct的不同想法,但对每个程序员来说它都是自己的风格。这就是我加载内容的方式。

关于你的装载价格问题,你必须使用AJAX(异步JavaScript和XML),但这不是我的一杯茶,我无法帮助你。抱歉。

我希望我向你解释,如果没有,我希望你能以另一种方式解决它。