Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > основные настройки из одной таблицы


Автор: nezabor 11.7.2009, 20:31
Задача в общем-то самая наверно простая
хочу сделать так:

есть таблица setting основных настроек с полями id, set, rezal
id - соответственно id
set - название настройки (например set1, set2 ...)
rezal - значение настройки

эта таблица по задумке будет содержать основные настройки например e-mail, title и тд и тп
конект с базой проходит а что дальше делать я не знаю, знакомый пыхер сказал использовать foreach но как не объяснил остановился собственно так

Код

//подтягиваем базу данных
require ("$_SERVER[DOCUMENT_ROOT]/lib/conn.php");
//основные значения
$s = "SELECT * FROM setting";


:( хелп пиплы, нгде не нашёл связку foreach и MySQL
---------------------------------
и пожалуста не отписывайтесь как в бородатом анедоте )

Автор: Ипатьев 11.7.2009, 21:00
твой пыхер ошибся.
он хотел сказать, что данные из базы достаются как обычно.

Автор: nezabor 11.7.2009, 21:03
да нет я тут еще не полностью написал WHERE мне не походит потому, что не хочется писать полный запрос в каждом случае хотя выводиться будет одно слово

Автор: Ипатьев 11.7.2009, 21:09
при чем здесь where?
не хочешь - не пиши. 

странно. у тебя есть файл сonn.php
из этого я делаю вывод, что с базой ты уже работал раньше. почему нельзя получить настройки так же, как обычно?
у тебя есть код, который получает строки, которые вернул запрос?

Автор: nezabor 11.7.2009, 21:51
мммм не пойму к чему вы это ведёте

Автор: Ипатьев 11.7.2009, 22:01
я клоню к тому, что надо просто взять свой же код по работе с базой данных.
но если ты никогда с mysql не работал, то вот тебе первые две ссылки
http://ru2.php.net/manual/ru/function.mysql-query.php
http://ru2.php.net/manual/ru/function.mysql-fetch-array.php

Автор: nezabor 11.7.2009, 22:22
млин если ты так хочешь
Код

<?
//подтягиваем базу данных
require ("$_SERVER[DOCUMENT_ROOT]/lib/conn.php");
//основные значения
$s = mysql_query ("SELECT * FROM setting");
for ($c=0; $c<mysql_num_rows($s); $c++)
        {
            $se = mysql_fetch_array($s);
//построчный вывод данных
echo "$se[rezal] <br>";
        }
//подключение шаблонов
    include 'smarty/Smarty.class.php';
    
    $smarty = new Smarty;
    $smarty->compile_dir  = 'smarty/templates_c';
    $smarty->template_dir = 'templates';
    
    $smarty->display('main.tpl');
// as $value
// $value
?>


 то это не то что мне надо
мне надо выбрать все значения этой таблицы
и потом раскидать их по сайту, но ИМХО если для вывода мыла нужно писать целый мускуль запрос, то это как-то не кошерно

Автор: Ипатьев 11.7.2009, 22:30
Цитата(nezabor @  11.7.2009,  22:22 Найти цитируемый пост)
это не то что мне надо

что-то ты сильно за... эээ... заблуждаешься.
Цитата(nezabor @  11.7.2009,  22:22 Найти цитируемый пост)
мне надо выбрать все значения этой таблицы

этот код делает именно это: выбирает все знчения из таблицы. Чем он тебя не устроил - для меня загадка. 

Что значит "потом раскидать их по сайту"? 

Автор: nezabor 11.7.2009, 22:35
ну например титл будет сверху
мыло вообще везде + хотелось бы редактировать его из админки можно конечно сделать тупо файл настройки, но тогда я не знаю как редактировать его не открывая в блокноте, а реализуя это через пых

Автор: Ипатьев 11.7.2009, 22:39
подожди про редактирование. ты с выводом сначала разберись. 

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

Автор: nezabor 11.7.2009, 22:52
да нет если написать 

index.php
Код

