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

    +158

    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
    function getAvailableFlights($source,$dest){
    
        $connection = initDB();
        $query2;       
    
        $query2 = "SELECT * FROM Sectors WHERE Sector='".$source."'";
        $result2 = mysql_query($query2);
            //or die ("Query Failed ".mysql_error());                
        $row2 = mysql_fetch_array($result2);
        $SourceSID = $row2['SID'];
    
        $query3 = "SELECT * FROM Sectors WHERE Sector='".$dest."'";
        $result3 = mysql_query($query3);
            // or die ("Query Failed ".mysql_error());                
        $row3 = mysql_fetch_array($result3);
        $destSID= $row3['SID'];
            
            //Get available flights
        $query3 = "SELECT * FROM Flights WHERE SourceSID='".$SourceSID."' AND DestSID='".$destSID."'";
        $result3 = mysql_query($query3);
            //  or die ("Query Failed ".mysql_error()); 
    
        $flightsArray;
        $flightsID=1;
    
        while($row = mysql_fetch_array($result3)){        
                $fName= $row['FName'];
                $flightsArray[$flightsID] = $fName;
                $flightsID = $flightsID +1;
            }
        closeDB($connection);
        return $flightsArray;
    }

    В NetBeans есть несколько примеров с проектами PHP. Один из них AirAlliance. весь код оттуда можно сюда запостить.
    ну вместо той херни что написана выше можно использовать один запрос MySql
    'select distinct f.FName
    from Flights f
    left join Sectors s on f.SourceSID=s.SID
    left join Sectors d on f.DestSID=d.SID
    where s.SID='.(int)$source.' or d.SID='.(int)$dest

    Запостил: duburlan, 21 Октября 2010

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

    • вместо where s.SID='.(int)$source.' or d.SID='.(int)$dest
      правильно будет where s.SID='.(int)$source.' and d.SID='.(int)$dest
      Ответить
    • > ".$dest."
      Каждый раз бесят неувязки, не знающие про интерполяцию переменных, тысячи их.
      Ответить
      • Вроде как конкатенация строк выполняется быстрее чем интерполяция, а использование строк заключенных в одинарные кавычки еще немного ускоряет процесс, ибо тогда нет необходимости проверять строку на наличие интерполированных переменных, хотя это все не очень большая экономия :)

        А еще лучше биндить переменные, по типу
        sqlexecute('select id,name from table where id=? and name=?',$id,'vasya');
        Ответить
        • Потому и бесит. Ты уж либо интерполяцию используй, либо одинарные кавычки, себе же плясок на шифте прибавляешь - так нет же... Хотя насчёт экономии согласен - если вдруг случилось, что узким местом производительности стали какие-то кавычки в исходниках, значит, ой как давно пора было что-то поменять - либо сервер, либо язык, либо свой подход к эксплуатации проекта.
          Ответить
          • >>если вдруг случилось, что узким местом производительности стали какие-то кавычки
            :)))))))))))))))))))
            Ответить
            • Значит все остальное уже оптимизировано )))
              Ответить
              • тут помница какие-то деятели решали что быстрее: "?><span>some text</span><?" или echo
                Ответить
                • eval("?>$template<?php"); - Joomla стайл
                  eval("$result = \"$template\";") - NetCat стайл
                  Ответить
    • $flightsID имеет мистический смысел )
      Ответить
      • это просто счетчик) во первых не нужный, во вторых еще и по логике названный неправильно.
        обычной школьник написал бы просто $flightsArray[] = $fName; без всяких $flightsID - но перед нами какой то "необычный школьник"))
        Ответить
    • Пример он на то и пример, чтоб показать, как нетбинс умеет что-то подсвечивать. Нэ?
      Ответить
      • к нетбинсу притензий никаких (я им сам пользуюсь и считаю его лучшим из ide). просто странно было увидеть такой код в примере. там есть еще один проект-пример Jobeet. вполне неплохой по качеству кода.
        ну а вот это чудо скорее всего позиционируется для "начинающих". так почему бы "начинающих" сразу не приучить к нормальному стилю. тем более для них что этот говнокод - что нормальный код - будет одинаково "сложен" в понимании в начале. короче я не могу найти ни одного внятного объяснения тому факту что сие убожество присутсвует в отличной ide в качестве примера.
        Ответить
        • >> и считаю его лучшим из ide)
          ого)
          Ответить
          • Мсье готов предложить лучшую альтернативу?
            Ответить
            • eclipse
              кто-то любит idea, я не разделяю этой любви )
              Ответить
              • после того, как идейные инспекции нашли мне запахи в коде, и предложили сделать автоматом сделать рефакторинг -- я проникся)
                Ответить
                • я впечатлен возможностями рефакторинга в эклипсе. Хотя, пожалуй, надо поглазеть, что там в Идее новенького.
                  а найти запахи в коде очень помогает парочка FindBugs + CodeMetrics.
                  Ответить
                  • помогает, угу)
                    если поставить на эклипс пару сотен плагинов -- то он станет почти такой же по функционалу, как идея)

                    попробуйте, серьезно) я юзаю идею не только для джавы, но и для html, css, js, и иже с ними)

                    ЗЫ: Это не регаклама
                    Ответить
                    • ну зачем пару сотен?
                      у меня 3 эклипса. Один для j2se (десктоп) проектов, в нем кроме упомянутого, плагины subclipse для svn, eclEmma для code coverage. Эклипс для j2ee обходится тем же. А эклипс для php содержит только свн-плугин. Так удается не нагружать лишними плагинами

                      а у вас идея комьюнити версия или приходится юзать полную платную?
                      Ответить
                      • для J2SE вполне хватает коммунити, для J2EE конечно ультмейт.

                        У идеи одна беда: по ней нету книги, потому 99% ее возможностей знают только ее разработчики и те, кто готов потратить вечер что бы разобраться. Никто не умеет пользоваться фасетами, например, или артифактами)
                        Ответить
                        • фасеты и артефакты, это замечательная вещь. Кстати,это, даже по сравнению с нетбинсом, в эклипсе хуже реализовано (
                          Ответить
            • просто впервые в жизни кто-то его любит)
              я удивился)

              мсье любит идею, да
              Ответить

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