PHP в деталях

       

Как делать неправильно


Например, вот так:

$res1 = mysql_query("SELECT id, name FROM rubs");

while ($row = mysql_fetch_row($res1))

$rub[$row[0]] = $row[1];

Из запроса получены имена рубрик и записаны в массив $rub.

$res2 = mysql_query("SELECT id, url, name, rub FROM sites WHERE какое-то-там-условие");

while ($row = mysql_fetch_array($res2)) {

  echo "<a href=", $row["url"], ">", $row["name"], "</a>";

  echo "(рубрика <a href=rub.phtml?id=", $row["id"], ">";

  echo $rub[$row["rub"]], "</a><br>";

  };

Теперь выбираются новости, и вместо выбранного номера рубрики вставляем соответствующий элемент массива рубрик.

На самом деле, можно избавить себя от необходимости тащить сквозь всю программу этот массив $rub (а если у нас к рубрикам обращаются функции - что, через GLOBAL брать?), от возможности ошибиться с $rub[$row["rub"]] - если на странице несколько подобных запросов, то сделать опечатку где-нибудь легко.

Кроме того, под массив $rub требуется некоторый объем памяти (а если рубрик много?). В третьей версии PHP такой скрипт будет выполняться дольше, чем при использовании объединений таблиц, потому что он интерпретирует программу построчно при выполнении (в отличие от 4-го, который компилирует программу и только потом выполняет).



Содержание раздела