Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Онлайн база номеров (https://forum.antichat.xyz/showthread.php?t=11882)

De1eT 18.12.2005 11:01

Онлайн база номеров
 
Есть онлайн база http://icq.xss.ru/
Кто может сделать такую же,но чтоб при одном запросе выдавала список по годам,то есть,я задал номер 365056 а мне выдало
2002: 365056:me@dyra.com
2003: none
2004: 365056:y_ne@dyra.com
2005: xрен

вот так :)
эту базу мы повесив в разделе асекью

fucker"ok 18.12.2005 13:53

В принципе ничего сложного. Можно сделать базу структурой:
uin, 2002, 2003,2004, 2005 где в годах будет мыло :]
Если я смогу вытянуть эти базы (у меня модем), то попробую сделать.

De1eT 18.12.2005 14:07

сделай просто на тестовых базах.то есть создай наобуум несколько строк
типа :
234232:y_ne@dyra.com
888199:y8908@d890ra.com

fucker"ok 18.12.2005 20:31

тестируем
 
Уже удалось кое-что сделать а именно:
  • Я сгенирировал базу 100001-999999
  • Для каждого уина есть емайлы за определённые года 2000 2003 2004 2005
  • можно задавать маски * или ? (как http://icq.xss.ru/)
  • Все запросы кешируются (при повторном запросе sql сервер не задейсвован)

Правда поиск по email я ещё не добавил, нужно придумать маску
Думаю допустимыми символами будут: a-z 0-9 _ - .
Вроде, если емайл не входит в эту маску, то он не может реально существовать (если я неправ - поправте!)
Все емайлы сгенирированны! Любой совпадение есть чудо! :p
Думаю завтра доделаю поиск по емайлам и начну добавлять базы. (нашёл только за 2003 год и то с левой кодировкой :( )
Вот такие пироги...
http://mailovka.ru/icq/

Trinux 18.12.2005 21:39

Нужно сделать обязательно постраничный вывод, я думаю. Потому как наблюдать все сразу и неудобно и БД грузит, даже с кешами. Постранично, соответственно, лимитами делать. И вообще подумай над кешами ведь номера будут добавляться постоянно. поиск лучше юзать встроенный в MySQL, очень экономичный к ресурсам, тем более поля для поиска очень короткие. И начиная с 4-ой MySQL поиск там очень даже богатый вшитый, с кучей правил итп.

А вообще на самом то деле, задачи тут простейшие, можно было бы и на текстовиках сделать =)

fucker"ok 19.12.2005 12:48

Цитата:

поиск лучше юзать встроенный в MySQL
Не очень понимаю как это, я делаю обычный поиск типа:
Код:

SELECT * FROM uins WHERE uin=667033;
Цитата:

И вообще подумай над кешами ведь номера будут добавляться постоянно.
(Это кеш страници, а не кеш запроса к БД)
Кеш работает в течении часа, потом странице пресобирается (Smarty рулит :D )

Цитата:

Нужно сделать обязательно постраничный вывод, я думаю.
Вот это как-раз и проблемно:
Если делать постраничный вывод, то нам ведь всё-равно нужно как-то определить кол-во страниц? :] Тоесть запрос будет полноценный.
Можно сделать так:
Ограничить вывод в 100 уинов (LIMIT 0 , 101)
Добавить поле, которое задаёт значение "откуда начинать"
Например по запросу всего 500 уинов, нам надо узнать промежуток от 300-ого уина, тогда мы в это поле вводим 300 (запрос будет LIMIT 300, 101)

Теперь почему 101, если вывод 100.
101-ого уина не будет в выводе, но если у него есть значение, то значит есть и следущая страница :]

Deem3n® 19.12.2005 13:45

Цитата:

Сообщение от fucker"ok
В принципе ничего сложного. Можно сделать базу структурой:
uin, 2002, 2003,2004, 2005 где в годах будет мыло :]
Если я смогу вытянуть эти базы (у меня модем), то попробую сделать.

Этот структура рабочая но неправильная. Неправильная потому что когда появятся новые базы (2006 и 2007 годов) ты должен будешь модифицировать структуру БД (добавляя новые атрибуты 2006, 2007).
Лучше всего воспользоватся структурой вида:
uin, year, mail - где поля year и uin ключевые.
Сразу отпадает проблема поиска по мылу

fucker"ok 19.12.2005 20:50

Deem3n®: Да возможно это и не лучший вариант, дабы я не очень силён в SQL, но мой способ простой и понятный (для меня).
Да, когда будут появлятся новые базы за новый год, то это дело прийдётся немного править (добавить пару строк), но вся прелесть в том, что раз в год можно выделеть несколько минут на это :D
Если я тебя правельно понял, то хочешь хранить в базе уины так (напиши правельно понял, или нет):
uin year mail
667033 2001 vasya@mail.ru
667033 2002 peta@mail.ru
и тд

