Про PHP и базы данных

В который раз убеждаюсь, что изложение SQL в «непрофильных» книжках по всякому там PHP приводит разве что к бесконтрольному распространению похапешных кодеров.

Недавно наблюдал замечательное — из базы данных извлекаются все записи таблицы (SELECT * FROM foo.bar;), затем сортируются пузырьком (!) в PHP-скрипте (про usort() аффтар был не в курсе), а затем выводятся те из них, которые имеют значение некоторого числового поля, равное 0 и 1. Про существование WHERE и ORDER BY мега-похапешник был не в курсе.

Собственно, осуждать похапешника и обвинять того в быдлокодерстве не стоит — я и сам был таким, делал сайты на самописном подобии CMS. Все это даже работало — с посещаемостью два недочеловека в день и не такое работать будет. Впрочем, некое «оправдание» у меня есть — я «изучал» SQL и PHP по статьям в журнале «Мурзилка» «Ксакеп». С гордостью могу заявить, что никаким SQL Injection у меня никогда не пахло! Впрочем, больше ничего хорошего сказать нельзя. Чему можно научиться вот из такого?

$sql2="select * from xforum";
$res2=mysql_query($sql2);
$a=mysql_num_rows($res2); #считаем количество тем в форуме
$b=ceil($a/30); # считаем количество страниц с результатами запроса
echo "Страницы: "; for ($i=1; $i<=$b; $i++) {if ($i!=$page) {echo "<a href=forum.php?page=$i>";} echo "$i"; if ($i!=$page) {echo "</a>";} echo " ";}
# выводим в цикле список доступных страниц с сообщениями
$sql="select * from xforum order by 'pid' desc limit $from,29"; #запрос на постраничный вывод дискуссий форума
$res=mysql_query($sql);

Собственно, самые продвинутые похапешники, которые даже знают «классические» алгоритмы, могут не заморачиваться со вторым запросом, а, как я уже говорил, отсортировать все «пузырьком». А представляете, что творится, когда в таблице xforum хранятся не короткие заголовки тем, а что-то более содержательное?

Я не говорю про всякое сложное типа «нормальных форм», но почему-то большинство похапешников совершенно не представляют себе, что такое SQL и что он может. Самое главное — это не мешает им считать себя большими специалистами по базам данных (умеют написать UPDATE и SELECT). Не так давно видел «критику» одного популярного вордпрессовского плагина — человек немного потупил в код, переписал пару SQL-запросов, убрал «сортировку пузырьком» — и добился весьма существенного роста производительности.

И эти люди запрещают нам ковыряться в носу :)

UPD Все было еще круче! Сортировка пузырьком понадобилась ровно по той причине, что чел просто не разобрался, как использовать usort(). Интересно, а лет пятнадцать назад, такие же монстры писали на C?

Про PHP и базы данных: 3 комментария

  1. $res2=mysql_query($sql2);
    $a=mysql_num_rows($res2); #считаем количество тем в форуме
    -=====================-
    Теперь я понял, откуда берутся пейджинги, в которой на последней странице ничего нет.

    1. ну. Людей, которые способны правильно обработать границы диапазонов примерно 50% от тех, кто на уроках информатики в школе понимает тему «рекурсия». Это факт.

  2. 15 лет назад не было дешевого пива, и Тины Канделаки преподающей «Интернет» в РГГУ (пруфлинк: http://tikandelaki.livejournal.com/190547.html)

    А что PHP-то… Выкручиваемся как можем. Кого родные вузы выплевывают с теми и мучаемся.

    Между этим http://www.inweaverugs.com и вот этим http://www.armourup.com/ у человека промежуток меньше года. Первое — именно то самое причем 4 месяца работы. Второе — полноценные тестюниты, профайлинг, на все про все 4 недели.

    Когда ко мне пришел на вопрос «как реализуется отношение многие ко многим» отвечал вначале «у меня пять по базам данных», а потом «я знаю, что на MySQL это делается с помощью оператора JOIN».

    Другой перец цикл с шагом два реализовал вот таким образм for ($i=0;$i<n;$i++){if ($i % 2 ==0) …}

    Причем парни не сильно глупые и реально трудяги — работать 10 часов в сутки — легко. Их бы в нормальное ПТУ года на три, чтобы тупо натаскать на стандартные решения стандартными инструментами — цены б не было.

    Кто пожирнее вообще автономизируются:
    http://www.appliedtech.ru/?category=training

    Спасибо бесконечное добрым американцам, которые все это финансируют.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *