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

    +173

    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
    //Такую штуку можно встретить на большинстве страниц раз по 5
    $lrow = mysql_query("select title,sendn,sende,notifs,
              nmails,nmails1,nmails2,nmails3,nmails4,nmails5,nmails6,nmails7,nmails8,nmails9,nmails10,
              nmails11,nmails12,nmails13,nmails14,nmails15,nmails16,nmails17,nmails18,nmails19,nmails20,
              nmails21,nmails22,nmails23,nmails24,nmails25,nmails26,nmails27,nmails28,nmails29,nmails30,
              nmails31,nmails32,nmails33,nmails34,nmails35,nmails36,nmails37,nmails38,nmails39,nmails40,
              cont,cont1,cont2,cont3,cont4,cont5,cont6,cont7,cont8,cont9,cont10,
              cont11,cont12,cont13,cont14,cont15,cont16,cont17,cont18,cont19,cont20,
              cont21,cont22,cont23,cont24,cont25,cont26,cont27,cont28,cont29,cont30,
              cont31,cont32,cont33,cont34,cont35,cont36,cont37,cont38,cont39,cont40,
              texts,texts1,texts2,texts3,texts4,texts5,texts6,texts7,texts8,texts9,texts10,
              texts11,texts12,texts13,texts14,texts15,texts16,texts17,texts18,texts19,texts20,
              texts21,texts22,texts23,texts24,texts25,texts26,texts27,texts28,texts29,texts30,
              texts31,texts32,texts33,texts34,texts35,texts36,texts37,texts38,texts39,texts40 from $ltable where listnum = '$ulist'",$link) or die('admin-37-'.mysql_error());
      list($ltitle,$sendn,$sende,$notifs,
              $nmails,$nmails1,$nmails2,$nmails3,$nmails4,$nmails5,$nmails6,$nmails7,$nmails8,$nmails9,$nmails10,
              $nmails11,$nmails12,$nmails13,$nmails14,$nmails15,$nmails16,$nmails17,$nmails18,$nmails19,$nmails20,
              $nmails21,$nmails22,$nmails23,$nmails24,$nmails25,$nmails26,$nmails27,$nmails28,$nmails29,$nmails30,
              $nmails31,$nmails32,$nmails33,$nmails34,$nmails35,$nmails36,$nmails37,$nmails38,$nmails39,$nmails40,
              $cont,$cont1,$cont2,$cont3,$cont4,$cont5,$cont6,$cont7,$cont8,$cont9,$cont10,
              $cont11,$cont12,$cont13,$cont14,$cont15,$cont16,$cont17,$cont18,$cont19,$cont20,
              $cont21,$cont22,$cont23,$cont24,$cont25,$cont26,$cont27,$cont28,$cont29,$cont30,
              $cont31,$cont32,$cont33,$cont34,$cont35,$cont36,$cont37,$cont38,$cont39,$cont40,
              $texts,$texts1,$texts2,$texts3,$texts4,$texts5,$texts6,$texts7,$texts8,$texts9,$texts10,
              $texts11,$texts12,$texts13,$texts14,$texts15,$texts16,$texts17,$texts18,$texts19,$texts20,
              $texts21,$texts22,$texts23,$texts24,$texts25,$texts26,$texts27,$texts28,$texts29,$texts30,
              $texts31,$texts32,$texts33,$texts34,$texts35,$texts36,$texts37,$texts38,$texts39,$texts40)=mysql_fetch_row($lrow);
    
    // Это вывод строк, полученных выше
    echo "
    <br>
     <input type=text class=xbox name=tnmails1 value=\"".htmlspecialchars($nmails1)."\" size=61 style=\"width: 150px\">";
    
     $res1 = mysql_query ("SELECT subject,content FROM lm_saved");
     $myrow1 = mysql_fetch_array ($res1);
     echo "<select name=tncont1 style='width:150px'>";
     if($tncont1){
     	echo "<option selected>$tncont1</option>";
    	$rrr1 = mysql_query("SELECT content from lm_saved where subject='$tncont1'");
    	$rrrrow1 = mysql_fetch_array ($rrr1);
    	mysql_query ("UPDATE lm_lists SET texts1='$rrrrow1[content]' WHERE listnum='$list'"); }
    		else {echo "<option selected>".htmlspecialchars($cont1)."</option>";}
    		do { echo "<option value='$myrow1[subject]'>$myrow1[subject]</option>";}
    		while ($myrow1 = mysql_fetch_array ($res1));
    		echo "</select>";
    getUserFieldsList($ltable,$list, 2);
     
    // И так еще раз 39 ...

    Дали задание "добавить еще 20 полей в программе". Похоже автор сеиго не подозревал об fetch_assoc и циклах. Каждая страница этой "программы" включает в себя css + html + js. Самое обидное, что сделать как надо - потратить пару месяцев, посему приходиться делать тоже самое тупым копипастом. Впервые в жизни меня реально тошнило от правки кода.

    Запостил: index0h, 17 Мая 2011

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

    • o_O
      Ответить
    • > меня тошнит
      Тебя тошнит, а меня выворачивает наизнанку от такого кода.
      Ответить
    • а не пробовали БД как-то лучше проектировать? что за хуева туча полей?

      > меня реально ташнило от правки кода
      правки??????
      Ответить
      • Да, правки. То что я тут наговнокодил - начальный исходник.
        Ответить
    • ох уж этот пхп
      ... die('admin  ...
      Ответить
    • Пару месяцев ? Ты не перепутал с пару дней работая в симфони ?
      Ответить
      • Первый разработчик видимо вообще не имеет представления об фреймворках и разделении кода на логическую и визуальную части. Каждый скрипт включает инъекции html/css (через <style>)/js, а так же включенный файлик config.php с настройками доступа к mysql.
        Ответить
    • > class=xbox
      !!
      и вообще, код написан в таком дурном тоне, что если по-хорошему, то надо рефакторить с чистого листа
      Ответить
      • рефакторить чистый лист это как?
        Ответить
        • открыть новый файл, и пишем код с нуля, в нужные моменты подглядывая в старый код, что бы не терять удачные фрагменты. То есть, это и не правка старого кода, и не совсем с нуля
          Ответить
          • Чаще всего переписать вообще с нуля - гораздо лучше и идеологически правильней.
            Ответить
            • ну я на своем опыте убедился, что старый код не всегда плох на 100%, а некоторые куски достаточно удачны, что бы их не выдумывать снова
              Ответить
          • И вот тут проблема: надо научиться подглядывать в старый код в правильные моменты времени, чтобы вытаскивать именно удачные фрагменты.
            Ответить
            • алгоритм такой:
              0. Изучаем старый код: мы понимаем, что написали плохо, и настолько плохо, что просто рефакторинг не поможет - например, выбрана неудачная архитектура или неправильные инструменты
              1. продумываем новый алгоритм, имея ввиду возможность повтора этого шага, стараясь с минимальными затратами.
              2. сравниваем, чем не угождает старый код новым принципам, отмечаем места, которые потенциально будут пригодны
              3. создаем новую ветку и пишем новый код по принципам шага 1, не забываем копипастить удачные куски (обычно то там то сям не более одного экрана) старый код, но не поддаваясь искушению полениться и кое-где ляпнуть кусок старого говна.

              получается не всегда идеально, но с опытом получается лучше и лучше. Может получиться и хуже, если сфейлили на последней фразе последнего шага.
              Ответить
            • Не нужно, вы уже разработчик.
              Ответить
    • Было дело правил нечто подобное, там была куча страниц в каждой из которых копипастился один и тот же код для какого-то там блочка, так была даже мысль написать парсер который бы вынес одинаковые кусочки в отдельный файл и заинклудил его в каждой файле
      Ответить
    • А почему в кавычках только value и style? Шизофрения.
      Ответить
      • Должно быть всё в кавычках, но поскольку остальные атрибуты не содержат пробелов, и так работает.
        Ответить
        • Кавычки нужны при цитировании Некрасова, во всех иных случаях можно обойтись точкой с запятой.
          Ответить
    • вшу
      die
      Ответить
    • Зачем ему база данных, если он ее всю переписал в коде???
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

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