Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 9 из 9
  1. #1
    Аватар для #enotya
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.08.2016
    Сообщений
    5
    Репутация:
    0 ±

    Неправильный вывод данных из таблицы.

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

    Сегодня решил переделать на загрузку по нику, а-ля повезет и заработает как надо.
    В логе вижу постоянно это.

    Код HTML:
    [plugins/mysql] cache_get_value_name: field 'name_player' not found (D:\Modes\VALVE RP\gamemodes\valve.pwn:32163)
    Таблица в базе есть со столбцами.
    Ник записывается и выгружается. Но выгружает только одну строку - вместо всех, которые есть в базе.



    Как выглядит в игре выгрузка..



    Сам код команды /login

    PHP код:
    CMD:login(playeridparams[])
    {
        
    clearmassive// очищение глобальной переменной global_massive
        
    mysql_format(MysqlTestglobal_massivesizeof(global_massive), 
            
    "SELECT `data_and_time_login`, `ip_login`, `type_login` FROM `login_player` WHERE `name_player` = '%e' LIMIT 0,15"
            
    Name(playerid)
        );
        
    mysql_tquery(MysqlTestglobal_massive"ShowLoginForEnterGame""i"playerid);
        return 
    1;

    Проверка на наличие записей и показ оных.

    PHP код:
    forward ShowLoginForEnterGame(playerid);
    public 
    ShowLoginForEnterGame(playerid)
    {
        new 
    rows;
        
    cache_get_row_count(rows);
        if(
    rows)
        {
            new 
    typetime_and_data[50], info_for_player[32], data_one[32];//, name_player[MAX_PLAYER_NAME+1];//, id =1;//, id;

            
    new yearmonthdayhourminutesecond;

            
    gettime(hourminutesecond);
            
    getdate(yearmonthday);
            
    //GetPlayerName(playerid, name_player, sizeof(name_player));

            
    for(new irowsi++)
            {
                
    //cache_get_value_name_int(i,     "id",                     id);
                
    cache_get_value_name(i,            "name_player",            Name(i));
                
    printf("name_player %s"Name(i));
                
    cache_get_value_name(i,            "ip_login",             p_info[i][pOldIP]);
                
    cache_get_value_name(i,            "data_and_time_login",     time_and_data);
                
    cache_get_value_name_int(i,        "type_login",             type);
                
                
    //ConnectionLog_LastID[playerid] = id;

                
    clearmassive;
                
    format(data_onesizeof(data_one), "%04d-%02d-%02d в %02d:%02d:%02d"yearmonthdayhourminutesecond);

                switch(
    type)
                {
                    case 
    CONNECTION_LOG_LOGIN_ERRORformat(info_for_playersizeof(info_for_player), " {EFA200}Неудачно");
                    case 
    CONNECTION_LOG_LOGIN_SUCCESSformat(info_for_playersizeof(info_for_player)," {00F300}Удачно");
                    default: 
    format(info_for_playersizeof(info_for_player), " Неизвестно");
                }

                
    format(global_massivesizeof(global_massive), 
                    
    "{FFFFFF}%s %i. %s ip: %s %s"global_massivei+1data_onep_info[i][pOldIP], info_for_player);

                new 
    info_id[37+7];
                
    format(info_idsizeof(info_id), " {ffffff}Последние авторизации (№ %i)"p_info[i][p_mysqlid]);
                
    SPD(idMesDIALOG_STYLE_MSGBOXinfo_idglobal_massive," Скрыть""");
            }
        }
        else 
    SendClientMessage(playeridCOLOR_LIGHTGREY" Ошибка: Записей не найдено.");
        return 
    true;

    Вывод в логе принтом:

    Код HTML:
    [12:11:13] name_player Andy_Fawkess
    [12:11:13] name_player 
    [12:11:13] name_player 
    Сам сток добавления в базу записей.

    PHP код:
    stock AddConnectionLog(playeridtype 1)
    {
        new 
            
    data_player[50],
            
    player_ip[16],
            
    yearmonthday
            
    hourminutesecond,
            
    name_player[MAX_PLAYER_NAME+1];

        
    GetPlayerName(playeridname_playersizeof(name_player));
        
    getdate(yearmonthday);
        
    gettime(hourminutesecond);
        
    format(data_playersizeof(data_player), "%04d-%02d-%02d %02d:%02d:%02d"yearmonthdayhourminutesecond);
        
    GetPlayerIp(playeridplayer_ipsizeof(player_ip) );

        
    clearmassive;
        
    format(global_massivesizeof(global_massive), 
            
    "INSERT INTO `login_player` (`name_player`, `ip_login`, `type_login`, `data_and_time_login`) VALUES ('%s', '%s', '%i', '%s')"
            
    name_playerplayer_iptypedata_player
        
    );
        
    mysql_query(MysqlTestglobal_massivefalse);
        return 
    true;

    Ну и структура базы, вдруг нужно..


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

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Нету первичного ключа. Добавь поле с идом записи и объяви её как первичный ключ + автоинкремент.

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

    Статус
    Оффлайн
    Регистрация
    28.02.2018
    Сообщений
    11
    Репутация:
    1 ±
    PHP код:
    "SELECT `data_and_time_login`, `ip_login`, `type_login` FROM `login_player` WHERE `name_player` = '%s' LIMIT 15" 
    Ну попробуй так.

  4. Пользователь сказал cпасибо:
    Божество (05.03.2018)
  5. #4
    Аватар для #enotya
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.08.2016
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от TheMallard Посмотреть сообщение
    Нету первичного ключа. Добавь поле с идом записи и объяви её как первичный ключ + автоинкремент.
    С ним жалуется на дублирование.

    - - - Добавлено - - -

    Цитата Сообщение от #Djuga Посмотреть сообщение
    PHP код:
    "SELECT `data_and_time_login`, `ip_login`, `type_login` FROM `login_player` WHERE `name_player` = '%s' LIMIT 15" 
    Ну попробуй так.
    Разница?
    В базе вывод нормальный по запросу.
    В игре шароебит.

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

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Name(i) что такое?

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Значит, есть дублирование. Логично же.
    Цитата Сообщение от #enotya Посмотреть сообщение
    С ним жалуется на дублирование.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Создавай для ника отдельную переменную в цикле.

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

    Статус
    Оффлайн
    Регистрация
    20.08.2016
    Сообщений
    5
    Репутация:
    0 ±
    Переделал запрос - проблема в принципе решена..

    - - - Добавлено - - -

    Цитата Сообщение от TheMallard Посмотреть сообщение
    Создавай для ника отдельную переменную в цикле.
    Разницы нет.
    Я и отдельную создавал - ничего не менялось.
    Проблема в запросе была.

    - - - Добавлено - - -

    Цитата Сообщение от $continue$ Посмотреть сообщение
    Значит, есть дублирование. Логично же.
    Не знаю что он там пытался дублировать, при добавлении...
    База по десять раз очищалась, в процессе решения этой проблемы.

  10. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Я, конечно, ничего не хочу сказать, что ошибка появлялась лишь потому, что ты в запросе указываешь выгружать все столбцы, кроме "name_player" (он тут фигурирует лишь в качестве условия для выборки)
    PHP код:
    SELECT `data_and_time_login`, `ip_login`, `type_loginFROM `login_playerWHERE `name_player` = '%e' LIMIT 0,15 
    А потом с чего-то вдруг пытаешься получить значение столбца "name_player" (да ещё и, как я понимаю, записываешь его в переменную, которая хранит ники игроков онлайн).

    Как я понимаю, идея запроса заключается в том, чтоб выгрузить последние 15 записей о коннекте игрока (пока что твой запрос просто будет выбивать первые 15 записей и всё):
    PHP код:
    SELECT data_and_time_login,ip_login,type_login FROM login_player WHERE name_player='%e' ORDER BY name_player DESC LIMIT 15 
    И никаких выгрузок name_player не нужно.
    Последний раз редактировалось DeimoS; 05.03.2018 в 17:00.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 

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

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

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

Ваши права

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