我正在创建一个功能,允许管理员用户创建自己的SKU代码格式,以便在创建新产品时自动生成SKU代码。
管理员用户可以使用以下部件类型定义格式。管理员用户可以决定它们的格式和顺序.SKU格式完全灵活,适合所有业务。
示例格式
格式:[产品类别] [ - ] [产品品牌] [ - ] [颜色] [ - ] [unqiue id] 结果:PHONES-APPLE-GOLD-001
格式:[unqiue id] [。] [产品品牌] 结果:001.APPLE
格式:[产品品牌] [unqiue id] [颜色] 结果:APPLE001GOLD
管理员用户还将定义分配给每个部件类型的代码,例如:
分类
电话= PHONES 计算机= COMP
品牌
Apple = APPLE Hewlett-Packard = HP
颜色
黄金=黄金 黄色= YELL
将要求内容编辑者(添加新产品的人)使用选择下拉列表为新产品构建SKU代码。
使用示例格式[产品类别] [ - ] [产品品牌] [ - ] [颜色] [ - ] [unqiue id]将意味着用户将看到3个下拉菜单:
从类别下拉列表中,他们可以选择COMP 从drodpown品牌,他们可能会选择惠普 从颜色下拉列表中,他们可以选择GOLD
然后他们将提交表格并返回SKU代码:COMP-HP-GOLD-002
问题
我很难想出查询数据库的最佳方法,以检查是否已存在类似的SKU代码,如果是,则获取最大唯一ID并将数字增加1.
由于管理员用户在定义格式时具有灵活性,因此很难做到这一点。
对于上面的例子,我可能会使用以下内容:
$contructed = $product."-".$brand."-".$color);
$query = $db->query("SELECT (MAX(replace(replace(replace(sku,'".$product."-',''),'".$brand."-',''),'".$color."-',''))+1) as SKU FROM `product` WHERE `sku` LIKE '%".$contructed."%'");
然而,我假设每个人都会使用这种格式和这些部分,但他们不会这样做。我没有考虑到人们会:
我唯一的保证是管理员用户将始终使用必须使用unqiue ID部件类型。
有没有人对解决这种灵活性的最佳方法有任何想法?