我将基本的 CSS 设置存储在数据库中,这样它们就可以由客户端使用某种网络表单进行配置,然后这些可以在 style
标签中回显并覆盖任何现有设置.基本设置,如字体系列、背景颜色、字体颜色等。
表格:
我决定存储如上所示的设置,而不是为每个 css 选择器设置列名,因为这样更容易更新和维护。
我试图回显“style_name”后跟“{”,然后是每个“style_value”,然后是结束标记“}”。我快到了,但我想弄清楚如何知道何时回显与样式名称关联的所有样式值,然后回显结束标记,而不是在每个值之后回显。
PHP 代码:
$sql = 'SELECT style_name, style_value FROM style ORDER BY style_name';
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
$unique_css = array();
foreach ($results as $css) {
if (!in_array($css->style_name, $unique_css)) {
$unique_css[] = $css->style_name;
echo $css->style_name . " { " . $css->style_value;
} else {
echo $css->style_value;
}
echo '}';
}
返回:
body {
background: #CCC; }
font-family: 'Verdana', sans-serif; }
font-size: 40px; }
text-align:center;
}
h1 {
font-size: 50px;
}
h2 {
font-family: 'Arial', sans-serif;
}
我知道我可以回显每个带有值的样式名称,例如:
body { value1 } body {value2}
但我认为这只是 IMO 的困惑。帮助表示赞赏!
最佳答案
最佳解决方案之一是使用适当的 MySQL 通过使用 GROUP_BY
关键字并使用 GROUP_CONCAT
连接样式值字符串来按样式名称分组:
SELECT style_name, GROUP_CONCAT(style_value SEPARATOR ' ') style_values FROM style GROUP BY style_name
这将导致:
STYLE_NAME STYLE_VALUES
body background: #CCC; font-family: 'Verdana', sans-serif; font-size: 40px; text-align: center;
h1 font-size: 50px;
h2 font-family: 'Arial', sans-serif;
示例 fiddle :
DEMO
有关 GROUP_BY 和 GROUP_CONCAT 的更多信息:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
之后,您可以将所有样式以简单的方式组合在一起:
foreach ($results as $css) {
echo $css->style_name . " { " . $css->style_values + " }";
}
关于php - 根据选择器和声明(key => value)从数据库中显示 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18998776/