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

Тема в разделе "PHP", создана пользователем rafic, 15 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. rafic

    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      Перейти по ссылке
        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'];
    ?>
     
  2. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    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']; 
    ?>
     
  3. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Кажется это будет примерно так...
    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);
    ?>
     
  4. rafic

    rafic

    Регистр.:
    14 май 2008
    Сообщения:
    477
    Симпатии:
    24
    Не один из вышеприведенных вариантов не работает=(
    В варианте diavolic выдает ошибку
    В варианте от 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>
     
  5. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Дык :) убери "print_r($config);" и используй дальше "echo $config['site_title']; "
     
  6. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    А какой вообще смысл хранить данные конфига в БД .:eek:
    у тебя же есть уже готовый массив конфигурации..
    зачем тебе расходовать время и трафик между sql сервером ,когда проще всё хранить в статикке на диске ...:nezn:
     
  7. rafic

    rafic

    Регистр.:
    14 май 2008
    Сообщения:
    477
    Симпатии:
    24
    Хочу сделать систему администрирования всех конфигураций сайта из админпанели. Возможню этой системой будет пользоваться не разбирающийся в WEB пользователь и нужно сделаю все максимально понятно. Если кто-то знает как админить файл - буду признателен. Иначе работы с БД мне не избежать.
     
  8. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Нет смысла использовать под конфиг бд ,проще создать форму которую заполнит пользователь и она сформирует файл (массив ) конфигурационных данных
     
  9. Dj_StelS

    Dj_StelS

    Регистр.:
    9 янв 2009
    Сообщения:
    349
    Симпатии:
    79
    Как варант (именно как я бы сделал и не парился) создал бы все в полях:
    Код:
    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'] и т.д.
     
  10. rafic

    rafic

    Регистр.:
    14 май 2008
    Сообщения:
    477
    Симпатии:
    24
    Создать файл с массивом это реально, но вот потом изменять в нем параметры - это другой вопрос. На DataLife Engine сделано так, как мне надо. Там сначала идет парсинг файла конфига, вытаскивание всей информации с него и обработка ее. Потом эта инфо загоняется в массив такой же как и в самом файле. Дальше идет изменение данных массива и он снова записывается в файл. Система немного наварочанная и написать такое-же под себя я сам не смогу. Может у кого-то есть готовое решение?

    Добавлено через 2 минуты
    Мне не нужен ассоциативный массив с параметром. Так мне каждый раз надо будет задавать ему какое поле мне вывести, а мне нужен один глобальный массив в котором будут все настройки сразу и обращение к БД будет длеатся один раз, а дальше я беру из массива.
     
Статус темы:
Закрыта.