хотелось бы хранить переменные в БД и выводить их в файле config.php или в другом нужном месте БД: Код (Text): CREATE TABLE `config` ( `id` int(11) NOT NULL auto_increment, `mod` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `value` varchar(255) NOT NULL, `desc` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ; mod - модуль, в котором используется type - что в ней хранится(ссылка, текст, число) decs - описание (сделал их для удобства и формирования запросов по месту требования в коде.) собственно нужно вывести $name="value"; для всех записей. пробовал выводить их через mysql_fetch_row , но максимум, чего я добился это их вывод в виде текста на странице, а мне нужно php кодом. знаки <? ?> я ставил через echo... и ноль эффекта... что посоветуете?
Не помню точно как это называлось... Но вот пример : PHP: <?php $array = array( 'hehe' => 'val', 'hehe2' => 'val2' ); foreach ( $array as $sname => $sval ) $$sname = $sval; echo $hehe; ?> Вообще это считается дурным тоном, потому что PHP от таких переменных немного дуреет... Да и код на читабельность во много раз ухудшается...
занести все в массив и потом брать этот массив и делать ему "экстракт". Что-то типа следующего (за работоспособность не ручаюсь, но суть понятна) PHP: <?php function getConfig () { static $values = null; if (is_null($values)) { $result = mysql_query('SELECT `name`, `value` FROM `config`'); $values = array(); while ($row = mysql_fetch_assoc($result)) { $values[$row['name']] = $row['value']; } } return $values; } function variant_1 () { extract(getConfig()); if ($SomeConfigName) { // Some code here } } function variant_2 () { $config = getConfig(); if ($config['SomeConfigName']) { // Some code here } } Более предпочтительный второй вариант. По следующим причинам: 1. Если ты пишешь if ($config['AvatarsEnabled']) - любой, кто читает твой код сразу понимает, что это из того конфига, который ты вызвал вначале функции 2. Не будет конфликта имен. Если вдруг ты добавишь конфиг в какую то из функций, а в ней уже есть переменная с таким именем, как переменная в конфиге 3. IDE не будут выдавать ошибку, И еще много чего.
благодарю за ответ Код (Text): function getConfig () { static $values = null; if (is_null($values)) { $result = mysql_query('SELECT `name`, `value` FROM `config`'); $values = array(); while ($row = mysql_fetch_assoc($result)) { $values[$row['name']] = $row['value']; } } return $values; } эта часть кода предельна понятна, но не мог бы ты пояснить на примере принцип работы первого и второго варианта?
ну суть одинакова. getConfig() возвращает приблизительно следующее: Код (Text): array ( 'SomeConfigName' => 'Vasya_Pupkin', 'PostsPerPage' => 25, 'AvatarsEnabled' => false ) а теперь нужно только знать, как работает ассоциативный массив и функция extract().