Как создать wordpress-подобную таблицу параметров и получить значения для каждой строки? - PullRequest
0 голосов
/ 06 мая 2010

Я хочу создать таблицу опций в моей базе данных, которая сделает каждую запись системной опцией, чтобы я мог работать с небольшим количеством полей.

Моя БД имеет следующую структуру:

  • 3 столбца с именами id, name и value

В качестве примера вставлены следующие данные:

+--+-----------+--------------------------+
|id|name       |value                     |
+--+-----------+--------------------------+
| 1|uri        |www.example.com           |
| 2|sitename   |Working it out            |
| 3|base_folder|/folder1/folder2/         |
| 4|slogan     |Just a slogan for the site|
+--+-----------+--------------------------+

Таким образом, я могу очень легко включить большое количество настраиваемых системных параметров.

Проблема в том, что я не знаю, как их получить. Как мне получить значение uri and, сохранить его как переменную? И, что еще лучше, как, например, получить значения id 1 и 4, не выполняя каждый раз запрос? (Я предполагаю, что несколько запросов бесполезны и довольно уродлив.)

Я знаю, что вопрос довольно простой, но я здесь потерян. Буду очень признателен за ваш ответ!

Ответы [ 2 ]

0 голосов
/ 07 мая 2010
$values = array();
$q = "SELECT * FROM table";
$resu = mysql_query($q);

while ($row = mysql_fetch_array($resu)) {
    $values[$row['name']] = $row['value'];
}

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

echo $value['variable_name'];
0 голосов
/ 07 мая 2010

Вот кое-что, с чего можно начать. Нет проверки ошибок или других тонкостей включены. Я предполагаю, что ваше имя базы данных равно $ db_name, а таблица, которую вы описываете выше, называется 'site_params'.

Чтобы получить один параметр из вашей таблицы ...

// select your db
mysql_select_db($db_name);

// get the uri setting
$query = "SELECT value FROM site_params WHERE name='uri'";
$result = mysql_query( $query );

Если настроек не слишком много, вы можете получить их все сразу ...

// get all the settings
$query = "SELECT * from site_params";
$result = mysql_query( $query );

Или достаньте несколько из них ...

// get uri and sitename
$query = "SELECT * from site_params where name in ('uri', 'sitename') ";
$result = mysql_query( $query );

Вы можете получить результат в виде массива с именем $ site_info, добавив ...

$site_info = mysql_fetch_array($result, MYSQL_ASSOC);

Уточнение: это помещает одну строку в $ site-info. Повторно вызывайте его, чтобы получить несколько строк результата.

Чтобы изменить один из параметров ...

// set new sitename
$newsitename = 'http://mynewsite.com';
$query = "UPDATE site_params SET value='" . $newsitename . "' where name='sitename'";
$result = mysql_query( $query );

Это то, что вы ищете? Перейдите на http://php.net для получения всей необходимой информации. Например:

http://php.net/manual/en/function.mysql-query.php

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