<?php
require ("$_SERVER[DOCUMENT_ROOT]/lib/set.php");
echo "бла бла бла";
echo "$mail";
?>


set.php
Код

<?php
 $mail = "mail@mail.ru";
?>


то получиться вывести, а как редактировать set.php

Автор: Ипатьев 11.7.2009, 23:09
все, идею с базой данных заборосили, уже хотим в файле хранить?

в любом случае, тебе нужен массив. ты знаком с таким типом данных?

Автор: nezabor 11.7.2009, 23:43
неееее млин мне база в идеале нужна

напиши пример может мене легче будет

Автор: Ипатьев 12.7.2009, 07:59
возвращаемся к базе.
значит, получить ты свои настройки можешь. но не знаешь, как их записать в переменные, которые потом будешь использовать на странице? так что ли? 

Автор: nezabor 12.7.2009, 11:18
да именно так!!!
писать запрос для каждой переменной я могу , но не хочу

Автор: Ипатьев 12.7.2009, 13:50
тебе нужен массив. ты знаком с таким типом данных? 

Автор: bars80080 13.7.2009, 13:37
по сути дела конечно вопрос без состава вопроса

есть некие данные в таблице, нам нужно их использовать.
к примеру, в некой строчке таблицы храниться значение титула и цвета фона:
Код

id | set | rezal
4  | title  | Центральный вселенский портал
7  | bground | #000066

нам надо запихнуть вывести их на страницу:

Код

...
<title><?php echo $title; ?></title>
</head>
<body bgcolor="<?php echo $bgcolor; ?>">
...

соответственно нам надо до вывода страницы делать выборки по переменным, обработать их и подставить. но мы программисты, поэтому постараемся сделать максимально эффективно.

тут начинаем думать, и понимаем, что работать нам тогда надо не с отдельными данными, а с целым набором сразу, т.е. с массивом данных. тут надо прочувствовать это слово: массив. это не какое-то абстрактное понятие, оно означает то что есть. это целый набор данных и мы будем работать сразу со всем им.

дальше начинаем преобразовывать вывод под массив:
Код

...
<title><?php echo $arr['title']; ?></title>
</head>
<body bgcolor="<?php echo $arr['bgcolor']; ?>">
...

сделаем массив заготовку, на тот случай, если каких-то значений не существует:
Код

$arr = array('title' => '', 'bgcolor' => '', 'width_page' => ''); // и т.д.

теперь нам надо получить данные:
Код

$sql = 'SELECT * FROM `settings`';
$q = mysql_query($sql);
дальше из полученного ресурса надо получить данные и желательно в виде массива.
совместим эти действия:
Код

$n = mysql_num_rows($q);
for($i = 0; $i < $n; $i++) {
    $f = mysql_fetch_row($q);
    $arr[$f['set']] = $f['rezal'];
}

собсна всё. в $arr готовые настройки, после этого выводим страницу и все переменные встают на места

Код

<?php
$arr = array('title' => '', 'bgcolor' => '', 'width_page' => '');
$sql = 'SELECT * FROM `settings`';
$q = mysql_query($sql);
$n = mysql_num_rows($q);
for($i = 0; $i < $n; $i++) {
    $f = mysql_fetch_row($q);
    $arr[$f['set']] = $f['rezal'];
}
?>
<html><head>
<title><?php echo $arr['title']; ?></title>
</head>
<body bgcolor="<?php echo $arr['bgcolor']; ?>">
...

Автор: nezabor 13.7.2009, 13:43
ОГРОМНОЕ ТЕБЕ СПАСИБО ИМЕННО ТАК Я И ХОТЕЛ smile  smile 
 smile  smile  smile 
РЕСПЕКТ ТЕБЕ

Автор: nezabor 13.7.2009, 21:14
спасибо ещё раз, 
Код

//только  
$f = mysql_fetch_row($q);
// надо заменить на 
$f = mysql_fetch_assoc($q);


иначе у меня не работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)