В принципе у меня скрипт готов. Осталось только придать дизайн и добавить кнопку "к следущей странице" (сегодня сделаю, но не успею выложить инет до 8) Ну и добавлять базы...
Поиск емайла может быть по маске и за определённый год (не забывайте ставить галочку "год" (можно поставить все) )
Ещё есть идея собрать все ники и uid юзеров форума у кого 6-ти знаки, тогда в дополнительном поле будет имя и ссылка на профиль (если администрация поддержит, то будет класно :) )
Тестируем! О багах постим сюда

http://mailovka.ru/icq

Deem3n® 20.12.2005 13:03

Цитата:

Сообщение от fucker"ok
uin year mail
667033 2001 vasya@mail.ru
667033 2002 peta@mail.ru
и тд

ну в принципе так, но для экономии сделай тип атрибута year - tinyint:
Код:

CREATE TABLE base
(
        uin        INT,
        year  TINYINT,
        mail        VARCHAR(40)
);
ALTER TABLE base
        MODIFY COLUMN `year` TINYINT,
        MODIFY COLUMN `uin` INT,
        ADD PRIMARY KEY (uin, year);

uin year mail
667033 99 fedya@mail.ru
667033 01 vasya@mail.ru
667033 02 peta@mail.ru

PS:
для чего предназначена опция "Вывод от:"?

Trinux 21.12.2005 13:47

В MySQL сущесвтует собственный поиск, в мане прочти о MATCH() AGAINST() вроде так. работает. Хотя тут можно и обойтись обычным LIKE с его % и ?. Создавать кеш на час... да, возможно это как вариант, только при добавлении нового номера задерка вывода будет примерно пол часа. В принципе это не критично. Насчет постраничного вывода, что может быть проще? Маленький запро SELECT COUNT() не сильно загрузит сервак. Зато будет очень удобно листать, например, по 50 номеров.

fucker"ok 21.12.2005 15:58

Цитата:

Сообщение от Deem3n®
для чего предназначена опция "Вывод от:"

Это значение идёт в запос как ... LIMIT значение , 100
Твое постронние БД тоже подходит, но в таком случае база будет очень большая и запросы будут выполнятся долго (имхо)
Цитата:

Сообщение от Trinux
Хотя тут можно и обойтись обычным LIKE с его % и ?.

Так и сделанно :p
Цитата:

Сообщение от Trinux
Маленький запро SELECT COUNT()

Вот тут интересный случай:
Сам запрос SELECT COUNT(*) даст нам полное кол-во номеров, НО ведь нам надо узнать это количество при определённом условии? Тоесть запросу всё-равно прийдётся пройтись по базе (иначе мы не узнаем кол-во страниц).
Так-что лучше просто сделать ссылки "вперёд", "назад". :]

ЗЫ
Вчера был на курсах, поэтому ничего не доделал, попробую сегодня.

qBiN 21.12.2005 18:15

Цитата:

Smarty рулит
уууу...Скорость работы не жалко??

nerezus 21.12.2005 18:37

Цитата:

Скорость работы не жалко??
smarty очень быстрый.

fucker"ok 21.12.2005 20:56

Добавил странички перехода. Теперь задав к прмеру в uin знак "*", можно перейти на следущую (и на предидущую) Чего нет даже на icq.xss.ru :)
В дизайн внес немного античата :p
остались только базы. Хотелось бы услышать оценку от заказчика - Делита :d

http://icq.mailovka.ru/

De1eT 22.12.2005 01:16

хм,fucker"ok очень хорошо,я поговорю с егорычем, можешь выложить на форуме исходники

fucker"ok 22.12.2005 16:52

Это сами сурсы и шаблоны
http://mailovka.ru/files/icq.tgz (3kb)
Все файлы в кодировке koi8-r
inc/connect.php нужно настроить на ваш sql сервер
base.sqlструктура базы
templates/ шаблоны
index.php нужно настроить путь к скрипту и путь к Smarty

для шаблонов я использовал Smarty (по привычке)
http://smarty.php.net/

Я особо не питал надежд что сделаю лучше всех, это просто спортивный интерес :p

Trinux 22.12.2005 20:03

Цитата:

Сообщение от nerezus
smarty очень быстрый.

Это с каких щей =))) Самосвал, он хоть и перевозит много груза и вообще разнорабочий, все равно по прямой его Ferrari обгонит. Вот вы мне что угодно говорите, но я никогда не поверю, что вывести строку в браузер
"123"
через смарти быстрее, чем просто
echo '123';
бред

nerezus 22.12.2005 20:15

Цитата:

Trinux
я про классические шаблонизаторы.


Время: 07:50