1. PHP / Говнокод #19368

    −3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    if ($Module == 'edit' and $_POST['enter']) {	
    ULogin(1);
    $_POST['name'] = FormChars($_POST['name']);
    $_POST['femeli'] = FormChars($_POST['femeli']);
    $_POST['den'] = FormChars($_POST['den']);
    $_POST['month'] = FormChars($_POST['month']);
    $_POST['year'] = FormChars($_POST['year']);
    $_POST['pol'] = FormChars($_POST['pol']);
    $_POST['country'] = FormChars($_POST['country']);
    $_POST['region'] = FormChars($_POST['region']);
    $_POST['city'] = FormChars($_POST['city']);
    
    
    if ($_POST['name'] != $_SESSION['USER_NAME']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `name` = '$_POST[name]' WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_NAME'] = $_POST['name'];
    }
    
    if ($_POST['femeli'] != $_SESSION['USER_FEMELI']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `femeli` = '$_POST[femeli]' WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_FEMELI'] = $_POST['femeli'];
    }
    
    if ($_POST['den'] != $_SESSION['USER_DEN']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `den` = $_POST[den] WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_DEN'] = $_POST['den'];
    }
    
    if ($_POST['month'] != $_SESSION['USER_MONTH']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `month` = $_POST[month] WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_MONTH'] = $_POST['month'];
    }
    
    
    if ($_POST['year'] != $_SESSION['USER_YEAR']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `year` = $_POST[year] WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_YEAR'] = $_POST['year'];
    }
    
    if ($_POST['pol'] != $_SESSION['USER_POL']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `pol` = $_POST[pol] WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_POL'] = $_POST['pol'];
    }
    
    
    
    if ($_POST['country'] != $_SESSION['USER_COUNTRY']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `country` = $_POST[country] WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_COUNTRY'] = $_POST['country'];
    }
    
    
    if ($_POST['region'] != $_SESSION['USER_REGION']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `region` = $_POST[region] WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_REGION'] = $_POST['region'];
    }
    
    if ($_POST['city'] != $_SESSION['USER_CITY']) {
    mysqli_query($CONNECT, "UPDATE `users`  SET `city` = $_POST[city] WHERE `id` = $_SESSION[USER_ID]");
    $_SESSION['USER_CITY'] = $_POST['city'];
    }
    
    
    MessageSend(3, 'Данные изменены!');
    }

    никто не подскажет как сократить вот эту шнягу

    Запостил: viktor, 29 Января 2016

    Комментарии (26) RSS

    • вот это можно записать в переменную WHERE `id` = $_SESSION[USER_ID]

      а оброщения к базе mysqli_query($CONNECT, "UPDATE `users` SET `region` = $_POST[region]
      не могу сообразить
      Ответить
      • if ($Module == 'edit' and $_POST['enter']) {
          ULogin(1);
          $fields = array('name', 'femeli', 'den', 'month', 'year', 'pol', 'country', 'region', 'city');
          $updates = array();
        
          foreach($fields as $pole) {
            $sesson_pole = 'USER_' . strtoupper($pole);
            $value = FormChars($_POST[$pole]);
            if ($value != $_SESSION[$session_pole]) {
              $updates[$pole] = $value;
              $_SESSION[$session_pole] = $value;
            }
          }
          if ($updates) {
            $sql = "UPDATE `users` SET "; 
            $sql .= implode(', ', array_map(function($k,$v){ return "`$k` = $v"}, array_keys($updates), $updates));
            $sql .= " WHERE `id` = $_SESSION[USER_ID]");
            mysqli_query($CONNECT, $sql);
          }
          MessageSend(3, 'Данные изменены!');
        }
        Ответить
    • femeli

      FEMELI
      Ответить
      • foreach($fields as $pole)

        Рунглиш FTW
        Ответить
        • У них так поля называются: USER_DEN, но USER_MONTH; USER_POL, но USER_COUNTRY. Очевидно у них такие coding guidelines. Я лишь поддерживаю заданный стиль.
          Ответить
          • USER_DEN , USER_MONTH и так далее - это сессии
            Ответить
            • Это разные сессии? Или одна и та же? Это очень важно!
              Ответить
              • Это разные сессии
                у каждого поля $_POST[''] после обновления в базе создается сесия

                'name', 'femeli', 'den', 'month', 'year', 'pol', 'country', 'region', 'city'

                $_SESSION[USER_NAME] , $_SESSION[USER_FEMELI], $_SESSION[USER_DEN] и так далее
                Ответить
                • Раз это разные сессии это же совсем меняет дело! Тут надо использовать рекурсию. Возможно даже транзакции. А в каком браузере пробуешь? Попробуй в Opera. Мне нравится Opera. Она помогает более 350 миллионам пользователей находить всё самое лучшее и интересное в Интернете и получать доступ к данным с любого устройства, из любой сети и в любой точке мира. Попробуй и ты!
                  Ответить
                  • у меня Opera другие браузеры не увожаю слишком много рекламы и вирусов
                    Ответить
                    • Это замечательно! Ты на полпути к успеху. Осталось найти в моем коде пару досадных опечаток и всё заработает как надо! Или как не надо. Но обязательно заработает.
                      Ты главное не опускай руки. Глаза боятся, а руки делают.
                      Ответить
                      • глаза боятся а руки уже трисутся)
                        Ответить
                        • 1 ошибку врод6е нашел
                          $sesson_pole буквы i не хватает
                          может вторая в этой строке
                          $sql .= implode(', ', array_map(function($k,$v){ return "`$k` = $v"}, array_keys($updates), $updates));
                          в скобках $sql .= implode(', ',
                          Ответить
                  • Ска-а-а-а-а-а-йп!
                    Ответить
      • femeli ?

        нихрена понять не могу
        Ответить
        • Фамилия, наверно. name - имя, femeli - фамилия. Такой у них рунглиш, чо...
          Ответить
    • не работает(
      Ответить
      • Отрицательный результат - тоже результат! Не отчаивайся! Попробуй перезагрузить компьютер и запустить еще раз.
        Ответить
        • не работает(
          Ответить
        • хоть убей не могу наити ошибку да и после того как я поставил твой код у меня кнопка выход перестала работать , у меня в этом же фаиле находится обработчик от кнопки выход . код убераю и кнопка работает.
          это все что я смог наити)
          Ответить
          • По-моему viktor уже заслужил пачку дошика и приз зрительских симпатий.
            Ответить
    • $session_pole это ближе к telegraph pole, или к north pole?
      Ответить
    • Ctrl+A, Delete
      Ответить
    • последний комментарий убил :D :D :D
      Ответить

    Добавить комментарий