我有两个下拉菜单,例如Item和Product。 当我选择项目时,相应的产品将显示在数据库的其他内容中。 我想在其他表中保存这样的项目ID和产品ID。 请帮我。 (原始php,mysql,javascript)
if(isset($_POST['submit'])){
$sales = htmlspecialchars(stripslashes(trim($_POST['sales'])));
$regionID = htmlspecialchars(addslashes(trim($_POST['cat'])));
$branchID = htmlspecialchars(addslashes(trim($_POST['subcat'])));
if($sales){
$insert = mysql_query("INSERT INTO dailycollection VALUES('', '$regionID', '$branchID', '$sales')");
}
else{
$msg = "Please fillup all required fields!";
}}
答案 0 :(得分:1)
这是一个简单的例子....它描述了如何使用ajax在项目ID的下拉列表中动态地检索产品列表....
<select id="item_id" name="item_id">
<option value="1">Item_1</option>
<option value="2">Item_2</option>
<option value="3">Item_3</option>
<option value="4">Item_4</option>
</select>
<select name="product_id" id="product_id">
</select>
<script type="text/javascript">
$(document).ready(function(){
$('#item_id').change(function(e){
e.preventDefault();
var item_id= $(this).val();
$.post('product.php',{item_id:item_id},function(res){
$('#product_id').html(res);
});
})
});
</script>
/ ** product.php ** /
$item_id = $_POST['item_id'];
$sql="SELECT product_id, product_name FROM product where item_id='".$item_id."'";
$result=mysql_query($sql);
if(mysql_num_rows($result)>0){
while($line=mysql_fetch_array($result)){
$str .='<option value="'.$line['product_id'].'">'.$line['product_id'].'</option>';
}
}else{
$str='no record';
}
echo $str; exit;
答案 1 :(得分:0)
让我以我对你的问题的理解为这个答案开头:你有两个并排的下拉菜单。在一个中选择一个选项将导致另一个中的相关选项成为当前选项。根据您的代码,您似乎正在构建完整的堆栈。这很好 - 这对你来说是一次很棒的学习经历。
让我们看看我认为可能的解决方案,回到前面,在我们熟悉系统时迭代一次或两次。
底层这里是你的MySQL数据库(我暂时认为这已经建成了,所以如果它不是,请告诉我,我&# 39; ll为这个答案添加一些相关信息)。您的站点通过PHP与此数据库进行交互,或者更具体地说,通过PHP MySQL改进的扩展(http://php.net/manual/en/book.mysqli.php)进行交互。
您需要的第一个PHP脚本是从数据库中获取数据的脚本。我将逐行抛出一些示例代码,并解释一切都做了什么。
$itemID = $_POST["itemID"];
我们将在一分钟内了解到这是与我们脚本的POST请求相关联的数据。我们将使用它来告诉我们的数据库我们正在寻找哪一行。
$mydatabase = new mysqli("databaseserver.com", "mysqlusername",
"mysqlpassowrd", "databasename");
此行在您的站点(服务器端,而非客户端)和数据库服务器之间建立连接。如果它们托管在同一台机器上,并且MySQL在localhost上运行,则可以将localhost作为数据库服务器位置。
接下来,我建议您查看PHP文档以了解错误处理函数。我不想在这里过于细化。
之后,执行查询。
$result = $mydatabase->query("SELECT * FROM mytable WHERE itemID = " . strval($itemID));
此处,$result
属于数据类型&#34; MySQLi结果。&#34;您可以使用此方法执行更多错误处理,但下一个基本步骤是将结果转换为更友好的数据。行的数据可以转换为PHP关联数组,如下所示:
$row = $result->fetch_assoc();
此处还有很多其他选项,因此请查看文档,了解此方法是否适合您。在你&#34;返回&#34;之前这个数据带有echo
,您需要将其解析为更有用的形式。例如,如果您查询的MySQL表只有一列类型为INTEGER且包含产品ID,那么您可能会使用$data = $row["productID"]
。
非常重要注意:配置不当PHP是网络上最常见的漏洞之一,特别是在涉及POST的情况下(详见下文)。请阅读文档,并确保您在此处采取所有相关的预防措施。如果您从上面复制并粘贴我的示例,您将很容易受到SQL注入。
向上移动图层,您需要将此数据提供给客户端脚本(阅读javascript)。要了解如何完成此操作,我们需要备份一个步骤,以查看原始请求的执行方式。我建议使用jQuery;它很容易,很受欢迎,并且记录良好。
要运行我们刚刚谈到的PHP脚本,您需要执行某种请求。根据此设置的性质,它看起来像POST
。一个POST
在jQuery中看起来像这样:
$.post("grabdata.php", {"item":$('#itemID').val()}, function(response){
console.log(response);
document.mydata = response;
}
此函数会将最后echo
的grabdata.php打印到控制台,然后将响应保存为document
对象的属性(基本上可以使其全局访问)。有更好的方法来保持你的全球空间更清洁,但这对我的简单例子起了作用。其间的中间部分是您发布的数据&#34; to grabdata.php。在您的情况下,您希望获得给定某个项目ID(?)的产品ID,反之亦然。这是单向版本的一个例子。请查看http://api.jquery.com/jQuery.post/以获取更多详细信息。
顶层:显示。最后一部分非常简单。既然您已将产品ID存储在document.mydata
中,那么您只需使用jQuery进行快速更新:
$('#productID').val(document.mydata);
请记住,我已经在这里浏览了很多细节。我只想概述一下像这样的系统是如何工作的。请阅读我链接的文档,并尽快回来并提出更具体的问题。
祝你好运!