2012-03-09 3 views
1

Вот моя проблема, у меня есть сайт, который я создаю. Я включаю страницу администратора, чтобы управлять всем на лету, что у меня нет проблем, поскольку это довольно простой PHP, mysql и т. Д. У меня есть в голове, что я могу использовать базу данных для хранения css и динамически вызывать ее поскольку я добавляю новые настройки для разных классов, id и т. д. Моя таблица такова: настройки id - class - div - настройкаDynamic Database Driven CSS

Где класс - это что-то вроде тела, заголовка, нижнего колонтитула и т. д. и div и настройки следующим образом:

.header { 
$div:$setting; 
} 

в моем сценарии я повторяющий тег стиля и в том числе это внутри тегов головы.

мой код для того, что стоит ниже:

$header_query = mysql_query("SELECT style, setting FROM styles WHERE class='header'"); 
$header_result = mysql_fetch_array($header_query); 


echo "<style type='text/css'>"; 
echo ".header {"; 
    foreach($header_result as $hstyle => $hsetting){ 
    echo $hstyle.":".$hssetting.";"; 
    } 

    echo "}"; 
    echo "</style>"; 

Я figgured, что было бы достаточно, чтобы повторить каждую установку для этого конкретного класса, и я был прав в части. Вместо того, чтобы вторя из требуемого кода моего эхо (в зависимости от команды я использую mysql_fetch) выкладывает что-то вроде этого:

<style> 
.header { 
0:div;1:background;2:setting;3:url(x.jpg) 
} 
</style> 

Любые идеи, я в тупик?

ответ

1

mysql_fetch_array выборки одного ряда. Таким образом, вы можете использовать что-то вроде

$header_query = mysql_query("SELECT style, setting FROM styles WHERE class='header'"); 

echo "<style type='text/css'>"; 
echo ".header {"; 

while($header_result_row = mysql_fetch_array($header_query,MYSQL_ASSOC)) 
    echo $header_result_row['style'].":".$header_result_row['setting'].";"; 

echo "}"; 
echo "</style>"; 

Почти все mysql_fetch_* только затрагивает одну строку, имейте это в виду. См. Также mysql_fetch_array examples.

+0

Спасибо за быстрый ответ! Это сработало! :) Я новичок в этом, поэтому я бы никогда не подумал использовать инструкцию while. что показывает, что у меня есть чему поучиться. –

+0

@ user1258619: Добро пожаловать. Просто обратите внимание: если вы хотите сохранить пользовательский контент в своей базе данных, убедитесь, что он [правильно экранирован] (http://de.php.net/mysql_real_escape_string), чтобы предотвратить [SQL-инъекции] (http: //en.wikipedia .org/wiki/SQL_injection) или использовать [подготовленные заявления] (http://de.php.net/manual/en/book.pdo.php). – Zeta

+0

Определенно, я уже сатировал мои входы за все, что мне нужно, чтобы переходить через весь контент. самое плохое, что будет храниться там, - комментарии пользователей и прогресс, как форум. очень здравый совет, поскольку мне может понадобиться помощь по этому поводу. –

0

Это верно, потому что mysql_fetch_array возвращает массив (отсюда и название), содержащий индексированный список всех результатов, где каждая строка является ассоциативным массивом.

Использование

echo $hssetting['style'].":".$hssetting['setting'].";"; 

и вы должны быть хорошо идти.

+0

Спасибо за быстрый ответ! другие форумы, которые я опубликовал, еще не ответили. Я разместил это, и это то, что показано в моем представлении source 'code' ' code' –

+0

на боковой ноте я могу повторить основной запрос на экране при правильном подключении к БД –