说明:在库存管理系统(HPE)中,不可避免会遇到料号,BOM(Bill Of Material) ,即物料清单表。在表中有父料号(父阶)和子料号(子阶)的关系,一个父阶可以包含多个子阶,而子阶又包含若干个子阶。物料中有成品、半成品、原材料等,无论是成品、半成品或是原材料,它们都属一种料号。一个成品可包含若干个成品或半成品,一个半成品可包含若干个原材料乃至成品。在BOM表中有bom_parent,bom_part...以下代码是我从项目中摘录出来的展开BOM表的算法,其中包括如何展开所有子阶,只展开第一阶子阶,展开最后一阶子阶,显示最上层父阶,显示第一层父阶。
举例:
bom_parent bom_part
A0001 B0001
A0001 B0002
A0001 B0003
B0001 C0001
B0001 C0002
B0002 C0001
B0003 C0003......
代码:
//Author: lucas Date:2007.11.12
<?php
//funtion: connect to database
//database: Name:inv ,User:root,Password:831025
function db_link()
{
$access_id = "root";
$access_pwd = "831025";
$db_name = "inv";
@ $db = mysql_connect('localhost', $access_id, $access_pwd) or
die("Could not connect to database. Please contact with IT supporting team ASAP.");
mysql_query("SET NAMES 'GBK'");
mysql_select_db($db_name);
return $db;
}
$link=db_link();
//function: get part information
//Table name: Part field:pt_part,pt_desc,pt_act.
function get_part_info($part, $part_field)
{
$pt_sql = "SELECT ".$part_field." FROM part WHERE pt_part = '$part' ";
$pt_res = mysql_query($pt_sql);
$pt_num = mysql_num_rows($pt_res);
if ($pt_num > 0) {
$pt_row = mysql_fetch_array($pt_res);
return $pt_row[0];
}
else
return "";
}
//function:select plant
//Table name:Plant field:plant_id,plant_desc,plant_act
function select_bom_plant($name, $default, $allow_all)
{
$plant_sql = "SELECT plant_id, plant_desc FROM plant WHERE plant_act = '1' ";
$plant_res = mysql_query($plant_sql);
$plant_num = mysql_num_rows($plant_res);
echo '<select name="'.$name.'">';
if ($allow_all == "Y") {
if ($default == "*")
echo '<option value="*" selected> - All Plants - </option>';
else
echo '<option value="*"> - All Plants - </option>';
}
if ($default == "GLOB")
echo '<option value="GLOB" selected> GLOB - Global BOM </option>';
else
echo '<option value="GLOB"> GLOB - Global BOM </option>';
for ($i = 0; $i < $plant_num; $i++){
$plant_row = mysql_fetch_array($plant_res);
if ($default == $plant_row['plant_id'])
echo '<option value="'.$plant_row['plant_id'].'" selected > '.$plant_row['plant_id'].' - '.$plant_row['plant_desc'];
else
echo '<option value="'.$plant_row['plant_id'].'" > '.$plant_row['plant_id'].' - '.$plant_row['plant_desc'];
}
echo '</select>';
}
//inquiry table bom[Bill Of Material] 物料清单
//Table Name: bom
//Field:bom_parent,bom_part,bom_act,bom_um,bom_qty,bom_eff_date,bom_ineff_date,bom_type,bom_sts,bom_plant...