保存“选项”并使用php / mysql检索它们

时间:2011-05-04 02:01:02

标签: php mysql variables

这是一个php / mysql问题。

我正在设计一个网站,管理员可以选择以下选项:在哪里对齐文本,某些元素的字体大小,缩略图的高度/宽度等等。选项存储在表格中并使用php需要的地方。我正在尝试完成类似于Wordpress如何在表中存储选项的东西。这样做的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

wordpress将每个选项连续存储在一个表中,一些选项数据被序列化,但在一天结束时,它们基本上存储为键=>价值对

首先找出你想要存储的选项 并给他们独特的钥匙

例如     site.background = #FFFFFF

然后你可以创建一个简单的表来存储它

configtable
|section|key       |value  |
|site   |background|#FFFFFF|

如果你在(section,key)周围创建一个唯一索引,那么你不会最终得到dupes

只加载网站设置,只有你可以这样做

$result = mysql_query("select key, value from configtable where section='site'");
$siteconfig = array()
while(list($key, $value) = mysql_fetch_row($esult)) {
    $siteconfig["$key"] = $value; // forcing key to be a string so that numeric keys don't stuff things up
}

在您的代码中,您可以执行此操作

echo <div style="background: <?php echo $siteconfig['background']; ?>

立即加载所有设置

$result = mysql_query('select section, key, value from configtable');
$config = array()
while(list($section, $key, $value) = mysql_fetch_row($esult)) {
    $config["$section"]["$key"] = $value; // forcing section/key to be a string so that numeric keys don't stuff things up
}

在您的代码中,您可以执行此操作

echo <div style="background: <?php echo $config['site']['background']; ?>

对于用户特定设置,只需在表中添加user_id列即可存储

configtable
|section|key       |value  |user_id  |
|site   |background|#FFFFFF|bumperbox|

希望有所帮助

答案 1 :(得分:1)

最好的方法是使用JavaScript工具将文本区域转换为WYSIWYG编辑器。一些不错的是CkEditor,TinyMce和我最喜欢的NicEdit。

然后你可以从<textarea>字段中获取html输出,然后在检查JS注入和转义某些字符之后将其存储到数据库中。

答案 2 :(得分:0)

我要做的是:

我首先要定义管理员想要的样式(通过GET或POST),然后我会echo html 样式。

像这样:

if($_POST['textColour']=='blue')

{
  echo "<span style=\"color: blue; \">My text</span>";
}

我已经有一段时间了,因为我编写了这样的CSS,但我认为它有效。我相信还有其他方法。

答案 3 :(得分:0)

您可以拥有一个名为Variables的类

class Variables {
  public function __get($key) {
    // fetch from cache/table
  }
  public function __set($key,$value) {
    // store to cache/table
}

有关__get and __set的说明,请参阅PHP手册页。您可以选择将数据存储在名为variables(fields:key,value)的表中。或者你可以将它存储在memcache中。最好的解决方案是使用两者的组合。