这是一个php / mysql问题。
我正在设计一个网站,管理员可以选择以下选项:在哪里对齐文本,某些元素的字体大小,缩略图的高度/宽度等等。选项存储在表格中并使用php需要的地方。我正在尝试完成类似于Wordpress如何在表中存储选项的东西。这样做的最佳方法是什么?
答案 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中。最好的解决方案是使用两者的组合。