SA-MP Forums Archive
Чтение с файла и запись. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Чтение с файла и запись. (/showthread.php?tid=450796)

Pages: 1 2


Чтение с файла и запись. - Romz - 14.07.2013

Помогите сделать нормальную запись и чтение с файла. Я вот сделал такое:
PHP Code:
AddEmail(email[]) {
    new 
Filefile fopen("email.ini",io_append), Str[64];
    
format(Str,sizeof(Str),"%s\n",email);
    
fwrite(file,Str);
    return 
fclose(file);
}
GetEmail(email[]) {
    new 
File:file fopen("email.ini",io_read), data[64];
    while(
fread(file,data) > 0) {
        if(
strcmp(data,email,true) == 0) return 1;
    }
    
fclose(file);
    return 
0;

Проверку делаю таким способом:
PHP Code:
                new Str[64];
                
format(Str,sizeof(Str),"%s\n",inputtext);
                if(
GetEmail(Str) == 1) return Kick(playerid); 
Но оно как то не совсем корректно работает. Что бы проверить нужно еще в конец текста добавлять \n
Можете помочь как сделать более аккуратней и что бы работало нормально?


Re: Чтение с файла и запись. - stabker - 14.07.2013

Можно создать папку, а в нее помещать файлы. Название файла - емейл. Намного быстрее будет. На счет минусов - сказать не могу, может и есть...


Re: Чтение с файла и запись. - Romz - 14.07.2013

Quote:
Originally Posted by stabker
View Post
Можно создать папку, а в нее помещать файлы. Название файла - емейл. Намного быстрее будет. На счет минусов - сказать не могу, может и есть...
мне бы хотелось реализовать все через один файл. В принципе сделал но насчет чтения не совсем нрава мне проверка. Думаю может как то помогут код до ума довести..


Re: Чтение с файла и запись. - stabker - 14.07.2013

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

А какая разница сколько файлов? Это вряд ли как-то повлияет вам (если конечно не ограничит задуманный вами функционал).


Re: Чтение с файла и запись. - -Stranger- - 14.07.2013

Kolstin, нельзя скидывать все мыла в один файл.
Тут 2 варианта:
1) Писать мыло в аккаунт пользователя. Что есть более логичными и правильным.
2) Делать на MySQL. Таблица типа: "id | nick | email", но это немного сложнее чем первый вариант...


Re: Чтение с файла и запись. - White_116 - 14.07.2013

Как насчёт встроенного sql?


Re: Чтение с файла и запись. - Romz - 14.07.2013

Quote:
Originally Posted by White_116
View Post
Как насчёт встроенного sql?
Можно по подробней? Это типа файл в папке scriptfiles с названием .sql типа типа как бд?

Quote:
Originally Posted by -Stranger-
View Post
Kolstin, нельзя скидывать все мыла в один файл.
Тут 2 варианта:
1) Писать мыло в аккаунт пользователя. Что есть более логичными и правильным.
2) Делать на MySQL. Таблица типа: "id | nick | email", но это немного сложнее чем первый вариант...
Да была идея но опыта работы с MySQL нету и это усугубляет ситуацию..


Re: Чтение с файла и запись. - White_116 - 14.07.2013

Не типо. Это и есть бд. На вики все функции расписаны. Так же примеров на форуме достаточно, пошурши забугорные разделы.


Re: Чтение с файла и запись. - -Stranger- - 14.07.2013

White_116, это случаем не: https://sampwiki.blast.hk/wiki/SQLite
Как-то я это упустил это... нада ознакомиться...


Re: Чтение с файла и запись. - White_116 - 14.07.2013

Quote:
Originally Posted by -Stranger-
View Post
White_116, это случаем не: https://sampwiki.blast.hk/wiki/SQLite
Как-то я это упустил это... нада ознакомиться...
Оно самое.


Re: Чтение с файла и запись. - Romz - 14.07.2013

Quote:
Originally Posted by White_116
View Post
Не типо. Это и есть бд. На вики все функции расписаны. Так же примеров на форуме достаточно, пошурши забугорные разделы.
Ага, понятно. Но тут есть минус в том что мне еще прийдеться арендовать SQL Сервер...
Я слышал что есть такая штука что то типа бд но только она храниться не на SQL сервере а в папке scriptfiles в формате .db или что то того. Это что такое? Плагин или инклуд какой то? Есть где нибуть описание функций и т.д?


Re: Чтение с файла и запись. - Alexander_Petrov - 14.07.2013

Есть такое, SQL называется. Ты тролль или реально не заметил, что тебе рассказали об этом в сообщении, которое ты процитировал?


