2016-03-05 22 views
0

我正在自己的CMS上工作,並希望用戶能夠編寫一些CSS(選擇自己的背景圖像,鏈接顏色,文本顏色等)。php - 從MySQL到CSS

我一直在尋找一種方法將CSS代碼保存到MySQL-tabel中,然後當然從數據庫中將它恢復到.css文件。

我發現這個Turtorial 它並沒有真正顯示如何使用數據庫,但我認爲這將是一個好開始做這樣的,然後從數據庫,而不是變量回聲。但我似乎沒有成功。這是迄今爲止代碼:

main.php

<?php 
header("Content-type: text/css; charset: UTF-8"); 

require '../app/start.php'; 

$css = $db->query(" 
    SELECT textColor, linkColor, background 
    FROM css 
    WHERE id=1 
")->fetchAll(PDO::FETCH_ASSOC); 
?> 

body { 
background: url('<?php echo $css['background']; ?>') no-repeat center center fixed; 
} 

start.php

<?php 

ini_set('display_errors', 'on'); 

define('APP_ROOT', __DIR__); 
define('VIEW_ROOT', APP_ROOT . '/views'); 
define('BASE_URL', 'http://localhost:8080/mypage/public_html'); 

$db = new PDO('mysql:host=127.0.0.1;dbname=mycms', 'root', ''); 

require 'functions.php'; 

。在後臺列的數據庫我只是一個隨機圖像的URL,看它是否作品(http://all4desktop.com/data_images/original/4238051-background.jpg

+1

'$ css'是一個多元數組,不是嗎?頁面當前產生了什麼?任何錯誤? 「似乎並沒有使它工作」並不是一個很好的描述當前正在發生的事情。 – chris85

+0

CSS表格由一個「ID」和「textColor」,「linkColor」,「background」組成。當用戶改變這些,我想我會用ALTER TABLE,如果我不認爲完全錯誤,它應該工作,對吧?該頁面不會給出任何錯誤,它會顯示所有內容,除了此數據庫中的CSS外。 – Kelsner

+0

看看源和錯誤日誌。這兩個地方都有什麼。它認爲你的'css'目前會顯示'Array'。 – chris85

回答

0

fetchAll返回一組記錄,它們是鍵/值對的數組。因此$css['background']不存在。但$css[0]['background']呢(只要有找到記錄)。

但似乎你的表必須爲每用戶最多的一個記錄,所以你想要做的是替換使用fetchall只有獲取。然後$css['background']是有道理的。

確保儘管處理沒有找到記錄的情況。在這種情況下,$ css將是false,並且任何對$ css的引用都會產生錯誤。