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

    +161

    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
    function SortArray(&$array,$coll,$desc=false)
    {
    	global $temp;
    	if(!function_exists('SorterUp')){
    		function SorterUp($x,$y)
    		{
    			global $temp;
    			if ($x[$temp] == $y[$temp]) return 0;
    			return ($x[$temp] < $y[$temp]) ? -1 : 1;
    		}
    		function SorterDown($x,$y)
    		{
    			global $temp;
    			if ($x[$temp] == $y[$temp]) return 0;
    			return ($x[$temp] > $y[$temp]) ? -1 : 1;
    		}
    	}
    	$temp = $coll;
    	if(!$desc){
    		usort($array,'SorterUp');
    	}else{
    		usort($array,'SorterDown');
    	}
    	unset($temp);
    }

    Продолжаю цикл "Из одной русской CMS". Этот код - PHP замена ORDER BY в мускуле.

    Запостил: Мартин, 17 Октября 2010

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

    • а эта CMS какого года выпуска?
      Ответить
      • 2010 года
        Ответить
      • эм) Вы думаете что в мускуле когда-то не было order by?
        Ответить
        • :) реализовано несколько (совсем) "деревянно", на мой взгляд. Очень похоже, что делалось с учётом поддержки старых версий php
          Ответить
    • чего только не придумают, лишь бы жизнь не была сахарной = )
      Ответить
    • Как такое можно было придумать?
      Ответить
    • Говно в function_exists и том, что можно было написать return $x[$temp] - $y[$temp]; ?
      Ответить
      • Почитайте описание: "Этот код является PHP-заменой ORDER BY в MySQL"
        Ответить
        • А если рассматривать именно как замену, т.е. предположить, что ORDER BY нет? :)
          Ответить
          • Ну минусующие, комментируйте же :)
            Ответить
          • При работе с нормальной СУБД - не требуется таких вот сортировщиков...
            Ответить
            • И таки вы не ответили на мой вопрос. Что говено в этом коде, если брать его вне возможностей современных СУБД?
              Ответить
              • Давайте я напишу Вам код, в котором на коленке реализована функция printf, а данные хранятся в файликах, в собственном формате, а параметры запроса парсятся самодельным кодом из QUERY_STRING.
                И спрошу "что в этом коде плохого если брать его вне возможностей современных языков?"

                ORDER BY есть во ВСЕХ реляционных БД. В MySQL он ТОЧНО есть с 2001г (когда я впервые увидел мусю), и подозреваю что и до этого он там был.

                Так что странный у Вас аргумент.
                Давайте ще стандартную библиотеку си сами реализуем, HTTP сервер сами напишем итд
                Ответить
                • >> а данные хранятся в файликах, в собственном формате, а параметры запроса парсятся самодельным кодом из QUERY_STRING.
                  В этой системе есть и такой вариант БД велосипед. Не знаю, будет ли он интересен аудитории ГК...
                  Ответить
                • А давайте.
                  Ответить
                • > во ВСЕХ реляционных
                  к реляционности это никак не относится
                  и вообще, напоминаю, это - MySQL, разработанный чоткими пацанами, которые о ссылочной целостности ничего не слышали, и в итоге поделка стала условно называться реляционной СУБД только после покупки Ораклом

                  а поддержка предиката order by это такая же базовая основа как и where, как уже упоминали - 92 год XX века н.э.
                  Ответить
                  • да, правильнее было бы сказать "все базы, поддерживаюшие запросы на языке SQL".

                    А про пацанов -- согласен. С одной стороны они теряют простоту, ради которой делались, а с другой стороны до серьезных субд не дотягивают (достаточно плотно поработать с ms-sql например, что бы это понять) и получается ни то ни се.
                    как ооп в php:) не даром же есть абривиатура amp :)

                    но муська повсеместна, крос-платформенна и ее все более-ли-менее знают, и потому я ее часто использую.

                    ЗЫ:
                    Хотя стоит отметить что внешние ключи все таки у них есть. И купил их не оракл, а сан, а уже сан потом оракл )
                    Ответить
                    • в принципе, можно даже слово "базы" выпустить, ибо прослойки типа ODBC тоже могут подмножество SQL интерпретировать (конечно же с ORDER BY)

                      re: покупка и внешние ключи - вот где-то в процессе этого купи-продая в дистрибуцию и попало InnoDB, ранее бывшее сторонним кодом. соответственно можно теперь гордо написать что реляционная СУБД, non penis canina. а вот почему так не сделали в версии скажем 3.х - тут уже фактор волосатости, точно также как и в чуднóм мире PHP/FI
                      Ответить
                      • да, ODBC бывает и к CSV файлу, согласен:)

                        Почему не сделали -- понятно. Потому что "mysql это простая быстрая бд, а хочешь крутизны -- бери постгрю, которая всё на свете поддерживает уже цать лет" -- так тогда все говорили и думали.

                        Но потом муся почуяла денюшку, а что бы продаваться крупным корпорациям надо иметь красивые слова типа "поддержка тразакций".

                        При этом куча детских болезней в ней как была так и осталась
                        Ответить
          • Минусовать не буду, но скажу, что ORDER BY - это стандарт 92 года.
            А код здесь похоже такой, что автор не знал, что ORDER BY может принимать номер столбца.
            Ответить

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