Re: Чтение с файла и запись. - Romz - 14.07.2013

Quote:
Originally Posted by Alexander_Petrov
View Post
Есть такое, SQL называется. Ты тролль или реально не заметил, что тебе рассказали об этом в сообщении, которое ты процитировал?
Извиняюсь не дочитался. Еще такой вопрос(надеюсь последний) что лучше использовать если стоит выбор между SQLite И mxINI?


Re: Чтение с файла и запись. - -Stranger- - 14.07.2013

Kolstin, ну вообще база будет всегда быстрее и эффективнее файлов, даже начать с того, что ты не перебираешь весь файл в поисках информации, а делаешь запрос, и уже проблема сервера предоставить готовую информацию, причём структура самой базы позволяет выдать эту самую информацию гораздо быстрее. Конечно если в файле храниться одно значение, то смысла самой БД отпадает, но если предполагаться наличии большого кол-ва информации, то определённо БД.


Re: Чтение с файла и запись. - Romz - 14.07.2013

Quote:
Originally Posted by -Stranger-
View Post
Kolstin, ну вообще база будет всегда быстрее и эффективнее файлов, даже начать с того, что ты не перебираешь весь файл в поисках информации, а делаешь запрос, и уже проблема сервера предоставить готовую информацию, причём структура самой базы позволяет выдать эту самую информацию гораздо быстрее. Конечно если в файле храниться одно значение, то смысла самой БД отпадает, но если предполагаться наличии большого кол-ва информации, то определённо БД.
А если использовать SQLite и записывать Email в аккаунты сам то можно ли будет сделать проверку (использовался ли емейл при реге) считать инфу со всех аккаунтов при проверке. Это же уже в таблицах будет и я так понял что это сделать - можно?


Re: Чтение с файла и запись. - Den_Bellik - 14.07.2013

Quote:
Originally Posted by Kolstin
View Post
А если использовать SQLite и записывать Email в аккаунты сам то можно ли будет сделать проверку (использовался ли емейл при реге) считать инфу со всех аккаунтов при проверке. Это же уже в таблицах будет и я так понял что это сделать - можно?
да, просто почитай про запросы или посмотри примеры.
вот пример
PHP Code:
SELECT FROM `таблица аккаунтовWHERE `Email` = '%s' 
Email - название столбца в базе.


Re: Чтение с файла и запись. - -Stranger- - 15.07.2013

Если дословно "считать инфу со всех аккаунтов", то:
Code:
SELECT `Email` FROM `таблица аккаунтов`
На выходе будет массив всех мыл из таблицы.

В запросе можно использовать критерии, например:
Code:
SELECT `Email` FROM `таблица аккаунтов` WHERE `sex` = 'male'
На выходе будет массив всех мыл из таблицы, у которых пол = male.

Так-же можно сделать сортировку, например по нику:
Code:
SELECT `Email` FROM `таблица аккаунтов` WHERE `sex` = 'male' ORDER BY `nick` ASC
На выходе будет отсортированный по ячейки `nick` массив (по возрастанию) всех мыл из таблицы, у которых пол = male.

Ещё полезная часть запроса это LIMIT, например:
Code:
SELECT `Email` FROM `таблица аккаунтов` LIMIT 10
На выходе будет массив первых 10 мыл из таблицы.


Все предложенные варианты можно комбинировать как угодно, для достижения нужного результата.
Удачи


Re: Чтение с файла и запись. - White_116 - 15.07.2013

Quote:
Originally Posted by Kolstin
View Post
Ага, понятно. Но тут есть минус в том что мне еще прийдеться арендовать SQL Сервер...
Я слышал что есть такая штука что то типа бд но только она храниться не на SQL сервере а в папке scriptfiles в формате .db или что то того. Это что такое?
Это и есть оно, ничего арендовать не нужно!


Re: Чтение с файла и запись. - stabker - 15.07.2013

Quote:
Originally Posted by Kolstin
View Post
А если использовать SQLite и записывать Email в аккаунты сам то можно ли будет сделать проверку (использовался ли емейл при реге) считать инфу со всех аккаунтов при проверке. Это же уже в таблицах будет и я так понял что это сделать - можно?
SELECT `ник/ид` FROM `таблица аккаунтов` WHERE `Email`= 'мыло' LIMIT 1

Если вернет запрашиваемые данные (ник/ид), значит емейл занят.


Re: Чтение с файла и запись. - -Stranger- - 15.07.2013

stabker, мне кажется лучше тогда так: "SELECT COUNT(*) FROM `таблица аккаунтов` WHERE `Email`= 'мыло'". Вернёт кол-во записей, числом.