2011-07-03 33 views
2

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

我有 “ID,USER_ID,faq_question,faq_text,sort_id” 的FAQ数据库表。现在每创建一个动态站点,我都有一个插入查询来创建站点,然后插入到我想要使用的默认问题和答案的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. - 我如何在上面发布的数组中添加多个问题/答案?

回答

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 

ID的新网站创建您只需创建此表为一个新的条目,并比问题不必重复自己,你唯一指定什么样的顺序去什么网站。

+0

完美。那么真的,每个网站仍然会有10条记录,只要参考10个默认问题并告诉它的顺序是什么? – Drew

+0

是啊,这个想法,当有人创建了一个新网站具体的问题,这个问题就会被添加到常见问题表+在排序表... – YonoRan

+0

一个新条目使用表结构@YonoRan建议,您还可以有一个问题在多个网站共享。例如,如果您的默认10个问题相同,则可以简单地添加faq_id设置为旧问题的条目。 – alxbl

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' 
    ); 
1

一种方法是在表中有site_id字段。对于全球常见问题,site_id可能是null

然后拿到常见问题解答网站:

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