сохранение «опций» и извлечение их с помощью php / mysql - PullRequest
1 голос
/ 04 мая 2011

Это вопрос php / mysql.

Я разрабатываю веб-сайт, где администратор может выбрать некоторые параметры, например: где выровнять текст, размер шрифта для определенных элементов, какую высоту / ширину миниатюр и т. Д. Параметры сохраняются в таблице и извлекаются с помощью PHP, где это необходимо. Я пытаюсь сделать что-то похожее на то, как Wordpress хранит опции в таблице. Каков наилучший подход к этому?

Ответы [ 4 ]

2 голосов
/ 04 мая 2011

wordpress сохраняет каждую опцию в строке в одной таблице, некоторые данные опций сериализуются, но в конце дня они по существу сохраняются как пара ключ => значение

начните с выяснения, какие параметры вы хотите сохранить и дайте им уникальные ключи

например, site.background = # FFFFFF

тогда вы можете создать простую таблицу для хранения

configtable
|section|key       |value  |
|site   |background|#FFFFFF|

если вы сделаете уникальный индекс вокруг (раздел, ключ), то вы не получите дуплей

чтобы загрузить только настройки сайта, вы можете сделать это

$result = mysql_query("select key, value from configtable where section='site'");
$siteconfig = array()
while(list($key, $value) = mysql_fetch_row($esult)) {
    $siteconfig["$key"] = $value; // forcing key to be a string so that numeric keys don't stuff things up
}

в вашем коде вы можете сделать это

echo <div style="background: <?php echo $siteconfig['background']; ?>

для одновременной загрузки ВСЕХ настроек вы можете сделать это

$result = mysql_query('select section, key, value from configtable');
$config = array()
while(list($section, $key, $value) = mysql_fetch_row($esult)) {
    $config["$section"]["$key"] = $value; // forcing section/key to be a string so that numeric keys don't stuff things up
}

в вашем коде вы можете сделать это

echo <div style="background: <?php echo $config['site']['background']; ?>

для пользовательских настроек, просто добавьте столбец user_id в таблицу, чтобы сохранить его

configtable
|section|key       |value  |user_id  |
|site   |background|#FFFFFF|bumperbox|

надеюсь, что это поможет

1 голос
/ 04 мая 2011

Лучший способ сделать это - использовать инструмент JavaScript, который преобразует текстовую область в WYSIWYG-редактор.Вот некоторые из них: CkEditor, TinyMce и мой любимый, NicEdit.

Затем вы можете взять вывод html из поля <textarea>, затем сохранить его в базе данных после проверки таких вещей, как инъекции JS, иэкранирование определенных символов.

0 голосов
/ 04 мая 2011

У вас может быть класс с именем Variables, подобный этому

class Variables {
  public function __get($key) {
    // fetch from cache/table
  }
  public function __set($key,$value) {
    // store to cache/table
}

См. Справочную страницу PHP для объяснения по __ get и __set .Вы можете сохранить данные в таблице, которая называется переменными (поля: ключ, значение).Или вы можете сохранить его в memcache.Лучшее решение - использовать комбинацию обоих.

0 голосов
/ 04 мая 2011

Что бы я сделал:

Сначала я бы определил, какой стиль хочет администратор (через GET или POST), а затем я бы echo html и стиль.

Примерно так:

if($_POST['textColour']=='blue')

{
  echo "<span style=\"color: blue; \">My text</span>";
}

Прошло много времени с тех пор, как я так кодировал CSS, но я думаю, что это работает.Я уверен, что есть и другие способы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...