Смайлы и Mysql

890
.
Let Mortal Kombat begin
Хочу себе сделать смайлы одной категорией (из не много, порядка 100-200 шт.) без превязки к названию самого файла (файл 1.gif как : ) или как :-) например)
Та система что есть в двиге не годится, поэтому мною был перерыт интернет и найдена одна интересная функция, которую я модернизировал и представляю вашему вниманию:
.
Let Mortal Kombat begin
Запрос в базу:
CREATE TABLE IF NOT EXISTS `smiles` (
`id` int(5) NOT NULL,
`value` varchar(250) NOT NULL,
KEY `value` (`value`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

В любом месте до вывода смайлов делаем запрос: $smiles = mysql_query("SELECT * FROM `smiles` ;");
Функция:
static function smiles($str){
global $smiles, $rootpath;
while ($smiles_array = mysql_fetch_assoc($smiles)){
$arr_str = explode(",", $smiles_array['value']);
foreach($arr_str as $key => $value)
$str = str_replace($value, '<img src="'.$rootpath.'smiles/'.$smiles_array['id'].'.gif" alt="'.$value.'" />', $str);
}
return $str;
}
.
Let Mortal Kombat begin
СабЖ:
Какова нагрузка такой функции по сравнению с той, что сейчас используется в двиге.
Как правильно организовать ключи полей в таблице.
Может быть есть варианты лучше?
-----------
PS Просьба тему всякими высерами не засорять. Просьба отписываться по делу.
И спасибо заранее.
.
Кадило крутится, лавэха мутится
лучше не обходить результаты циклом каждый раз.
Как вариант хранить сразу значения и пути к смайлам и потом выбирать по значению путь к нужному смайлу. Но тогда проще хранить не в базе ибо лишние запросы к базе не нужны.
.
Уехал в Украину
Simba (20.06.2011/12:58)
лучше не обходить результаты циклом каждый раз.
Как вариант хранить сразу значения и пути к смайлам и потом выбирать по значению путь к нужному смайлу. Но тогда проще хранить не в базе ибо лишние зап
И те кешировать? так в старой функции тоже самое тока там 10 папок открывается, а тут запрос в базу
.
Кадило крутится, лавэха мутится
Dimario (20.06.2011/13:00)
И те кешировать? так в старой функции тоже самое тока там 10 папок открывается, а тут запрос в базу
Тоже самое, но имена смайлов выбираются не так. ))
.
Let Mortal Kombat begin
Simba (20.06.2011/12:58)
Как вариант хранить сразу значения и пути к смайлам
поподробнее
.
seg0ro
Let Mortal Kombat begin
и да, путь один. Одна общая папка для всех смайлов. Смайлы имеют вид
0.gif
1.gif
2.gif
для них значения
O:-),O=),*ANGEL*
: ), :-)
*WALL*,*стена*,: стена:
.
Кадило крутится, лавэха мутится
Эмс. Чёт я тупанул немного. )) не так подумал. Ыы.
Но в принципе от цикла в цикле можно избавиться и от лишнего разбора массива.
$arr_str = explode(",", $smiles_array['value']);
foreach($arr_str as $key => $value)
.
seg0ro (20.06.2011/13:09)
и да, путь один. Одна общая папка для всех смайлов. Смайлы имеют вид
0.gif
1.gif
2.gif
для них значения
O:-),O=),*ANGEL*
: ), :-)
*WALL*,*стена*,: стена:
да все равно это можно все закешировать
цикл постоянно гонять эт тоже не вариант
Всего: 52