我正在使用PHP从MySQL数据库中查询CSS设置,然后将其回显到CSS样式表中.示例代码如下:
<?php
$connect = //connect string
$query = ($connect, "SELECT bgcolor, font FROM displays WHERE name = 'mySettings'");
while ($row = mysqli_query($query)){
$bgcolor = $row[bgcolor];
$font = $row[font];
}
echo '
body {
background-color: #'.$bgcolor.';
font: '.$font.';
}
';
?>
Run Code Online (Sandbox Code Playgroud)
表"displays"对于每个设置的CSS属性都有一列.每行代表用户保存的一组颜色/字体/填充/边距设置.
列"font"是数据类型varchar(50)."bgcolor"应该是什么数据类型?CSS希望看到十六进制值,但MySQL中没有十六进制数据类型.逻辑选择是将值存储为int类型并在SELECT语句中使用HEX()函数.
那么,是否可以更容易和/或使用更少的空间将其存储为char(6)?PHP只是作为字符串处理,而不是实际的数字.十六进制值不会应用任何数学函数; 它只是粘贴到CSS中.
在这种情况下,将值存储为int还是char之间是否有任何偏好?
Cᴏʀ*_*ᴏʀʏ 12
扩展我的评论:
由于这些值仅用于显示目的,因此我将CSS属性值完全存储,无论它是什么,作为数据库中的字符串,例如:
#ab382d
Run Code Online (Sandbox Code Playgroud)
这样就不需要在CSS中放置"#",这样你就可以存储诸如的值
transparentbluergb(100, 100, 100) background-color属性值)无需知道如何渲染它.
编辑:您可能还想考虑一种缓存机制,以减少数据库中针对样式表信息的命中数,这些信息可能不会经常更改.
24位和32位RGB值可以表示为32位整数,因此您可以使用高效存储int,但在加载和保存时,您始终需要将其解码为人类可读或CSS可读的内容.
伪代码:
UInt32 rgba = color.R | ( color.G << 8 ) | ( color.B << 16 ) | ( color.A << 24 );
Color color = Color.FromRgba( rgba & 0xFF, ( rgba >> 8 ) & 0xFF, ( rgba >> 16 ) & 0xFF, ( rgba >> 24 ) & 0xFF );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4268 次 |
| 最近记录: |