Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя
Показано с 1 по 10 из 35
  1. #1
    Аватар для Niko_Grey
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.03.2014
    Сообщений
    40
    Репутация:
    1 ±

    по порядку поиска в таблице MYSQL

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

  2. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Для каких таких действий, есть оператор LIMIT

  3. #3
    Аватар для Niko_Grey
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.03.2014
    Сообщений
    40
    Репутация:
    1 ±
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Для каких таких действий, есть оператор LIMIT
    Поподробнее можно? Просто не могу в гугле найти ничего стоящего. У меня идет номер банковского счета A_I. Мне нужно его узнать, для этого я выбираю в таблице всех счетов по паролю, который ввел игрок, но баг в том, что если такой пароль есть, то он выдаст первый счет, который попадется с таким паролем. Если же он начнет искать с конца такой проблемы не будет.

  4. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Сохранить ID банковского счёта в аккаунте игрока не вариант? Ибо по идее достаточно всего одного счёта на игрока - разрешить игроку создавать несколько счетов значит дать ему возможность невозбранно засорять базу данных.

    Цитата Сообщение от Niko_Grey Посмотреть сообщение
    но баг в том, что если такой пароль есть, то он выдаст первый счет, который попадется с таким паролем. Если же он начнет искать с конца такой проблемы не будет.
    Зато баг наверняка снова проявится, если чужой счёт с таким же паролем будет расположен после того счёта, который нужно отыскать. Что ещё раз доказывает некомпетентность идеи поиска по паролю.
    Нужно устранять проблему, а не пытаться спрятать её.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. #5
    Аватар для Niko_Grey
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.03.2014
    Сообщений
    40
    Репутация:
    1 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Сохранить ID банковского счёта в аккаунте игрока не вариант? Ибо по идее достаточно всего одного счёта на игрока - разрешить игроку создавать несколько счетов значит дать ему возможность невозбранно засорять базу данных.


    Зато баг наверняка снова проявится, если чужой счёт с таким же паролем будет расположен после того счёта, который нужно отыскать. Что ещё раз доказывает некомпетентность идеи поиска по паролю.
    Нужно устранять проблему, а не пытаться спрятать её.
    А почему вы думаете, что счет может быть только у игрока? А у компании, у фракции и т.д?
    Все-таки жду ответа на мой вопрос, или такой возможности не существует?

  6. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Niko_Grey Посмотреть сообщение
    А почему вы думаете, что счет может быть только у игрока? А у компании, у фракции и т.д?
    Можно сделать их отдельно от счетов игроков. Впрочем, если вам нравится делать всё на соплях, как показано по ссылке в моём предыдущем посте - пожалуйста (я уже говорил, почему поиск по паролю ненадёжен, и никакая смена порядка поиска не спасёт). Стрелять себе в ногу - это ваше право.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. #7
    Аватар для Niko_Grey
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.03.2014
    Сообщений
    40
    Репутация:
    1 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Можно сделать их отдельно от счетов игроков. Впрочем, если вам нравится делать всё на соплях, как показано по ссылке в моём предыдущем посте - пожалуйста (я уже говорил, почему поиск по паролю ненадёжен, и никакая смена порядка поиска не спасёт). Стрелять себе в ногу - это ваше право.
    Может уже хватит красивых слов? Я просил сам способ, но до сих пор его не увидел -_-

  8. #8
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Niko_Grey Посмотреть сообщение
    Может уже хватит красивых слов? Я просил сам способ, но до сих пор его не увидел -_-
    Я уже описал способ решения проблемы, что вам в этом не нравится?
    Хорошо, распишу подробнее. Можно даже, немного схитрив, сделать счета в одной таблице.
    В таблице с банковскими счетами добавляем поле "OwnerID". В этом поле будет либо ID игрока-владельца (имеется в виду ID в таблице аккаунтов игроков), либо номер организации (в виде отрицательного числа). Например, если это число 125, владелец счёта - игрок, который зарегистрирован 125-м в таблице аккаунтов. Если же в OwnerID число -10, доступ к этому счёту может получить только лидер организации под номером 10. Соответственно, поиск счёта должен будет производиться по этому полю, значение которого уникально для каждого счёта, а значит вам не попадётся чей-то чужой счёт.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  9. #9
    Аватар для Niko_Grey
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.03.2014
    Сообщений
    40
    Репутация:
    1 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Я уже описал способ решения проблемы, что вам в этом не нравится?
    Хорошо, распишу подробнее. Можно даже, немного схитрив, сделать счета в одной таблице.
    В таблице с банковскими счетами добавляем поле "OwnerID". В этом поле будет либо ID игрока-владельца (имеется в виду ID в таблице аккаунтов игроков), либо номер организации (в виде отрицательного числа). Например, если это число 125, владелец счёта - игрок, который зарегистрирован 125-м в таблице аккаунтов. Если же в OwnerID число -10, доступ к этому счёту может получить только лидер организации под номером 10. Соответственно, поиск счёта должен будет производиться по этому полю, значение которого уникально для каждого счёта, а значит вам не попадётся чей-то чужой счёт.
    Повторюсь, игрок может создать несколько счетов, и если выбирать по ID аккаунта, то он покажет первый попавшийся, а зарегистрированный игроком является последним, ну или почти последним. Я делаю проверку в таблице по паролю, введенному игроком

    Вот код:
    PHP код:
    new query[128];
                    
    format(querysizeof(query), "INSERT INTO `banks` (`bank_password`) VALUES ('%d')"strval(inputtext));
                    
    mysql_function_query(mysql_connect_IDqueryfalse"","");
                    
    format(querysizeof(query), "SELECT * FROM `banks` WHERE `bank_password` = '%d'"strval(inputtext));
                    
    mysql_function_query(mysql_connect_IDquerytrue"FindBankNumber","ii"playeridstrval(inputtext));
                    
    SetPVarInt(playerid"Bank"2);

    fpublic FindBankNumber(playeridbanknumber);
    {
        new 
    rows,fieldsquery[128];
        
    cache_get_data(rowsfields);
        if(!
    rows) return SendClientMessage(playeridCOLOR_GREY"Такого счета не существует!");
        
    pInfo[playerid][pBankNumber] = cache_get_field_content_int(0"bank_number"mysql_connect_ID);
        
    pInfo[playerid][pBankPassword] = cache_get_field_content_int(0"bank_password"mysql_connect_ID);
         if(
    GetPVarInt(playerid"Bank") == 1) return ShowPlayerDialog(playeriddialog_bank+3DIALOG_STYLE_INPUT"Мой счет""{ffffff}Введите пароль от счета:""Далее""Закрыть");
        if(
    GetPVarInt(playerid"Bank") == 2) return format(querysizeof(query), "Номер счета: %d\nПароль: %d"pInfo[playerid][pBankNumber], pInfo[playerid][pBankPassword]), ShowPlayerDialog(playeriddialog_bank+7DIALOG_STYLE_MSGBOX"Информация о счете"query"Закрыть""");
        return 
    1;

    Мне это нужно лишь чтобы сообщить игроку номер счета, ибо другого способа я не знаю.
    Последний раз редактировалось Niko_Grey; 29.05.2015 в 07:09.

  10. #10
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Niko_Grey Посмотреть сообщение
    Повторюсь, игрок может создать несколько счетов, и если выбирать по ID аккаунта, то он покажет первый попавшийся, а зарегистрированный игроком является последним, ну или почти последним. Я делаю проверку в таблице по паролю, введенному игроком
    Повторюсь, что нельзя однозначно найти нужный счёт вашим способом поиска по паролю, поскольку может оказаться сразу несколько счетов с одинаковым паролем. Поиск нужно проводить по полю, значение которого уникально для каждого счёта. Если вы не способны понять основ построения баз данных, то тут я ничем не могу вам помочь.

    Цитата Сообщение от Niko_Grey Посмотреть сообщение
    Мне это нужно лишь чтобы сообщить игроку номер счета, ибо другого способа я не знаю.
    Как я уже говорил, вашим способом проблему решить невозможно, в любом случае нужно изменять структуру таблицы банковских счетов или игроков (один из таких способов я описал выше).
    Если не знаете, как это реализовать - учите основы построения БД, чтобы потом не пытаться орудовать вслепую.
    Либо можете заказать работу в разделе Стол заказов.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

 
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •