簡體   English   中英

基於數據庫的PHP動態CSS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM