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

    Статус
    Оффлайн
    Регистрация
    05.11.2017
    Сообщений
    136
    Репутация:
    10 ±

    Изменение принципа работы кода

    Добрый день. Есть у меня некий список текстов, которые нужно оформить через массив. Что-то вроде такого:
    1. static const gMySQLTexts[][] =
    2. {
    3. "Подключение к базе состоялось успешно",
    4. "Ошибка 1",
    5. "Ошибка 2",
    6. "Ошибка 3"
    7. };


    И потом нужно отсюда брать название в соответствии с ID ошибки. Только эти ошибки не по порядку идут (0, 1, 2...), а примерно так: 0, 1, 1041, 1043. Я поэтому сделал такую конструкцию:
    1. static const gMySQLTexts[][] =
    2. {
    3. "Подключение к базе состоялось успешно",
    4. "Ошибка 1",
    5. "Ошибка 2",
    6. "Ошибка 3"
    7. };
    8. enum e_STRUCT_MYSQL_TEXTS_ID
    9. {
    10. MYSQL_TEXT_OK = 0,
    11. MYSQL_TEXT_ERROR_NAME1 = 1041,
    12. MYSQL_TEXT_ERROR_NAME2 = 1043
    13. };
    14. enum e_STRUCT_MYSQL_TEXTS
    15. {
    16. e_STRUCT_MYSQL_TEXTS_ID:mtID,
    17. mtName[64]
    18. };
    19. new const gMySQLTexts[][e_STRUCT_MYSQL_TEXTS] =
    20. {
    21. {MYSQL_TEXT_OK, "Подключение к базе состоялось успешно"},
    22. {MYSQL_TEXT_ERROR_NAME1, "Ошибка 1"},
    23. {MYSQL_TEXT_ERROR_NAME2, "Ошибка 2"}
    24. };
    25. const MAX_MYSQL_TEXTS = sizeof(gMySQLTexts);
    26.  
    27.  
    28. stock GetMySQLTextID(e_STRUCT_MYSQL_TEXTS_ID:errorid)
    29. {
    30. for(new i = 0; i < MAX_MYSQL_TEXTS; i++)
    31. {
    32. if(gMySQLTexts[i][mtID] != errorid)
    33. continue;
    34. return i;
    35. }
    36. return -1;
    37. }
    38.  
    39.  
    40. stock SomeFunc()
    41. {
    42. printf(gMySQLTexts[GetMySQLTextID(mysql_errno(dbHandle))][mtName]);
    43. }

    Возможно ли как-то улучшить это дело? А то мудреный код получается.

    P.s. у меня подключения к разным базам данных есть и поэтому я решил вынести эти причины в массив.

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

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Эмм, гораздо легче сделать так:

    PHP код:
    switch(mysql_errno())
    {
        case 
    0: print("Подключение к базе данных удалось");
        case 
    1044: print("Подключение к базе данных не удалось [Указано неизвестное имя пользователя]");
        case 
    1045: print("Подключение к базе данных не удалось [Указан неизвестный пароль]");
        case 
    1049: print("Подключение к базе данных не удалось [Указана неизвестная база данных]");
        case 
    2003: print("Подключение к базе данных не удалось [Хостинг с базой данных недоступен]");
        case 
    2005: print("Подключение к базе данных не удалось [Указан неизвестный адрес хостинга]");
        default: 
    printf("Подключение к базе данных не удалось [Неизвестная ошибка. Код ошибки: %d]"mysql_errno());


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

    Статус
    Оффлайн
    Регистрация
    05.11.2017
    Сообщений
    136
    Репутация:
    10 ±
    Не одна база данных просто. Или делать лучше новую функцию, в которую передавать ID подключения и проверять на ошибки этим switch?

 

 

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

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

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

Ваши права

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