删除重复代码

时间:2011-07-03 18:33:49

标签: php mysql duplicates

我正在开发一个项目,我只想获得一些帮助来解决这个问题并帮助清理代码并删除大量重复项。

我有一个FAQ数据库表,其中包含" id,user_id,faq_question,faq_text,sort_id "。现在,每次创建动态网站时,我都会有一个插入查询来创建网站,然后还会在FAQ表中插入我想要使用的默认问题和答案。

    $insertFAQ = array(
        'user_id' => $user_id,
        'faq_question' => 'Default Question',
        'faq_text' => 'Default Answer',
        'sort_id' => '1'
    );


    $Db->insert('faq', $insertFAQ);

sort_id就在那里,因为他们能够以不同的顺序拖动问题,并更新数据库并以新的顺序在网站上显示。

现在的问题是,我想要为每个网站创建10个默认常见问题和答案。如果我们在数据库中获得数百个站点,这将是FAQ数据库表中的大量记录,几乎全部都是重复的。

我知道必须有一种更简单的方法来实现它,唯一让我失望的是sort_id,因为他们都可以拥有相同的问题和答案,但对它们进行不同的排序。然后他们当然可以添加自定义问题。

P.S。 - 如何在我发布的上述数组中添加多个问题/答案?

3 个答案:

答案 0 :(得分:1)

一种方法是在表格中有一个site_id字段。对于全局常见问题,site_id可以是null

然后获取网站的常见问题:

 SELECT * FROM faq WHERE site_id IS NULL OR site_id = $site_id

答案 1 :(得分:1)

如果您在问题中发布的数组中有多个问题,那么您可以拥有一个多维数组:

$insertFAQ = array( 
    0 =>array(
    'user_id' => $user_id,
    'faq_question' => 'Default Question',
    'faq_text' => 'Default Answer',
    'sort_id' => '1'
),

1 =>array(
    'user_id' => $user_id,
    'faq_question' => 'Default Question',
    'faq_text' => 'Default Answer',
    'sort_id' => '1'
),
 2 => array(
    'user_id' => $user_id,
    'faq_question' => 'Default Question',
    'faq_text' => 'Default Answer',
    'sort_id' => '1'
) );`

依旧和儿子。

至于排序 - 您可以创建一个单独的表,只保存排序顺序,站点ID和问题ID。

id, faq_id, site_id, sort_order

如果创建了一个新网站,您只需在此表格中为其创建一个新条目,而且问题不必重复,您只能指定哪个网站的订单。

答案 2 :(得分:0)

如果我理解你的问题......对我来说,似乎你只需要从用户记录中分离问题/答案,而是在用户记录中引用问题/答案条目:

// insert if it doesn't exist
$insertFAQ = array(
        'faq_id' => $faq_id,
        'faq_question' => 'Default Question',
        'faq_text' => 'Default Answer'
    );

// get faq id of newly inserted or existing faq entry
...

// insert user
$insertUser = array(
        'user_id' => $user_id,
        'faq_id' => $faq_id,
        'sort_id' => '1'
    );