Скрипты на SQLite
1.
Саня (22.10.2009 / 19:15)
Прив всем ) Поделитесь пожалуйста скриптами на SQLite (пока нашел тока гостю Вантуза - спс ему за нее). Пытаюсь изучать данную вещь (ссылки на документацию тож приветствуются). За +
2.
Саня (22.10.2009 / 21:41)
Шота пендосский сайт мне не нравится , но всеравно спасибо )
3.
Lugaro (22.10.2009 / 22:20)
http://www.php.su/functions/?cat=sqlite
4.
Виталий (22.10.2009 / 22:27)
1.прочти вот
http://www.phpworld.ru/sqlite/
5.
Саня (22.10.2009 / 22:40)
Пасибо + всем
Особенно радует это:
Возможность хранить данные в базе объемом до 2 терабайт.
6.
Виталий (22.10.2009 / 23:12)
вот ещё с примерами
http://www.softtime.ru/info/articlephp.php?id_article=70
7.
Саня (22.10.2009 / 23:38)
7, Спасибо, вопщем кидайте в тему все интересное и полезное по SQLite буду разбиратся
8.
Вантуз-мен (23.10.2009 / 04:37)
если че не понятно спрашивай, так как на sqlite много ограничений
9.
Саня (23.10.2009 / 10:18)
A чем базу sqlite на компе редактировать?для мускула phpmyadmin. А эту как? С блокнота каракули ))
10.
Игорь (23.10.2009 / 13:40)
10. Мне Тоже интересно...
11.
Lugaro (23.10.2009 / 14:25)
SQLiteadmin
12.
Вантуз-мен (23.10.2009 / 15:00)
http://www.sqliteexpert.com/download.html там есть бесплатная версия она правда урезанная немного, но так по-моему лучшая программа, только там английский язык только. Общался с автором тот сказал что в будущем сделает лэнгпак, обновляется очень часто
13.
Вантуз-мен (23.10.2009 / 15:02)
http://sqliteadmin.orbmu2k.de тоже хорошая программа есть русский язык, не обновляется уже давно
14.
Саня (23.10.2009 / 15:20)
14, спасибо англицкий не проблема.
Вот попробовал пересадить гостю мотора на SQLite . Вроде норм получилось. Пример
http://reall.net.ru/book/?
15.
Вантуз-мен (23.10.2009 / 15:50)
ага нормально
16.
Валерий (23.10.2009 / 16:56)
Вот писал маленький скрипт.. чисто для себя.. ничего особенного
http://sleza-mobile.ru/sqlite_editor.zip
17.
Саня (23.10.2009 / 20:41)
17, на данном этапе собираю все что полезно ) Так что за скрипт пасибо и +
18.
Дмитрий (24.10.2009 / 17:11)
Как я поняла все данные храняться в файлах? А преимущество перед мускулом в быстроте? Обьясните пожалуста.
19.
Саня (24.10.2009 / 17:37)
19,http://www.php.su/articles/?cat=phpdb&page=038
Можт администрация закрепит темку или в раздел другой перенесет? Все-таки SQlite перспективная вещь да и народ интересуется )
20.
ramzes (24.10.2009 / 17:40)
Да, файл бд лежит на хосте.
Обычное чтение немого быстее чем мускул (чем больше бд тем медленнее читает), запись медленнее ощутимо.
Хотя в общем практически равноценны мускул и сколайт по моему.
21.
Саня (25.10.2009 / 14:24)
ну как на меня то SQlite - что-то вроде золотой середины между файлами и MySQL.
22.
ramzes (25.10.2009 / 14:55)
Ни чего общего с файлами сколайт не имеет.
Не хорошая привычка сравнивать субд и файлы. Это разные вещи.
Одно - чистая работа с файлом, второе - работа с файлом с помощью спец интерфейса С# который за тебя делает половину работы и делает ее быстее чем средствами пхп.
У меня двиг на сколайт был)) пока на сервере не отключили эту субд
23.
ramzes (25.10.2009 / 15:32)
Ну там же вроде на С++ написан сервер (библиотека сколайт) если я еще склерозом не страдаю
24.
Саня (25.10.2009 / 16:12)
Ну вот я сейчас свои блоги переписываю под SQlite, то решил не полностью пересаживать на базу, но использовать и файлы немного. Ведь задача не тупо все переделать под базу потому что кто-то сказал что файлы кака, а добиться максимальной производительности любыми средствами.
Ну конечно в некоторых случаях скулайт уступает mysql , но в качестве замены обычным файлам пойдет только так
25.
ramzes (25.10.2009 / 17:09)
Удобнее чем файлы это однозначно, как и любая субд
полностью согласен, иногда файлы более адекватная реализация чем любая бд, для быстрых простых записей не требующих потом каких либо сложных сортировок и выборок.
26.
Виталий (25.10.2009 / 19:56)
×хм..прочитал немного тему..заинтересовал меня SQLite×
27.
Саня (25.10.2009 / 20:34)
Предлагаю переименовать раздел PHP & MySQL в PHP/MySQL/SQLite
28.
ramzes (26.10.2009 / 00:17)
Зачем? PHP & SQL.
Может кому интересно будет,
бд: 1500 записей
на странице 10 запросов вида
LIKE $var%
Генерация страницы:
SQLite: 0.03 - 0.05 сек
MySQL: 0.18 - 0.22 сек
аж глаза на лоб полезли.
29.
Михаил (26.10.2009 / 01:02)
#30, проверь скорость записи. Глаза обратно полезут
30.
ramzes (26.10.2009 / 01:05)
Это я в курсе
разница не на столько большая если правильно писать, одной итерацией
31.
Саня (26.10.2009 / 15:52)
Нормально.
32.
Вантуз-мен (26.10.2009 / 17:57)
Flyd при записи или обновлении если их немного ты не увидишь разницы в скорости, а при больших обновлениях или добавлениях существует begin transaction->commit который при записях не закрывает и фиксирует данные каждый раз, а делает это в один присест и потом удаляет файл журнала
Разница лишь в том, что при любой записи файл блокируется для других процессов записей или обновлений, на sqlite2 блокируется и для чтения
на sqlite3 только при записи, но просиходит это очень быстро, тысячные доли секунды, а в мускуле может писать сразу в несколько потоков
33.
Михаил (26.10.2009 / 23:00)
Vantuz, за один присест добавлять данные можно, если это делает в данный момент только 1 человек.А если 2 юзера одновременно зайдут, то объединить записи не получится. Поэтому для всяких счетчиков использовать нежелательно. Для проектов, типа рейтингов использование противопоказано, побочные эффекты могут быть ввиде убийства сервера.
А если запись нечастая, то отличная вещь.
34.
Вантуз-мен (26.10.2009 / 23:21)
тут на висави процентов 50 написано на sqlite, все отлично работает, причем запись и обновления довольно частые
35.
Саня (26.10.2009 / 23:33)
Ну если большой портал то SQLite лучше не использовать, а на мелкие и средние проекты в самый раз - новости,блоги, гостевая,библа будет норм
36.
ramzes (27.10.2009 / 02:04)
Ну для счетчиков и не используют сколайт)) для этого мускул есть, а для форума, гостевой, каких ни будь блогов, новостей, и даже двига типа мотора на среднем сайте, вполне.
Во многих веб движках можно переключить бд с мускул на сколайт, не дураки ведь пишут
хотя разовая запись конечно очень медленная во второй версии..
37.
DIGIT500 (28.10.2009 / 23:25)
Вот не очень сложный движок на SQLite -
http://phpsqlitecms.net/
Можно код посмотреть и поковырять для изучения SQLite ...
38.
ramzes (28.10.2009 / 23:58)
http://phpsqlitecms.net/forum/index.php?mode=user&show_user=27
гг знакомые все лица
39.
Саня (29.10.2009 / 00:31)
блин и себе что ли двиг начать писать на SQlite? Не дразните меня
40.
ramzes (29.10.2009 / 01:44)
cms.smartoff.net
онлайнер на мускуле остальное все на сколайт))
41.
ramzes (29.10.2009 / 01:45)
Убил дубль
42.
Саня (29.10.2009 / 14:49)
42, Отлично! Только бы тему ему поприкольней нарисовать - в ярких цветах, а то уныло как-то...
43.
Саня (04.11.2009 / 01:35)
Что-то темка совсем увяла
Кстати вот сделал админ-блоги под мотор на SQLite
Примерчег
http://reall.net.ru/blogs/? (не реклама)
Все-таки удобней чем файлы намного.
44.
ramzes (04.11.2009 / 02:05)
Че то они мне сильно напоминают..))
http://cms.smartoff.net/blogs/
45.
Саня (04.11.2009 / 02:27)
46,хм, не видел.) Идея одинаковая, реализация другая.
46.
ramzes (04.11.2009 / 04:22)
Да ладно я не в притензии) щас точно такие же на мускуле напишу буду сравнивать где лучше работает
47.
Саня (04.11.2009 / 13:55)
Я сейчас тож простенький двиг на скулайт начал писать,пока время есть,регу уже сделал,но работы еще дофига
48.
Мага (04.11.2009 / 15:46)
Парни, напишите пример кода, создающего таблицу и записывающего в него данные Имя|Отчество|Фамилия из переменных $name, $father и $surname. И потом выведите данные из таблицы в переменные, кому не сложно.
49.
Саня (04.11.2009 / 17:12)
50, Вот гостя Вантуза на SQLite
http://visavi.net/load/down.php?act=view&id=437&
Открываешь, смотришь, учишся
Что непонятно сюда
http://www.php.su/functions/?cat=sqlite
50.
Мага (04.11.2009 / 17:44)
51, спасибо *ушел учить*
51.
Саня (04.11.2009 / 18:02)
Кто бы помог разработать структуру отправки и приема приватных мессаг
неохота джон колупать
52.
Studentsov (04.11.2009 / 18:40)
#53 А ты дцмс поколупай
53.
ramzes (04.11.2009 / 18:41)
$db->query("INSERT INTO privat SET autor = '".$autor."', user = '".$user."', time = '".time()."';");
Чего там ковырять то? Добавил в таблицу и все.
54.
Саня (04.11.2009 / 18:59)
54, ога сибе дороже
55,ну хз,чота не то я так понял должно быть так:
id user(кому) text(текст) time(время) author(кто отправил) type(тип - вх или исх) chit(прочтено или не прочтено)
55.
ramzes (04.11.2009 / 19:29)
Тип это лишнее.
$db->query("INSERT INTO privat SET autor = '".$login."', id_uses = '".$user['id']."', time = '".time()."', chit = '1';");
Различий с MySQL не так уж много.
56.
Саня (04.11.2009 / 21:25)
А куда текст самой мессаги писать?
57.
ramzes (05.11.2009 / 00:08)
Ну ты таблицу создал? Поле под сам текст там есть? Вот в него и пиши, message = '".$message."'
58.
Саня (05.11.2009 / 00:09)
ладно спс. разберусь
59.
Lugaro (05.11.2009 / 05:31)
Как вывести случайную запись? не работает как в мускуле RAND().
60.
Саня (05.11.2009 / 14:16)
61. А если генерить например от 0 до количества всех записей, а потом выбирать этот случайный ID
ну типа $sl=mt_rand(0,100);
а потом
$blabla = sqlite_query($db, "SELECT * FROM table WHERE znach=".$sl.";");
61.
ramzes (05.11.2009 / 15:10)
function sqlite_rand_row($t){
global $db;
$arr = $db->query("SELECT * FROM '".$t."';");
$all = array();
while( $row = $arr->fetch()){
$all[]=$row['id']; }
$arr2 = $db->query("SELECT * FROM '".$t."' WHERE id = '".array_rand($all)."';");
return $arr2->current();
}
как то вот так можно если нет готовой функции..
http://smartoff.net/php_function/index.php?cat=sqlite&
62.
ramzes (05.11.2009 / 15:12)
Вообще лучше свой класс написать, удобнее будет, функции свои и главное при переходе на новую версию лишь класс изменить придется а не весь код скрипта.
63.
Lugaro (05.11.2009 / 16:19)
62 я так и делаю, просто хотел узнать вдруг есть какой то вариант по проще и по ближе к аналогу в мускуле, спасибо всем за внимание
64.
ramzes (05.11.2009 / 16:27)
#62 фиговый вариант. Совершенно не верный. А если например строка с выбранным ид удалена?
Надо создавать массив с существующими строками и из них выбирать уже. А так это на уровне детского сада 'авось попаду'.
65.
Lugaro (05.11.2009 / 16:38)
$q = sqlite_fetch_all (sqlite_query($db, "SELECT * FROM file"));
$row = $q[mt_rand(0, count($q))];
так я вывожу..
66.
Саня (05.11.2009 / 16:46)
66, Я тока учусь )) Не пинайте сильно
67.
ramzes (05.11.2009 / 16:50)
Я не пинаю
я просто обратил внимание что код не очень рабочий и стоит другой подобрать
я тоже только учусь
68.
Саня (06.11.2009 / 21:33)
Э.. Столкнулся с проблемой подключения базы
Вопщем в файле conf/cors.php у меня настройки подключения к базе вида
$db = sqlite_open('base/database.db') or die('Ошибка! Невозможно подключения к базе данных!');
когда подключаю в файл index.php - все без проблем, а когда например хочу подключить так (require_once ("../conf/cors.php");) в файл papka/file.php
Вылазит ошибка подключения. Как разрешить эту проблему? с меня +
/////
P.S. Выход нашел , но корявый. Может кто посоветует как с этим справится, а то подключать в каждом файле заново базу не оч хороший вариант
69.
ramzes (06.11.2009 / 22:02)
Посмотри как в моторе реализована константа BASEDIR
// делать не чего пишу класс для Sqlite, как допишу выложу если кому нужен будет
если придумаю конечно полезных методов для него
70.
Саня (06.11.2009 / 22:20)
71, оу. оригинальное решение,но действенное
Помогло пасибо
+ через 3 часа ))
71.
Вантуз-мен (06.11.2009 / 22:43)
привет всем, 67 твой способ очень плох, так как требует извлечь все данные в память, а если база очень большая
лучше на мой взгляд сделать так
SELECT string FROM table
WHERE string_id >= (abs(random()) % (SELECT max(string_id) FROM table))
LIMIT 1;
тут нет никаких извлечений, все в одном запросе, abs и random такие функции есть в sqlite
знак забыл
72.
Lugaro (06.11.2009 / 23:07)
73 спасибо
73.
ramzes (07.11.2009 / 02:11)
Гм.. Пошел искать мануалы
понял что знаю меньше чем думал...
74.
ramzes (07.11.2009 / 02:48)
Есть класс (кусок):
class ResultSQLite{
public $array;
function __construct($array){
$this->array;
return $this->array;
}
function numRows(){
return sqlite_num_rows($this->arr);
}
}
//два запроса
$q1 = $sqlite->query("SELECT * FROM table1;"); // первый
$q2 = $sqlite->query("SELECT * FROM table2;"); // второй
//массивы обрабатываем в обратной очереди
$res2 = $q2->current(); //сначала второй
$res1 = $q1->numRows(); // потом первый
проблема:
после второго запроса в классе не остается данных от первого. Соответственно не возможно поменять местами вывод полученных массивов.
Catchable Fatal error Oject of class ResultSQLite: could not be converted to string
Подскажите как решить. Я даже что то ни чего придумать не могу..
75.
ramzes (07.11.2009 / 18:03)
Вобщем тут когда то Вантуз давал ссылку на класс который может ALTER TABLE выполнять, взял его и дописал до вида класса SqliteDatabase.
Может кому пригодиться, необходимые функции можно дописать по аналогии
function NameMethod(){
return sqlite_function($this->result);
}
вобщем кому интересно вот содержимое
http://smartoff.net/lib/index.php?count=63&
(библиотека на этом классе и работает)
76.
Саня (07.11.2009 / 18:16)
77, спс пригодится )
77.
ramzes (08.11.2009 / 02:00)
function as_array(&$a,$result){
$a[$result] = $result;
}
function as_rand(&$a){
return array_rand($a);
}
$sqlite->createAggregate('rand','as_array','as_rand');
echo $sqlite->singleQuery("SELECT rand(login) FROM user;");
вот еще вариант, выводит случайную ячейку из сказанного столбца. Проверил работает.
78.
Артур (08.11.2009 / 10:17)
Да ну этот SQLite. Я буду дальше на MySQLi сидеть :-P
79.
Саня (08.11.2009 / 22:26)
80, ну никто ж насильно не заставляет переходить. Я вот прям с файлов перешел на SQLite, думаю с мускулом не труднее
80.
Studentsov (08.11.2009 / 22:42)
#80 Мужик!
81.
ramzes (09.11.2009 / 12:04)
Может кто с тригеррами помочь? Хочу сделать что бы например при удаление записи из таблицы1 (cat) удалялись все записи из таблицы2 у которых ключ (cat_id) совпадает с ид удаленной записи?
Самого принципа работы не знаю:-[
82.
Вантуз-мен (11.11.2009 / 02:43)
CREATE TRIGGER tab1_delete DELETE ON tab1
BEGIN
DELETE FROM tab2 WHERE tab1.id=tab2.cat_id;
END;
вот примерно вот так
83.
Вантуз-мен (11.11.2009 / 02:45)
а вообще в 3.6.19 появилась поддержка внешних ключей, по идее если sqlite свежая лучше это делать с FOREIGN KEY
84.
ramzes (11.11.2009 / 05:25)
Не, третьей версии у меня на хосте нет. Спасибо, буду пробывать.
85.
Саня (07.12.2009 / 00:06)
Попрошу администрацию перенести эту темку в раздел баз данных. Жалко ведь если потеряется, много полезной инфы
86.
Lugaro (07.12.2009 / 00:10)
Перенес
87.
Санёк (15.12.2009 / 17:17)
Хм...Очень интересная тема
Есть вопрос: на днях перевел все смайлы в чате на мускул,теперь админы без проблем могут загружать смайлы прямо из чата...Так вот,думаю,а не перенести ли смайлы на sqlite?Ведь записывают в базу не так часто,а выводят как раз очень много раз.Таким образом по идее на sqlite смайлы будут просто летать...Как считаете?
88.
Саня (15.12.2009 / 17:57)
Попробуй и заодно, если не тяжело, скинь код который ты используешь для ф-ции смайлов
89.
ramzes (15.12.2009 / 18:22)
На файлах быстрее. Точнее на файле.
Не сходите с ума, зачем делать смайлы с использованием баз данных?
Файл всегда читается быстее
и ни каких сложных выборок смайлы не требуют.
90.
Саня (15.12.2009 / 18:30)
91, а как быть с смайликами по категориям ? Конечно можно вручную написать, но куда проще выбирать этих засранцев с базы так как угодно
91.
Санёк (15.12.2009 / 18:37)
90, что именно нужно?Вывод?
91, Слушай,если бы они остались на файлах,то функции,которые я для них сделал,заморочили бы мне всю голову нахрен,да и на скорости это тоже отобразилось бы это.Давай,попробуй сделай смайлы на файлах,чтобы смайлы можно легко загружать через загрузчик(за один раз можно загрузить 3 смайла) и дать им сразу имена,при просмотре смайлов можно было создавать/удалять/изменять/перемещать/опускать/поднимать разделы,подразделы и непосредственно смайлы,для разных разделов можно установить разные типы доступа к смайлам,находящимися в этих разделах.И всё это делается непосредственно в чате!Всё словно в файловом менеджере.Я посмотрю как это шикарно будет смотрется на файлах.БД рулит!
92.
Саня (15.12.2009 / 18:57)
93, лан не надо. буду сам думать как реализовать. в принципе нет ничего сложного, тольк подумать надо
93.
Вантуз-мен (15.12.2009 / 19:08)
я сейчас переписал смайлы на базу, вот такая структура
Database::$stat->exec("
CREATE TABLE IF NOT EXISTS smiles (
smiles_id INTEGER NOT NULL PRIMARY KEY,
smiles_cats INTEGER UNSIGNED NOT NULL,
smiles_name varchar(20) NOT NULL,
smiles_code varchar(20) NOT NULL);
CREATE INDEX IF NOT EXISTS index_smiles_cats ON smiles (smiles_cats);
CREATE INDEX IF NOT EXISTS index_smiles_code ON smiles (smiles_code);
");
94.
Вантуз-мен (15.12.2009 / 19:09)
function smiles($str){
global $config;
$querysmiles = Database::$stat->query("SELECT smiles_name, smiles_code FROM smiles WHERE smiles_cats=? ORDER BY LENGTH(smiles_code) DESC;", array(1));
$arrsmiles = $querysmiles->fetchAll();
$count = 0;
foreach($arrsmiles as $val){
$str = preg_replace('|'.preg_quote($val['smiles_code']).'|', '<img src="'.BASEDIR.'images/smiles/'.$val['smiles_name'].'" alt="smile" /> ', $str, $config['resmiles'] - $count, $cnt);
$count += $cnt;
if($count >= $config['resmiles']){break;}
}
if (is_admin(array(101,102,103,105))){
$querysmiles = Database::$stat->query("SELECT smiles_name, smiles_code FROM smiles WHERE smiles_cats=? ORDER BY LENGTH(smiles_code) DESC;", array(2));
$arrsmiles = $querysmiles->fetchAll();
foreach($arrsmiles as $val){
$str = str_replace($val['smiles_code'], '<img src="'.BASEDIR.'images/smiles2/'.$val['smiles_name'].'" alt="smile" /> ', $str);
}}
return $str;
}
95.
ramzes (15.12.2009 / 19:12)
#93 одним файлом и одной функциией это делаю. Только категории не использую не вижу смысла. Ни чего сложного один цикл и пара массивов если по категориям.
Еще небось на каждый пост отдельно запрос в бд делаешь?
96.
Санёк (15.12.2009 / 19:36)
97, ну так скорость на БД всё-равно выше будет
Я лично вобще потенциальный нелюбитель хранить данные в файлах.Нет,ну какие-нибудь мелкие настройки еще можно,а всё остальное - БД.Ладно,на вкус и цвет как говорится...Так ответьте на мой вопрос,может лучше sqlite использовать?
97.
ramzes (15.12.2009 / 19:58)
Ну вобщем то да, чтение у сколайт быстее чем у мускула, правда разница минимальная.
98.
Саня (15.12.2009 / 20:06)
96, пасибо
Так как у меня админских смайликов не будет, то первая половина как раз то что надо
99.
Саня (15.12.2009 / 20:08)
98, впринципе если у тебя чат на мускуле, то зачем разрываться еще и на скулайт?
Разница в быстродействии реально не столь велика
Тем более для несчасных 50 смайликов( ну максимум 100 )
100.
Санёк (15.12.2009 / 20:11)
101, ну вобще то их около 600 Гг И будет ещё больше.Мои пользователи помешаны на них,вот поэтому и сделал админам функцию добавления смайлов прямо из чата
101.
ramzes (15.12.2009 / 20:25)
#96 ты на каждый пост собрался 2 запроса в базу делать?
Не лучше ли заранее сделать эти два запроса получить массивы и в функции уже эти массивы использовать. Разница: 10 постов * 2 запроса = 20 запросов.
Или всего 2 запроса перед выводом постов.
102.
Вантуз-мен (15.12.2009 / 20:55)
103.
ramzes, у нас обработка идет перед записью в базу, а выводится уже обработанным
103.
Саня (15.12.2009 / 21:00)
104, в смысле при записи поста, он уже обрабатывается ф-цией смайликов, а не при его выводе?
104.
Вантуз-мен (15.12.2009 / 21:10)
105.
sanzstez, да все правильно, я считаю что лучше обработать 1 раз, и выводить все в конечном виде, чем каждый раз при выводе обрабатывать какая бы легкая функция там не была
105.
Саня (15.12.2009 / 21:46)
Надо над этими смайликами на досуге еще подумать. и базу лишний раз напрягать неохота и в виде <img src="../images/img/sqlite.gif" alt="sqlite" > держать запись тоже.
106.
ramzes (15.12.2009 / 21:47)
#104 а, ну тогда конечно
а при редактировании и цитировании обратную обработку делаешь что ли?
107.
Саня (15.12.2009 / 21:59)
108.
ramzes, скорее всего там что-то типа этого при обратной замене
$str = preg_replace('|<img src="\.\./images/smiles/(.*?)\.gif" alt="">|',':$1', $str);
108.
Саня (17.12.2009 / 02:25)
Вот насчет смайлов посетила идея
можно их хранить в базе,но не юзать базу постоянно. Создаем базу с смайлами а потом кешируем их в обычный файл. И по категориям разбить можно и базу постоянно не мучать.
109.
ramzes (17.12.2009 / 04:05)
Зачем че то в файл писать? Запроси их один раз из базы перед выводом постов, сохрани данные в массиве и его используй для обработки постов.
Сам подумай простейшая функция у тебя будет работать через бд и файлы)) Жесть же.
$sm = smiles(); //массив смайлов
while(%php%){
echo smile_replace($post,$sm); // обрабатываем посты смайлами
;
}
вот в таком вот духе.
110.
Саня (17.12.2009 / 19:08)
Щит. Гори они в аду жти смайлы . у меня на сайте их будет пока 2
и
111.
Санёк (17.12.2009 / 20:40)
110,велосипед начинаешь изобретать
Решение Вантуза самое логичное
112.
Саня (17.12.2009 / 21:02)
113.
Katorzhnik, Решение логическое, но самому думать тоже иногда не помешает - пускай это будет хоть и самая бредовая идея
113.
Валерий (17.12.2009 / 22:01)
У меня своё решение для смайлов.. Кому интересно зацените
http://sleza-mobile.ru/data/test_smilov.rar
114.
Вантуз-мен (18.12.2009 / 05:54)
115.
phpcoder, у тебя для вывода смайлов используется 3 функции в каждом как минимум идет 1 цикл, и еще какие-то ява скрипты
если вы хотите обрабатывать их при чтении, то делайте как в 111 посте, лучшего варианта я не вижу
115.
Валерий (18.12.2009 / 11:47)
Дак примерно так и делаю.
1 функция - типа бонус.. для вывода всех смайлов
2 функция - получение массива смайлов
3 функция - замена текста на смайлы
А яваскрипт это тоже бонус. Чтоб при нажатии на смайл, его код вставлялся в текстовое поле.
Редактирование, добавление новых смайлов делается через редактирование файла smiles.txt
На каждый смайл можно прописать любое колличество разных кодов.
Например можно на один смайл, повесить все эти коды одновременно :-), )),
, :smile:
116.
ramzes (18.12.2009 / 14:26)
Я на выводе обрабатываю, вместо функции класс в нем и смайлы и бб коды и антимат. Удобно и ресурсы экономит. Данные один раз читает, а дальше все в переменных класса хранится.
Один раз в шапке передал классу нужные данные от юзера (группа, авторитет и т.д) и можно распределять кому и что доступно.
А главное глобально изменить можно всего парой движений.
Извиняйте что готовый код не даю нет возможности с этого кирпича такое писать за раз, и копировать ни как..
117.
Саня (18.12.2009 / 22:32)
118.
ramzes, жалко конечно. Интересно было бы код глянуть. Без компа действительно тяжело
118.
ramzes (19.12.2009 / 05:11)
class PostReplace{
private $smiles;
private $mat;
pubilc $user;
function _construct($user){
$this->user = $user;
}
function init(){
$sf = file('***/smiles.txt');
foreach($sf as $sdata){
$data = explode('||',$sdata);
if($this->user['level']<=$data[3]){
$this->smiles[]=$sdata;
}}
$mf = file('***/mat.txt');
$this->mat = explode('||',$mf);
}
}
ну вот где то примерно вот так, это кусочек, от руки написал.
119.
Саня (19.12.2009 / 10:17)
Спс. Попробуем.
URL:
https://visavi.net/topics/1977