Русское сообщество по скриптингу

Обновление множества записей в БД

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Обновление множества записей в БД

Сообщение RevCrew » 19 фев 2020, 21:30

Собственно, есть таблица
id player weapon_id team weapon_skin

id - айди строки
player - айди игрока из другой таблицы
weapon_id - 0..31 айди оружия в кс
team - 0|1
weapon_skin - переменная типа Int

Всего оружией в кс 31, соответственно для каждого игрока должна быть 31 запись (чтобы хранить скин для каждого оружия). Учитывая что team может быть 0|1 то 62 будет.
Все это нужно как то сохранять при выходе игрока, 31 запрос делать не хочется. Как лучше реализовать?
Думается, что надо хранить в переменной все id для игрока, чтобы в будущем делать insert\update по Id.
Варианты:
1. При выходе игрока первый раз делать INSERT INTO table (player, weapon_id, team, weapon_skin) VALUES (1,1,1, 1), (1,2, 1, 2), ... и тд ( Кол-во комбинаций 31 * 2 (т.к team = 1 | 2). В будущем делается UPDATE.
2. Все делать через INSERT ON DUBLICATE KEY UPDATE.
3. Как то иначе
Skype revcrew77
https://vk.com/cssuite
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1541
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 266 раз.
Поблагодарили: 326 раз.
Языки программирования: Unkown

Re: Обновление множества записей в БД

Сообщение xbass13 » 20 фев 2020, 01:48

Есть дефолтный скин для связки weapon_id-team? Его смысла хранить нет, все изменения в базе по факту, а не по дисконекту. Сменился скин для этой связки - мы знаем какой был скин(был дефолт, делаем insert. Был не дефолт - delete player-team-weapon_id если стал дефолт, update player-team-weapon_id если другой не дефолт)
Аватара пользователя
xbass13
 
Сообщения: 92
Зарегистрирован: 13 июн 2012, 21:20
Благодарил (а): 34 раз.
Поблагодарили: 35 раз.
Опыт программирования: Больше трех лет
Языки программирования: pawn, c++, js, php

Re: Обновление множества записей в БД

Сообщение RevCrew » 20 фев 2020, 12:19

xbass13, Да, тоже так подумал, что нужно по факту менять скин. Есть ли смысл делать delete ? Если Weapon_Skin 0 то это скина нет.
Skype revcrew77
https://vk.com/cssuite
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1541
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 266 раз.
Поблагодарили: 326 раз.
Языки программирования: Unkown

Re: Обновление множества записей в БД

Сообщение xbass13 » 20 фев 2020, 13:19

:dntknw: я бы чистил, но это решать вам
Тогда второй вариант, вами предложенный - INSERT ON DUBLICATE KEY UPDATE (по факту изменения скина)
Аватара пользователя
xbass13
 
Сообщения: 92
Зарегистрирован: 13 июн 2012, 21:20
Благодарил (а): 34 раз.
Поблагодарили: 35 раз.
Опыт программирования: Больше трех лет
Языки программирования: pawn, c++, js, php

Re: Обновление множества записей в БД

Сообщение Leonidddd » 22 фев 2020, 02:51

RevCrew, это все можно сделать в 3 запроса при входе и выходе игрока. К примеру:

Создается основная таблица, где будут храниться следущие значения: id, nickname, steamid, ip
причем, id с AUTO_INCREMENT атрибутом, потом ещё 2 таблицы, к примеру, по командам с точно таким же id AUTO_INCREMENT.

Грубо говоря: первая таблица будет содержать список всех оружий первой команды, а вторая - второй,
связующее звено между тремя таблицами - это только один единственный индекс id, который будет определять, кому именно будет принадлежать та или иная информация.

Выйдет чет такое, страшное, но эт нормально(хотя бы не лагает при таких запросах, хех):
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Leonidddd
Модератор
 
Сообщения: 2352
Зарегистрирован: 08 апр 2012, 18:13
Откуда: г. Запорожье
Благодарил (а): 185 раз.
Поблагодарили: 655 раз.

Re: Обновление множества записей в БД

Сообщение fl0wer » 22 фев 2020, 04:31

Leonidddd писал(а):RevCrew, это все можно сделать в 3 запроса при входе и выходе игрока. К примеру:

Создается основная таблица, где будут храниться следущие значения: id, nickname, steamid, ip
причем, id с AUTO_INCREMENT атрибутом, потом ещё 2 таблицы, к примеру, по командам с точно таким же id AUTO_INCREMENT.

Грубо говоря: первая таблица будет содержать список всех оружий первой команды, а вторая - второй,
связующее звено между тремя таблицами - это только один единственный индекс id, который будет определять, кому именно будет принадлежать та или иная информация.

Выйдет чет такое, страшное, но эт нормально(хотя бы не лагает при таких запросах, хех):

Страшно, вырубай.
Аватара пользователя
fl0wer
 
Сообщения: 1613
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 235 раз.
Поблагодарили: 490 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: Обновление множества записей в БД

Сообщение RevCrew » 22 фев 2020, 13:38

Leonidddd, вариант хороший, но мне не подойдет. В будущем планирую добавить для оружия Stattrack(кол-во убийств с каждого оружия) и другие свойства.
Skype revcrew77
https://vk.com/cssuite
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1541
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 266 раз.
Поблагодарили: 326 раз.
Языки программирования: Unkown

Re: Обновление множества записей в БД

Сообщение Fedcomp » 24 фев 2020, 15:57

По записи на свойство это надежно.
Маленькая помарка, не
INSERT ON DUBLICATE KEY UPDATE

а
INSERT ON DUPLICATE KEY UPDATE

Вы должны зарегистрироваться, чтобы видеть ссылки. ... ey-update/

Ну еще в mysql есть json datatype: Вы должны зарегистрироваться, чтобы видеть ссылки.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4727
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 771 раз.
Поблагодарили: 1260 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: Обновление множества записей в БД

Сообщение hren_morjovui » 25 фев 2020, 12:28

json или serialize
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 136
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 63 раз.
Поблагодарили: 14 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 7