【问题标题】:1 id for more items1 个 id 用于更多项目
【发布时间】:2012-07-25 17:27:33
【问题描述】:

我有一个表单 request_form.php,用于管理请求项目的采购请求表单。

Purchase_Request_No:(自动 - 自动增量)
日期:
部门:
供应商 :
Item_Request :
示例有 5 行:
1.
2.
3.
4.
5.

我想在购买请求有 1 个 Purchase_Request_No 时进行。
示例:

Purchase_Request_No : 17
日期:2012 年 7 月 25 日
部门:生产
供应商:微软
Item_Request :
1.Windows XP 专业版
2.键盘
3.鼠标
4.液晶显示器
5.演讲者

那么,我怎样才能使用 1 Purchase_Request_No 并且项目请求超过 1 件(在这种情况下我放了 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";
}
?>

有什么想法吗?

【问题讨论】:

  • 2个表,一个采购表和一个项目表

标签: php mysql oracle11g


【解决方案1】:

有三张桌子。一个将包含产品:

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 设为素数并将 items 列存储为项目的倍数。您需要做的就是找到 items 列的素数,然后那么你就有了项目列表!*)

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

【讨论】:

  • items - bad: 非第一范式 (en.wikipedia.org/wiki/First_normal_form)
  • 人们可能不同意这个想法,因为您正在为请求项存储逗号分隔值,这通常是非常糟糕的做法。它们应该作为单独的行存储在自己的表中,并带有请求 ID 的外键。
  • 嗨...如果我不想保存项目的主数据怎么办?
  • 什么是“主数据”?
  • 你解释说产品必须在表中设置,对吗?那么如果产品不在表格列表中怎么办?
【解决方案2】:

最好的做法是创建两个表说

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_Items_Details

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2020-12-14
    • 2016-02-18
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多