Как заполнить массив из БД

Статус
В этой теме нельзя размещать новые ответы.

rafic

Местный житель
Регистрация
14 Май 2008
Сообщения
477
Реакции
24
Граждане нулледа. Хелп ми!
Есть массив:
PHP:
$config = array(
     'site_title' => 'Мой сайт',
     'site_url' => 'http://site.ru/',
     'site_charset' => 'utf8',
);
и я сделал таблицу в БД такую-же как и массив по структуре:
Код:
[B]set_id[/B]     [B]set_name[/B]      [B]set_value[/B]
    1      site_title    Мой сайт
    2      site_url      [url]http://site.ru/[/url]
    3      site_charset  utf8
Теперь мне нужно в файле config.php сделать (который я потом буду вызывать на каждую страничку где мне нужны настройки) вывод такого же массива только из таблици БД (таблица выше). То есть потом я вызываю файл config.php на cтранице, где мне нужно получить данные из таблицы настроек и при написании, допустим, $config['site_title'] я получал Мой сайт.

По сути, мне просто надо заполнить массив из БД.
Вот сам пробовал писать бред в 3 часа ночи, но оно не работает. Прошу помощи, а то у меня больше нечего путного на ум не приходит.
PHP:
<?php
	// Системные настройки
	$set_query = mysql_query("SELECT set_name, set_value FROM setting");
	$conf = mysql_fetch_array($set_query);
	foreach($conf as $set_name => $set_value){
		$config = array( $set_name => $set_value );
	}
	echo $config['site_title'];
?>
 
PHP:
<?php 
    // Системные настройки 
    $set_query = mysql_query("SELECT set_name, set_value FROM setting"); 
    $conf = mysql_fetch_array($set_query); 
    foreach($conf as $set_name => $set_value){ 
        eval ("\$config[\"$set_name\"]=\"$set_value\""); 
    } 
    echo $config['site_title']; 
?>
 
Кажется это будет примерно так...
PHP:
<?php
$set_query = mysql_query("SELECT set_name, set_value FROM setting");
while ($conf = mysql_fetch_array($set_query)) 
{
 $config[$conf['set_name']] = $conf['set_value'];

}
print_r($config);
?>
 
Не один из вышеприведенных вариантов не работает=(
В варианте diavolic выдает ошибку
Parse error: syntax error, unexpected $end in C:\VertrigoServ\www\local\tw\classes\config.php(18) : eval()'d code on line 1

Parse error: syntax error, unexpected $end in C:\VertrigoServ\www\local\tw\classes\config.php(18) : eval()'d code on line 1

Parse error: syntax error, unexpected $end in C:\VertrigoServ\www\local\tw\classes\config.php(18) : eval()'d code on line 1

Parse error: syntax error, unexpected $end in C:\VertrigoServ\www\local\tw\classes\config.php(18) : eval()'d code on line 1

В варианте от jo0o00nyy сразу видно, что выводится весь массив, а мне нужно выводить не весь массив, а из этого массива определенные параметры. Как пример могу показать кусок сода, где я буду использовать нужный мне в итоге результат.
HTML:
<html>
<head>
<title> <?php echo $config['site_title']; ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $config['site_url']; ?>/css/style.css" />
</head>
<body>
   <div id="footer"> <?php echo $config['site_corp'];?> </div>
</body>
</html>
 
...В варианте от jo0o00nyy сразу видно, что выводится весь массив, а мне нужно выводить не весь массив, а из этого массива определенные параметры. ...

Дык :) убери "print_r($config);" и используй дальше "echo $config['site_title']; "
 
А какой вообще смысл хранить данные конфига в БД .:eek:
у тебя же есть уже готовый массив конфигурации..
зачем тебе расходовать время и трафик между sql сервером ,когда проще всё хранить в статикке на диске ...:nezn:
 
Хочу сделать систему администрирования всех конфигураций сайта из админпанели. Возможню этой системой будет пользоваться не разбирающийся в WEB пользователь и нужно сделаю все максимально понятно. Если кто-то знает как админить файл - буду признателен. Иначе работы с БД мне не избежать.
 
Нет смысла использовать под конфиг бд ,проще создать форму которую заполнит пользователь и она сформирует файл (массив ) конфигурационных данных
 
Как варант (именно как я бы сделал и не парился) создал бы все в полях:
Код:
site_title      site_url      site_charset
 Название       site.ru         utf-8
Ну а потом выборка и в массив...
PHP:
$query = mysql_query("SELECT * FROM `config`");
$config = mysql_fetch_assoc($query);
и тогда массив будет, таким как ты хочешь:
$config['site_title']
$config['site_url'] и т.д.
 
Нет смысла использовать под конфиг бд ,проще создать форму которую заполнит пользователь и она сформирует файл (массив ) конфигурационных данных
Создать файл с массивом это реально, но вот потом изменять в нем параметры - это другой вопрос. На DataLife Engine сделано так, как мне надо. Там сначала идет парсинг файла конфига, вытаскивание всей информации с него и обработка ее. Потом эта инфо загоняется в массив такой же как и в самом файле. Дальше идет изменение данных массива и он снова записывается в файл. Система немного наварочанная и написать такое-же под себя я сам не смогу. Может у кого-то есть готовое решение?

Добавлено через 2 минуты
Как варант (именно как я бы сделал и не парился) создал бы все в полях:
Код:
site_title      site_url      site_charset
 Название       site.ru         utf-8
Ну а потом выборка и в массив...
PHP:
$query = mysql_query("SELECT * FROM `config`");
$config = mysql_fetch_assoc($query);
и тогда массив будет, таким как ты хочешь:
$config['site_title']
$config['site_url'] и т.д.
Мне не нужен ассоциативный массив с параметром. Так мне каждый раз надо будет задавать ему какое поле мне вывести, а мне нужен один глобальный массив в котором будут все настройки сразу и обращение к БД будет длеатся один раз, а дальше я беру из массива.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху