![](/img/trans.png)
[英]Dynamic css and javascript submitting to mysql database with php
[英]Dynamic CSS with PHP based on database
在StackOverflow上找到了几个答案并将它们用作我的模型,但我必须遗漏一些东西。 我正在尝试根据我的数据库中的动态在CSS中动态设置几种背景颜色,但它不起作用 - 当我在Chrome中检查Inspect Element时,背景颜色有一条直线和一个警告标记'无效适当的价值'。
这是我的代码; 它位于两个单独的文件中 - 第一个位于标题包含文件中,第二个位于链接的.php / css-esque文件中。
标题包括:[编辑4/29以包含会话代码]
session_start();
// check if $_SESSION was set before
if (!isset($_SESSION['email'])) {
header("Location: bad_login.php");
exit();
}
$_SESSION['companyid'] = $_POST['companyid'];
$companyID = $_SESSION['companyid'];
$email = $_SESSION['email'];
require_once('../includes/_connection.inc.php');
$connect = dbConnect('read');
$sql = 'SELECT colorone, colortwo, logo
FROM companies
WHERE companyid = ' . $companyID;
$result = $connect->query($sql) or die(mysqli_error());
$row = $result->fetch_assoc();
$colorOne = '#' . $row['colorone'];
$colorTwo = '#' . $row['colortwo'];
$carrierLogo = '/companylogos/' . $row['logo'];
PHP / CSS文件:
<?php header("Content-type: text/css");
?>
#main {
width: 85%;
margin: 0 auto;
padding: 0.75em 0;
}
#colorOne {
width: 100%;
height: 12px;
background-color: <?php echo $colorOne; ?>;
}
#colorTwo {
width: 100%;
height: 7px;
background-color: <?php echo $colorTwo; ?>;
}
编辑4/29:
这是生成的CSS:
#main {
width: 85%;
margin: 0 auto;
padding: 0.75em 0;
}
#colorOne {
width: 100%;
height: 12px;
background-color: ;
}
#colorTwo {
width: 100%;
height: 7px;
background-color: ;
}
我也回复了html中的变量,所以我知道变量中应该有一些东西。 我应该打开数据库并在css.php文件中分配变量吗?
CSS / PHP在头文件中以这种方式链接:
<link type="text/css" rel="stylesheet" href="../css/carrier.php">
而不是使用.css文件扩展名,请使用.php
在html文件中:是否链接到.php?
<link rel='stylesheet' type='text/css' href='css/style.php' />
在style.php中添加
<?php
header("Content-type: text/css; charset: UTF-8");
?>
现在,您可以根据自己的喜好设置变量:
编辑:
不要忘记session_start();
因为你正在使用会话(我不明白如何,因为没有任何内容发布到css / carrier.php你应该在会话中从不同的文件中获取它然后只使用$companyID = $_SESSION['companyid']; $email = $_SESSION['email'];
)。
这是你的代码看起来的方式?
<?php
session_start();
header("Content-type: text/css; charset: UTF-8");
$_SESSION['companyid'] = $_POST['companyid'];
$companyID = $_SESSION['companyid'];
$email = $_SESSION['email'];
require_once('../includes/_connection.inc.php');
$connect = dbConnect('read');
$sql = 'SELECT colorone, colortwo, logo
FROM companies
WHERE companyid = ' . $companyID;
$result = $connect->query($sql) or die(mysqli_error());
$row = $result->fetch_assoc();
$colorOne = '#' . $row['colorone'];
$colorTwo = '#' . $row['colortwo'];
$carrierLogo = '/companylogos/' . $row['logo'];
?>
#main {
width: 85%;
margin: 0 auto;
padding: 0.75em 0;
}
#colorOne {
width: 100%;
height: 12px;
background-color: <?php echo $colorOne; ?>;
}
#colorTwo {
width: 100%;
height: 7px;
background-color: <?php echo $colorTwo; ?>;
}
yesitsme的答案是正确的。 您可以做的其他事情是每个存储在数据库中发生更改,运行创建具有相应.css扩展名的“新”CSS文件的过程。
如果每次请求都创建一个新的CSS文件怎么办? 我的意思是,当您创建第一次调用Web并不时更新它时,您有两个路径,当您将数据保存在数据库中并将其与脚本相关联时。
使用这个新的CSS并通过fwrite()和PHP必须管理文件的其他函数生成存储,保留在BDD中创建的CSS的名称,然后在适当的位置保存链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.