存储HTML块的MYSQL与为子项

时间:2018-01-31 20:26:25

标签: html mysql

我正在创建contenteditable个DIV块,其中包含围绕单个单词或短语的文本块和SPAN的DIV。 SPAN作为单独的实体保存到数据库中。我没有看到需要细分和创建单独的表和列以避免使用HTML代码(我不知道这是否是好的做法)。

既然我的想法猖獗,我想知道实际上将每个包装器,子div和span作为单独的实体存储在数据库中以及相关的属性是否会更好。设置可能需要一些时间,但我想知道一种方法与另一种方法的优缺点。

例如,存储在不同表格和行中的不同数据位最终是否较慢,从长远来看更难以管理,并且比在一个字段中全部更容易被“损坏”?

HTML的示例块:

<div class="tab" id="tab1" contenteditable=true>
        <div>
            ly dummy text <span id="1">of</span> the pri
        </div>
        <div>
            ly dummy <span id="2">text</span> of the pri
        </div>
        <div>
            ly <span id="3">dummy</span> text of the pri
        </div>
        <div>
            ly dummy <span id="4">text</span> of the pri
        </div>
        <div>
            <span id="5">ly</span> dummy text of the <span id="6">pri</span>
        </div>
    </div>

以前,我会加载整个HTML块并允许客户端函数对跨度做一些事情。现在,我想知道不仅存储单独的tabs而且存储该选项卡的每个子div以及关系表中这些div中的众多可能跨度的缺点是什么。那么,Context&gt;标签&gt; Div> Span,以及可能导致给定表中的数千行。不幸的是,我对编程比较陌生,所以我不确定其中的一些原则。感谢您的时间和耐心。

1 个答案:

答案 0 :(得分:1)

将HTML的整个部分存储到数据库中通常是不好的做法;除非您特别想要为不同用户提供不同的视图,否则您不应该将任何标记存储在数据库中。即使这样,我也会建议改为使用多个不同的HTML页面。

相反,您应该做的是将您的HTML视为存储在数据库中的数据的表示,并将这两者视为完全独立。代表你是如何view&#39;数据,应简单地表示您的数据呈现

假设您的用户可以修改您的内容块,以便其他人能够看到更改,您可能希望将用户输入的文字存储到数据库,虽然您当然不想在数据库中存储任何支持HTML格式。

如果要将此信息显示给用户,只需从数据库中检索到的信息量注入到视图中。

例如(在PHP中):

<html>
  <div class="container">
    <span id="output"><?php echo $content; ?></span>
  </div>
</html>

由于从视图中提取和隔离数据,您可以轻松修改 以进行重新调整用途。如果要显示新数据,只需修改数据($content)以便以相同方式显示它。同样,您可以在多个不同的地方显示相同的数据;在上面,$content可以在任何地方输出。

这不仅显着提高了可管理性,还减少了数据库中存储的数据量,从而减少了呼叫次数(从而加快了负载)。

在这方面有很多不同的技术,但最常见的是 Model-View-Controller 方法。

希望这有帮助!