Php 1个id用于更多项目

Php 1个id用于更多项目,php,mysql,oracle11g,Php,Mysql,Oracle11g,我有一个表单request_form.php,即管理请求项的采购请求表单 采购申请号:(自动-自动增量) 日期: 部门: 供应商: 项目请求: 示例有5行: 1. 2. 3. 4. 5. 我想做一次采购申请,有一个采购申请号。 示例: 采购申请编号:17 日期:2012年7月25日 部门:生产部 供应商:微软 项目请求: 1.Windows XP Professional 2.键盘 3.鼠标 4.LCD显示器 5.演讲者 那么,如果一个采购申请超过一个项目(在这种情况下,我放了5个项目),我如

我有一个表单request_form.php,即管理请求项的采购请求表单

采购申请号:(自动-自动增量)
日期:
部门:
供应商:
项目请求:
示例有5行:
1.
2.
3.
4.
5.

我想做一次采购申请,有一个采购申请号。
示例:

采购申请编号:17
日期:2012年7月25日
部门:生产部
供应商:微软
项目请求:
1.Windows XP Professional
2.键盘
3.鼠标
4.LCD显示器
5.演讲者

那么,如果一个采购申请超过一个项目(在这种情况下,我放了5个项目),我如何才能做到这一点

有人能帮我吗? 谢谢你提前通知


大家好,现在我已经在编写这个概念了。 它已成功地将数据保存到数据库中,但在插入5项时,它仍会按每个ID提交每个项的数据。 示例:
第1项-计算机(购买编号1)
第2项-鼠标(购买编号2)
我想要的是:
第1项-计算机(购买编号1)
第2项-鼠标(采购编号1)

这是我的代码: 我使用带有自动增量的采购编号

<?php
$conn = oci_connect("system", "dev01");
$n = $_POST['jum'];
for ($i=1; $i<=$n; $i++)
{
$dept=$_POST['dept'];
$date_request=$_POST['date_request'];
$supplier=$_POST['supplier'];   

$item=$_POST['item'.$i];    
$qty=$_POST['qty'.$i];  
$uprice=$_POST['uprice'.$i];    
$total=$_POST['total'.$i];  

$s = oci_parse($conn,
"insert into purchase_request(dept_id, supplier_id, date_request, item, qty, uprice, total_amount) values ('$dept', '$supplier', '$date_request', '$item'
, '$qty', '$uprice', '$total'
)");

$r = oci_execute($s);

oci_rollback($conn);

echo "Data was committed\n";
}
?>

有三个表。其中一个将包含以下产品:

id    Product
1     Windows XP Professional
2     Keyboard
3     Mouse
4     LCD Monitor
5     Speaker
另一个包含以下请求:

id    request_date    dept       supplier
1     25-Jul-2012     Production Microsoft
第三个将前两个映射到一起

id  request_id  item_id
1   1           1
2   1           2
3   1           3
4   1           4
5   1           5
(或者,您可以将产品的ID设为素数,并将
项目
列存储为项目的倍数。您所需要做的就是找到
项目
列的素数因子,然后就得到了项目列表!)


*出于某种原因,工作中没有人认为这是个好主意。

最好的做法是创建两个表

Purchase
Purchase_Id (Primary Key)
Supplier_Id: (foreign key referring Supplier table)
Purchase_date: datetime

Purchase_Items_Details
purchase_item_id (primary key)
purchase_id (foreign key to Purchase table)
item_id (foreign key to Products/Items table)
qty (Quantity)

其中,在
Purchase
表中,您将只输入基本的采购详细信息,有关采购的详细信息将添加到
Purchase\u Items\u Details

2个表中,一个采购表和一个项目表Items-错误:非第一个正常形式()人们可能不同意这个想法,因为您正在为请求项存储单独的值,这通常是非常糟糕的做法。它们应该作为单独的行存储在自己的表中,并带有请求id的外键。。。如果我不想保存项目的主数据,怎么样?你说的“主数据”是什么意思?你之前解释过产品必须在表中设置,对吗?那个么,若产品不在表中的列表中,该怎么办呢?