<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-418130391596426958</id><updated>2012-02-16T01:58:41.429-08:00</updated><category term='MYSQL'/><category term='ХУП'/><category term='самодельный блог'/><category term='GEN_FUNC'/><category term='php'/><category term='check'/><category term='EMYSQL'/><category term='DEBUG'/><category term='Ярлыки блога'/><category term='index.php'/><category term='CRYPT'/><category term='MY_DEBUG'/><category term='документирование'/><category term='PHPDocumentor'/><category term='планы'/><category term='TBASE_EMYSQL'/><category term='BASE_CHECK'/><category term='SS_BLOGTAG'/><category term='CYR_UTF8'/><category term='HTML_CONV'/><category term='Обновления'/><category term='docphp'/><category term='HUP'/><category term='UNEXPECTED_DATA'/><category term='таблицы блога'/><category term='напоминалки'/><category term='Блог по шагам'/><category term='реорганизация'/><category term='даты'/><category term='общие функции'/><category term='программирование'/><title type='text'>Заметки программиста</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.php-classes.ru/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default?start-index=26&amp;max-results=25'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-8836509712319291837</id><published>2011-07-28T02:38:00.000-07:00</published><updated>2011-07-28T02:40:23.024-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='EMYSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Новый метод (очистка мультизапроса) вызвал неожиданные трудности</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div&gt;Оказалось, что крайне полезный метод &lt;b&gt;clear_multiresult($result)&lt;/b&gt;, о котором было написано &lt;a href="http://www.php-classes.ru/2011/07/emysql.html"&gt;здесь&lt;/a&gt;, не работает.&amp;nbsp; &lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Поиск проблемы был трудный и интересный. Не могу не написать об этом.&lt;br /&gt;&lt;br /&gt;Как известно (из документации), метод &lt;b&gt;$mysqli-&amp;gt;multi_query()&lt;/b&gt; создает в процессе выполнения набор результатов по одному для каждого запроса, входящего в мультизапрос.&lt;br /&gt;&lt;br /&gt;Для того, чтобы эти запросы вытаскивать на свет Божий и обрабатывать существуют 3 замечательных метода:&lt;br /&gt;&lt;ul style="color: black; text-align: left;"&gt;&lt;li&gt;$mysqli-&amp;gt;store_result()&lt;/li&gt;&lt;li&gt;$mysqli-&amp;gt;next_result()&lt;/li&gt;&lt;li&gt;$mysqli-&amp;gt;more_results()&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black;"&gt;Кому интересны подробности - прошу обратиться к документации.&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;Скажу только, что загвоздка оказалась в методе &lt;b&gt;$mysqli-&amp;gt;next_result()&lt;/b&gt;.&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;Предположим, у нас есть мультизапрос, состоящий из 4-х запросов. Причем в третьем запросе ошибка. Тогда мы будем действовать&amp;nbsp; следующим образом.&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Выполним &lt;b&gt;$mysqli-&amp;gt;store_result()&lt;/b&gt;. Этим мы вытащим из недр API результат первого запроса.&lt;/li&gt;&lt;li&gt;Обработали результат и удалили его.&lt;/li&gt;&lt;li&gt;Выполняем подготовку второго запроса методом&amp;nbsp; &lt;b&gt;$mysqli-&amp;gt;next_result()&lt;/b&gt;. При этом метод вернет &lt;b&gt;TRUE&lt;/b&gt;, что и ожидалось.&lt;/li&gt;&lt;li&gt;Выполним &lt;b&gt;$mysqli-&amp;gt;store_result()&lt;/b&gt;. Этим мы вытащим из недр API результат второго запроса.&lt;/li&gt;&lt;li&gt;Обработали результат и удалили его. &lt;/li&gt;&lt;li&gt;Выполняем подготовку третьего запроса методом&amp;nbsp; &lt;b&gt;$mysqli-&amp;gt;next_result()&lt;/b&gt;. При этом метод вернет &lt;b&gt;FALSE&lt;/b&gt;, &lt;b&gt;&lt;span style="color: red;"&gt;что абсолютно не ожидалось&lt;/span&gt;&lt;/b&gt;. При этом в документации черным по белому написано, что метод возвращает истину, если метод выполнился удачно, и ложь, если операция потерпела неудачу. Какая же тут неудача? Все вполне удачно, поскольку если не обращать внимания на возвращаемое значение метода, ошибочный результат все-таки подготавливается и можно двигаться дальше, то есть проверять на ошибки и тд и тп.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Не обращаем внимания на возвращаемое значение&lt;/span&gt;&lt;/b&gt; и выполняем &lt;b&gt;$mysqli-&amp;gt;store_result()&lt;/b&gt;. Этим мы вытащим из недр API результат второго запроса.&lt;/li&gt;&lt;li&gt;Обработали результат, то есть проверили его на ошибки, выявили ошибку и выполнили &lt;b&gt;my_exit()&lt;/b&gt;; &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;А как же проверять тот факт, что результаты кончились? Конечно методом &lt;b&gt;$mysqli-&amp;gt;more_results()&lt;/b&gt;. Он для этого и создан.&lt;br /&gt;&lt;div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-8836509712319291837?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/8836509712319291837/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_28.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8836509712319291837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8836509712319291837'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_28.html' title='Новый метод (очистка мультизапроса) вызвал неожиданные трудности'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-3571855552951265251</id><published>2011-07-12T04:17:00.000-07:00</published><updated>2011-07-12T04:17:30.019-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='EMYSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Новый метод в классе EMYSQL</title><content type='html'>Класс &lt;b&gt;EMYSQL&lt;/b&gt; позволяет выполнять мультизапросы. Это такая строка, которая состоит из нескольких запросов &lt;b&gt;MYSQL&lt;/b&gt;, разделенными точкой с запятой.&lt;br /&gt;После такого запроса в недрах &lt;b&gt;MySQL&lt;/b&gt; рождается результат, состоящий из результатов каждого запроса, входящего в мультизапрос. Даже если мультизапрос состоял из запросов, которые не должны возвращать результат, результат все равно будет не пуст. Нужно очистить этот результат, обратившись к каждому результату по отдельности.&lt;br /&gt;Добавлен метод &lt;b&gt;clear_multiresult($result)&lt;/b&gt;, который очищает результат мультизапроса, точнее все результаты запросов, входящих в мультизапрос.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-3571855552951265251?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/3571855552951265251/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/emysql.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/3571855552951265251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/3571855552951265251'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/emysql.html' title='Новый метод в классе EMYSQL'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-6526423284298532063</id><published>2011-07-12T00:06:00.000-07:00</published><updated>2011-07-12T04:26:10.194-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='документирование'/><category scheme='http://www.blogger.com/atom/ns#' term='docphp'/><title type='text'>Временная таблица имен файлов для парсинга</title><content type='html'>&lt;code class="sql"&gt;&lt;span class="syntax"&gt;&lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;CREATE TABLE IF NOT EXISTS `tbl_parsefile` (&lt;br /&gt;&amp;nbsp; `parsefile_id` int(6) NOT NULL AUTO_INCREMENT COMMENT 'Первичный ключ',&lt;br /&gt;&amp;nbsp; `parsefile_file` varchar(250) NOT NULL DEFAULT '' COMMENT 'Имя файла с путем',&lt;br /&gt;&amp;nbsp; `parsefile_code` tinyint(2) NOT NULL DEFAULT '0' COMMENT 'Числовая категория файла',&lt;br /&gt;&amp;nbsp; `parsefile_tcode` varchar(20) NOT NULL COMMENT 'Текстовая категория файла',&lt;br /&gt;&amp;nbsp; PRIMARY KEY (`parsefile_id`)&lt;br /&gt;) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Временная таблица файлов для парсинга' AUTO_INCREMENT=1 ;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code class="sql"&gt;&lt;span class="syntax"&gt;&lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_queryend"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code class="sql"&gt;&lt;span class="syntax"&gt;&lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;Коды:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code class="sql"&gt;&lt;span class="syntax"&gt;&lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;1 (SS_TABUPLOAD::PACKAGE_PAGE) - файл проекта. tcode - название проекта&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code class="sql"&gt;&lt;span class="syntax"&gt;&lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;2 (SS_TABUPLOAD::FILE_PAGE) - файл файла проекта. tcode - название файла&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code class="sql"&gt;&lt;span class="syntax"&gt;&lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-6526423284298532063?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/6526423284298532063/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_12.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/6526423284298532063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/6526423284298532063'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_12.html' title='Временная таблица имен файлов для парсинга'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-8741143491672684868</id><published>2011-07-11T23:53:00.000-07:00</published><updated>2011-07-11T23:53:03.072-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='документирование'/><category scheme='http://www.blogger.com/atom/ns#' term='docphp'/><title type='text'>Таблица для учета подпроектов (категорий)</title><content type='html'>--&lt;br /&gt;-- Структура таблицы `tbl_subpack`&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;CREATE TABLE IF NOT EXISTS `tbl_subpack` (&lt;br /&gt;&amp;nbsp; `subpack_id` int(6) NOT NULL AUTO_INCREMENT COMMENT 'Первичный ключ',&lt;br /&gt;&amp;nbsp; `subpack_pack` int(6) NOT NULL COMMENT 'Ссылка на package',&lt;br /&gt;&amp;nbsp; `subpack_name` varchar(30) NOT NULL DEFAULT '' COMMENT 'Название категории',&lt;br /&gt;&amp;nbsp; `subpack_longdescr` text NOT NULL COMMENT 'Длинное описание категории',&lt;br /&gt;&amp;nbsp; PRIMARY KEY (`subpack_id`)&lt;br /&gt;) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Категории каждого проекта' AUTO_INCREMENT=1 ;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-8741143491672684868?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/8741143491672684868/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_366.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8741143491672684868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8741143491672684868'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_366.html' title='Таблица для учета подпроектов (категорий)'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-6601508424791889540</id><published>2011-07-11T23:50:00.000-07:00</published><updated>2011-07-11T23:51:40.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='документирование'/><category scheme='http://www.blogger.com/atom/ns#' term='docphp'/><title type='text'>Таблица для учета проектов</title><content type='html'>--&lt;br /&gt;-- Структура таблицы `tbl_pack`&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;CREATE TABLE IF NOT EXISTS `tbl_pack` (&lt;br /&gt;&amp;nbsp; `pack_id` int(6) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Первичный ключ',&lt;br /&gt;&amp;nbsp; `pack_name` varchar(50) NOT NULL COMMENT 'Название проекта (documentor)',&lt;br /&gt;&amp;nbsp; `pack_descr` varchar(50) NOT NULL COMMENT 'Более длинное название проекта (русский язык)',&lt;br /&gt;&amp;nbsp; `pack_npp` int(6) unsigned NOT NULL DEFAULT '0' COMMENT 'Номер для сортировки (для будущих версий)',&lt;br /&gt;&amp;nbsp; `pack_longdescr` text NOT NULL COMMENT 'Длинное HTML описание проекта',&lt;br /&gt;&amp;nbsp; PRIMARY KEY (`pack_id`),&lt;br /&gt;&amp;nbsp; KEY `pack_npp` (`pack_npp`)&lt;br /&gt;) ENGINE=MyISAM&amp;nbsp; DEFAULT CHARSET=cp1251 COMMENT='Проекты php (packages)' AUTO_INCREMENT=5 ;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-6601508424791889540?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/6601508424791889540/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_6776.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/6601508424791889540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/6601508424791889540'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_6776.html' title='Таблица для учета проектов'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-2378178420672867042</id><published>2011-07-11T22:50:00.000-07:00</published><updated>2011-07-11T22:50:28.664-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRYPT'/><category scheme='http://www.blogger.com/atom/ns#' term='HUP'/><category scheme='http://www.blogger.com/atom/ns#' term='EMYSQL'/><title type='text'>Изменения в плане обработки ошибочных ситуаций</title><content type='html'>При здравом взгляде, оказалось, что практически все ошибки, который возникают в классах &lt;b&gt;EMYSQL&lt;/b&gt;, &lt;b&gt;HUP&lt;/b&gt; и &lt;b&gt;CRYPT&lt;/b&gt; являются фатальными и нет никакого смысла при их возникновении продолжать работу скрипта. Поэтому вместо того, чтобы запоминать код ошибки в свойстве $err_no, громное большинство таких ошибок заменены на вызов функции &lt;b&gt;my_exit()&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-2378178420672867042?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/2378178420672867042/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_11.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/2378178420672867042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/2378178420672867042'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post_11.html' title='Изменения в плане обработки ошибочных ситуаций'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-554130144195706194</id><published>2011-07-10T00:57:00.000-07:00</published><updated>2011-07-10T00:57:05.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BASE_CHECK'/><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='check'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Новое свойство $hup_common в классе BASE_CHECK</title><content type='html'>Введено новое &lt;b&gt;$hup_commo&lt;/b&gt;n свойство в классе &lt;b&gt;BASE_CHECK&lt;/b&gt;. &lt;br /&gt;Изменен текст метода &lt;b&gt;set_unexpected()&lt;/b&gt; в классе &lt;b&gt;BASE_CHECK&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;Подробности &lt;a href="http://www.php-classes.ru/2011/07/check.html"&gt;здесь&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-554130144195706194?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/554130144195706194/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/hupcommon-basecheck.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/554130144195706194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/554130144195706194'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/hupcommon-basecheck.html' title='Новое свойство $hup_common в классе BASE_CHECK'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-1352432615272772882</id><published>2011-07-10T00:18:00.000-07:00</published><updated>2011-07-10T00:18:01.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='UNEXPECTED_DATA'/><category scheme='http://www.blogger.com/atom/ns#' term='check'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Проблемка в проекте check</title><content type='html'>Следующая проблемка возникла в проекте check.&lt;br /&gt;Дело в том, что сам по себе проект check не работает с базой данных. Это ему как бы не нужно. Он просто проверяет и преобразует к безопасному виду все параметры, получаемые страницей. Но в проекте, а это целая гроздь классов, работающих совместно, есть, все-таки, одна паршивая овца, которая использует базу данных. Это класс&lt;b&gt; UNEXPECTED_DATA&lt;/b&gt;, который записывает все события по появлению во входных параметрах неожиданных данных в базу данных.&lt;br /&gt;&lt;br /&gt;В свою очередь класс &lt;b&gt;UNEXPECTED_DATA&lt;/b&gt; создан на основе класса &lt;b&gt;TBASE_EMYSQL&lt;/b&gt; и поэтому ему нужен для работы с базой данных номер хупа. Номер этот ему взять неоткуда, поскольку сам класс &lt;b&gt;UNEXPECTED_DATA&lt;/b&gt; является служебным, вызывается из недр проекта и задать ему номер хупа мы можем только через процесс переопределения метода &lt;b&gt;set_unexpected()&lt;/b&gt; класса &lt;b&gt;BASE_CHECK&lt;/b&gt; или его наследника. С другой стороны, городить для такой пустяковой задачи, как задание номера хупа, целый метод - просто не хочется. Кроме того, нам придется городить новый класс &lt;b&gt;CHECK&lt;/b&gt; (наследник &lt;b&gt;BASE_CHECK&lt;/b&gt;) для каждого нового хупа. Это не правильно!&lt;br /&gt;&lt;br /&gt;В связи с этим делаем специальное свойство, которое будет принадлежать классу &lt;b&gt;BASE_CHECK&lt;/b&gt; и будет содержать номер хупа. По умолчанию это будет единица. Эту единицу можно будет поменять на что угодно сразу после строчки создания объекта наследника класса &lt;b&gt;BASE_CHECK&lt;/b&gt;, назовем его &lt;b&gt;SOME_CHECK&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Назовем это свойство ... ну не знаю .... &lt;b&gt;&lt;span style="color: red;"&gt;$hup_common&lt;/span&gt;&lt;/b&gt;, например. По возможности будем использовать это имя для всех свойств, содержащих номер хупа общий для проекта (грозди) классов.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-1352432615272772882?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/1352432615272772882/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/check.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/1352432615272772882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/1352432615272772882'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/check.html' title='Проблемка в проекте check'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-5876539871633405866</id><published>2011-07-09T23:55:00.000-07:00</published><updated>2011-07-10T01:17:23.473-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MY_DEBUG'/><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='DEBUG'/><title type='text'>Идея с включением волшебных констант не сработала</title><content type='html'>Идея с включением волшебных констант не сработала!&lt;br /&gt;&lt;br /&gt;Поспешил я с ней! Думать иногда надо! Константы выдаются правильно. Так, например, константа&amp;nbsp; __FILE__&amp;nbsp; когда происходит ошибка всегда содержит значение "DEBUG.php"&lt;br /&gt;&lt;br /&gt;И я ведь уже наступал на эти грабли и не раз!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-5876539871633405866?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/5876539871633405866/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/5876539871633405866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/5876539871633405866'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/07/blog-post.html' title='Идея с включением волшебных констант не сработала'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-1853099259876044556</id><published>2011-06-28T21:57:00.000-07:00</published><updated>2011-07-09T23:56:17.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MY_DEBUG'/><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='DEBUG'/><title type='text'>Дополнения в выводе отладочной информации</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;В вывод отладочной информации любого уровня введен вывод волшебных констант:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;__FILE__&lt;/li&gt;&lt;li&gt;__CLASS__&lt;/li&gt;&lt;li&gt;__LINE__&lt;/li&gt;&lt;li&gt;__FUNCTION__&lt;/li&gt;&lt;li&gt;__METHOD__&lt;/li&gt;&lt;/ul&gt;Изменения можно будет увидеть в исходном коде после очередного &lt;a href="http://www.php-classes.ru/search/label/%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F"&gt;обновления документации&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-1853099259876044556?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/1853099259876044556/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post_6601.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/1853099259876044556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/1853099259876044556'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post_6601.html' title='Дополнения в выводе отладочной информации'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-4379346409383243025</id><published>2011-06-28T00:38:00.000-07:00</published><updated>2011-06-28T00:38:23.501-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MY_DEBUG'/><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='DEBUG'/><title type='text'>Создание класса MY_DEBUG и строгая функция my_exit_strict()</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Появилась необходимость в создании функции my_exit_strict(), которая гарантированно не выводила бы информацию на экран ни в каком случае.&lt;br /&gt;&lt;br /&gt;Для этого в файле DEBUG.php был создан небольшой сервисный класс MY_DEBUG. Все функции модуля стали использовать этот класс для своей работы.&lt;br /&gt;&lt;br /&gt;Старые проекты переделывать не нужно.&lt;br /&gt;&lt;br /&gt;Класс обновится в разделе документации после очередного обновления&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-4379346409383243025?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/4379346409383243025/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/06/mydebug-myexitstrict.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/4379346409383243025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/4379346409383243025'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/06/mydebug-myexitstrict.html' title='Создание класса MY_DEBUG и строгая функция my_exit_strict()'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-8769881946487579563</id><published>2011-06-28T00:33:00.000-07:00</published><updated>2011-06-28T00:33:59.782-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='EMYSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Изменение вывода отладочной информации</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Когда по той или иной причине не срабатывает хуп, класс NEW_EMYSQL или по какой-нибудь еще, у нас вылетает сообщение "Не смогли соединиться с базой такой-то" и все.&lt;br /&gt;&lt;br /&gt;Для отладки этого мало.&lt;br /&gt;&lt;br /&gt;В метод open_bases($hup) было внесено изменение, при котором выводится вся инфа по подключенной базе данных, включая пароль.&lt;br /&gt;&lt;br /&gt;Это секретная информация. Чтобы она не попала в чужие руки, были внесены изменения в модуль DEBUG. Была в частности сделана дополнительная функция my_exit_strict(), которая гарантированно не выводит отладочную информацию на экран.&lt;br /&gt;&lt;br /&gt;Изменения в документации будут отражены после очередного обновления.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-8769881946487579563?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/8769881946487579563/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post_28.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8769881946487579563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8769881946487579563'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post_28.html' title='Изменение вывода отладочной информации'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-8431700901508613455</id><published>2011-06-24T03:03:00.000-07:00</published><updated>2011-06-24T03:27:14.878-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='TBASE_EMYSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='напоминалки'/><title type='text'>Выполнение мультизапроса с очисткой результатов</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class = "preamble_div"&gt;        Этот фрагмент кода выполняется в классе - наследнике TBASE_EMYSQL&lt;/div&gt;&lt;div class="subtitle_div"&gt;        Код:&lt;/div&gt;&lt;div class="phpcode_div"&gt;      &lt;code&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #0000BB"&gt;&amp;lt;?php&lt;br /&gt;$result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;multi_query&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$cSql&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//&amp;nbsp;Проверим&amp;nbsp;все&amp;nbsp;результаты&amp;nbsp;операций&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;1&lt;/span&gt;&lt;span style="color: #007700"&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//&amp;nbsp;Счетчик&amp;nbsp;запросов&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;do&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;/*&amp;nbsp;Запомним&amp;nbsp;очередной&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;store_result&lt;/span&gt;&lt;span style="color: #007700"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;/*&amp;nbsp;Нас&amp;nbsp;интересуют&amp;nbsp;только&amp;nbsp;ошибки&amp;nbsp;и&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;уничтожение&amp;nbsp;результатов&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;if&amp;nbsp;(!&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;/*&amp;nbsp;Даже&amp;nbsp;в&amp;nbsp;этом&amp;nbsp;случае&amp;nbsp;запрос&amp;nbsp;мог&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;выполниться&amp;nbsp;без&amp;nbsp;ошибок.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Просто&amp;nbsp;результата&amp;nbsp;могло&amp;nbsp;не&amp;nbsp;быть.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Надо&amp;nbsp;проверить&amp;nbsp;дополнительно&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;errno&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;0&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;my_exit&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;''&lt;/span&gt;&lt;span style="color: #007700"&gt;,&lt;/span&gt;&lt;span style="color: #DD0000"&gt;"Ошибка&amp;nbsp;в&amp;nbsp;запросе&amp;nbsp;#&amp;nbsp;$count!&amp;lt;br&amp;gt;$cSql&amp;lt;br&amp;gt;{$this-&amp;gt;link_id-&amp;gt;error}"&lt;/span&gt;&lt;span style="color: #007700"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$affected&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;affected_rows&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;close&lt;/span&gt;&lt;span style="color: #007700"&gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//&amp;nbsp;Если&amp;nbsp;ошибок&amp;nbsp;не&amp;nbsp;было&amp;nbsp;-&amp;nbsp;уничтожим&amp;nbsp;запрос&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$count&lt;/span&gt;&lt;span style="color: #007700"&gt;++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;while&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;next_result&lt;/span&gt;&lt;span style="color: #007700"&gt;());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;my_exit&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;''&lt;/span&gt;&lt;span style="color: #007700"&gt;,&lt;/span&gt;&lt;span style="color: #DD0000"&gt;"Ошибка&amp;nbsp;в&amp;nbsp;запросе&amp;nbsp;№&amp;nbsp;1!&amp;lt;br&amp;gt;$cSql&amp;lt;br&amp;gt;{$this-&amp;gt;link_id-&amp;gt;error}"&lt;/span&gt;&lt;span style="color: #007700"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-8431700901508613455?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/8431700901508613455/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post_3103.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8431700901508613455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8431700901508613455'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post_3103.html' title='Выполнение мультизапроса с очисткой результатов'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-8576292399923763275</id><published>2011-06-24T01:17:00.000-07:00</published><updated>2011-07-10T01:16:02.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='документирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Обновления'/><title type='text'>Очередное обновление документации</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Произошло очередное обновление документации классов&lt;br /&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Добавлен класс CYR_UTF8&amp;nbsp;&lt;/li&gt;&lt;li&gt;Начал реорганизацию проектов, как предполагал ранее. К счастью, родительские классы, принадлежащие другими проектами не пропали. С другой стороны индексные страницы стали меньше по весу и размеру.&lt;/li&gt;&lt;/ol&gt;Похоже, реорганизацию следует продолжать. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-8576292399923763275?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/8576292399923763275/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post_24.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8576292399923763275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/8576292399923763275'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post_24.html' title='Очередное обновление документации'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-9149409194565299746</id><published>2011-06-24T00:30:00.000-07:00</published><updated>2011-06-24T00:35:08.513-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='CYR_UTF8'/><title type='text'>Конвертер UTF-8 &lt;-&gt; WIN-1251</title><content type='html'>&lt;p&gt;При желании сконвертировать текст из UTF-8 в win-1251 обычно сталкиваешься с трудностями. Пришлось сделать свой конвертер, и в процессе его производства выяснились некоторые причины трудностей конвертирования. В качестве предисловия хочу изложить эти причины, поскольку они довольно прикольные.&lt;/p&gt;&lt;p&gt;Судите сами.&lt;/p&gt;&lt;p&gt;Известен состав кодировки win-1251. Ее можно посмотреть здесь:&lt;a href="http://ru.wikipedia.org/wiki/Windows-1251" title=""&gt;http://ru.wikipedia.org/wiki/Windows-1251&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;В UTF-8 за кириллицей закреплено пространство кодов с 0x400 по 0x4FF. (&lt;a href="http://www.utf8-chartable.de/unicode-utf8-table.pl" title=""&gt;http://www.utf8-chartable.de/unicode-utf8-table.pl&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;При анализе этих двух замечательных таблиц можно сделать следующие выводы.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Русские буквы с "А" до "я" идут одним куском как в одной кодировке, так и в другой. Это хорошо, поскольку мы можем не проверять символы побайтно, а пользоваться диапазоном адресов. Но вот неудача! &lt;li&gt;Буквы "Ё" и "ё" идут совершенно отдельно. Их придется и обрабатывать отдельно. &lt;li&gt;Других более или менее полезных символов в кириллической части кодировок нет. Только один. Знак номера "№". И вот тут долгожданный прикол. Этого символа НЕТ в кириллической части UTF-8. Он совсем в другом месте - в разделе редких знаков пунктуации и кодируется 3-мя байтами. &lt;/ul&gt;Вот это сюрприз из сюрпризов (в последнем пункте), ибо либо мы не заморачиваемся на знак номера, либо конвертер у нас здорово усложняется, поскольку нам придется не ограничиваться теми символами, которые кодируются одним и двумя символами, но рассматривать так же возможность появления в нашем тексте трех-байтных знаков. Ну а где 3 там и 4. Так что из-за одного символа пришлось делать полный конвертер со всеми возможными проверками, поскольку плевать на такой хороший знак мне не хотелось.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-9149409194565299746?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/9149409194565299746/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/06/utf-8-win-1251.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/9149409194565299746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/9149409194565299746'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/06/utf-8-win-1251.html' title='Конвертер UTF-8 &lt;-&gt; WIN-1251'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-4632927489967389013</id><published>2011-06-23T02:20:00.000-07:00</published><updated>2011-06-23T02:23:25.753-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHPDocumentor'/><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>tutorial в PHPDocumentor</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Посмотрел я еще раз на &lt;a href="http://docphp.ru/"&gt;свою документацию&lt;/a&gt; и обратил внимание на то, что в качестве описания проектов всегда на странице возникает один и тот же текст. А мне напротив, хотелось бы сделать описание каждого проекта. Как это сделать - загадка.&lt;br /&gt;&lt;br /&gt;Я иду на форум PHPDocumentor и нахожу там вопрос какого-то иностранного чувака именно про то, что мне нужно. В ответ ему было сказано, что для реализации подобных вещей в PHPDocumentor служит механизм tutorial. Этот механизм называется еще "подключаемой документацией". Суть не буду подробно описывать. Для этого поста важно только то, что документация эта должна быть написана в формате DocBook.&lt;br /&gt;Короче говоря, сделал я так, как написано в документации, обозвал файлы так, как нужно, написал в них текст такой, какой нужно. Все подключилось, но вместо русского текста - знаки вопроса. После недолгих поисков выяснилось, что формат DocBook является по сути подмножеством XML и, судя по всему, ожидается в кодировке UTF-8.&lt;br /&gt;Тогда я поставил в свою подключаемую документацию первой строчкой следующее:&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;/div&gt;И ничего не изменилось!&lt;br /&gt;Тогда я свою документацию в UTF-8 И тоже ничего не изменилось!&lt;br /&gt;Тогда я опять полез в интернет и нарыл там инструкцию, которая позволяет документору правильно работать с UTF-8. Вот эта инструкция:&lt;br /&gt;&lt;br /&gt;&lt;textarea cols="55" rows="10"&gt;Как заставить phpDocumentator понимать русский текст в исходниках на UTF-8:нужно править файл Setup.inc.php. В нем есть метод createDocs, где нужно исправить следующее- if (stristr($ret, "utf-8") !== "")+ if (stristr($ret, "utf-8") === false) { $ret = utf8_decode($ret); }2. Пройтись глобальной заменой по всем (*.*) файлам документатора и заменитьcharset=iso-8859-1'наcharset=utf-8'3. Необязательный (у меня и без этого заработало, но возможно это имеет значение при выводе мануала в XML)Пройтись глобальной заменой по всем (*.*) файлам документатора и заменить &amp;lt;?xml version="1.0" encoding="iso-8859-1"?&amp;gt;на&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;Вот так.Зашел я в означенный файл. А там все прозрачно так, что просто жуть. Буквально следующее:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Взять содержимое файла в строку. &lt;/li&gt;&lt;li&gt;Если в файле есть строчка utf-8 в любом регистре, то конвертировать весь файл, точнее всю строку функцией &lt;code&gt;&lt;b&gt;utf8_decode()&lt;/b&gt;.&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Парсить дальше преобразованный файл.&lt;/li&gt;&lt;/ul&gt;С функцией &lt;code&gt;&lt;b&gt;utf8_decode()&lt;/b&gt;&lt;/code&gt; следующая история, и я уже накалывался на нее не один раз. Эта функция не преобразует текст из UTF-8 в 1251. Она, типа, чисто юниксовая и работает с чисто юниксовыми кириллическими кодировками, а именно&lt;b&gt; &lt;/b&gt;&lt;var&gt;ISO-8859-1.&lt;/var&gt;&lt;br /&gt;Но я сделал некоторые полезные выводы.&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Инструкция неизвестного программиста, приведенная выше - не точная и лучше ей не пользоваться&lt;/li&gt;&lt;li&gt;Для того, чтобы конвертировать поступающий на обработку DocBook нужно всего навсего поставить в его начале строку &amp;lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;/li&gt;&lt;li&gt;Нужно влепить туда правильный конвертер из UTF-8 в 1251.&lt;/li&gt;&lt;li&gt;Конвертер у меня уже есть.&lt;/li&gt;&lt;/ol&gt;Так что я долго не мучился и изменил код на следующий:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (stristr($ret, "utf-8") !== "")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include ('class.CYR_UTF8.php');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $utf8 = new CYR_UTF8();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ret = $utf8-&amp;gt;to_win($ret);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;И все заработало! Ура! Я крут!&lt;br /&gt;&lt;div&gt;&lt;ol style="text-align: left;"&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-4632927489967389013?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/4632927489967389013/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/06/tutorial-phpdocumentor.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/4632927489967389013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/4632927489967389013'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/06/tutorial-phpdocumentor.html' title='tutorial в PHPDocumentor'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-2117160902424529675</id><published>2011-06-17T04:43:00.000-07:00</published><updated>2011-06-28T22:07:47.297-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='документирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Обновления'/><title type='text'>Обновление документации</title><content type='html'>Добавлено навалом новых классов.Кстати говоря, возникло желание разделить документацию классов по проектам. Не стоит кидать все классы в проект php-classes, который даже не имеет никакой смысловой нагрузки. Однако, раскидывание классов по проектам довольно сложная задача, особенно потому, что классы здорово переплетаются.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-2117160902424529675?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/2117160902424529675/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/2117160902424529675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/2117160902424529675'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/06/blog-post.html' title='Обновление документации'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-5627953815480414667</id><published>2011-05-06T02:06:00.000-07:00</published><updated>2011-05-06T02:13:14.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML_CONV'/><title type='text'>Приколы с тегами и сущностями</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;p&gt;Этот текст олицетворяет этап освоения PHP. Надо искать более зрелые подходы на этом блоге. Но и этот почитать иногда интересно.&lt;/p&gt;&lt;p&gt;Казалось бы, все специалисты знают, что такое HTML. В этой статье мне важно только то, что HTML является текстом, в котором есть теги.&lt;/p&gt;&lt;p&gt;Что такое тег? Тег это строка, заключенная в угловые скобки. Например: &amp;lt;a&amp;gt; - тег. При этом между левой угловой скобкой (знак меньше) и словом "a" не должно быть пробела. Если он есть, то это уже не будет тегом! Это будет символ "меньше" за которым следует некая строка.&lt;/p&gt;&lt;p&gt;Пробуем. &amp;lt; a&amp;gt; - нифига не тег! Показывается как три символа!&lt;/p&gt;Из этого супер-упражнения следует без сарказма важнейший итог - для того, чтобы испортить HTML код, нужно испортить в нем всего один символ, и этот символ "&amp;lt;".&lt;/p&gt;&lt;p&gt;Это важнейшее свойство тегов надо запомнить. Кстати, а почему, интересно, при определении тега редкий писатель указывает на то, что между открывающейся угловой скобкой и названием тега не должно быть пробела? Или это само собой разумеется?&lt;/p&gt;&lt;p&gt;Часто бывает необходимо показать на странице тег не как тег, акак текст. Для этого вместо служебных символов в явном виде мы можемуказать их html-сущности. Вполне понятно и логично, что браузером преобразовываются все html-сущности вне зависимости от того, что мы хотели показать - тег или отдельный символ. &lt;/p&gt;&lt;p&gt;Прикол может возникнуть при выводе текста для редактирования в форму ввода, например, в поле textarea. Представим себе, что мы храним статью (ее исходный html код) в базе данных. Причем статья содержит символы, закодированные их html_сущностями. В поле при редактировании мы видим не html сущности, а реальные символы. Получается, что поле тоже преобразовывает сущности в символы. Следовательно, при сохранении этого текста без изменений, мы записываем в базу данных реальный не измененный html-код.&lt;/p&gt;&lt;p&gt;Что делать? Либо надо конвертировать сущности перед записью в базу данных, либо надо конвертировать амперсенды перед редактированием текста. Тут уже нам предоставляется выбор - в каком виде нам удобнее редактировать - в виде сущностей или в виде кода&lt;/p&gt;&lt;p&gt;Здесь нас поджидают следующие приколы. Предположим, мы хотим отредактировать текст в виде html, то есть редактировать угловые скобки как скобки, а не как сущности (и т.д.). И в этот текст мы вручную вставляем вставляем html-сущность. Например, двойную кавычку. После редактирования и перед сохранением мы преобразовываем все символы в сущности. При этом символ амперсенда в сущности двойной кавычки тоже преобразуется. Теперь мы считываем этот текст из поля базы данных и пытаемся вывести его на экран. Все прекрасно выводится, только кавычка видна не как кавычка, а как сущность. Вот в этом-то и прикол. Если мы редактируем теги без сущностей, то и кавычки мы должны указать в виде кавычек. Но при этом все кавычки без исключения преобразуются в сущности, а не те, которые нам надо.&lt;/p&gt;&lt;p&gt;Тут мы чувствуем, что теряем контроль над текстом, который редактируем и говорим себе, что Бог с ним с удобством, будем редактировать текст с сущностями. Конечно, редактировать текст с сущностями - чистый ужас, но зато мы получаем контроль над всеми символами без исключения. Те символы, которые мы хотим получать в виде символов будут получаться в виде символов, а те, которые мы хотим получать в виде сущностей - будем получать в виде сущностей (храниться они будут в виде дважды закодированных сущностей). Напомню, что мы добились этого тем, что преобразовали символы в тексте в сущности перед редактированием, а после редактирования ничего не преобразовывали.&lt;/p&gt;&lt;h3&gt;Второй способ&lt;/h3&gt;&lt;p&gt;Можно закодировать все или некоторые служебные символы чем-нибудь другим при кодировании текста перед сохранением в базе данных. Причем для каждого html-символа мы придумываем некую уникальную и ни на что не похожую замену. Чтобы не получилось так, что кодируем символы с использованием амперсенда, а амперсенд может быть закодирован. И так до бесконечности. При кодировании символов уникальными строками мы получаем интересный эффект.Мы можем кодировать один и тот же текст сколько угодно раз. При этом закодируется он только один раз, а все остальные разы останется неизменным, поскольку в нем не останется символов, которые можно закодировать. Если в закодированный текст был добавлен html-текст, то для приведения текста к закодированному виду его нужно просто еще раз закодировать. Более осмысленными становятся действия программиста при хранении закодированного текста. Перед записью текста - кодируем. Перед выводом на экран - раскодируем.&lt;/p&gt; &lt;p&gt;Для реализации этого альтернативного кодирования и был создан класс HTML_CONV. Класс этот сделан был давно, когда я только начал осваивать php и программирование сайтов. Сейчас, когда я стал уже более зрелым программистом, я вижу и слабые места этого подхода и вообще его незрелость. Об этом я напишу в другом посте. А этот пост пусть будет памятником моих этапов освоения php.&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-5627953815480414667?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/5627953815480414667/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/05/blog-post_06.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/5627953815480414667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/5627953815480414667'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/05/blog-post_06.html' title='Приколы с тегами и сущностями'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-471065463501154750</id><published>2011-05-05T02:27:00.000-07:00</published><updated>2011-05-05T06:10:48.841-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HUP'/><category scheme='http://www.blogger.com/atom/ns#' term='EMYSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='ХУП'/><title type='text'>Структура массива ХУПов для класса EMYSQL</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;ХУП - одно из основных понятий этого проекта. ХУПом я назвал комплект из четырех строк, наличие которых необходимо для подключения базы MySQL. Это Хост, Юзер, Имя БД, Пароль. Именно в такой последовательности. С точки зрения программиста - один ХУП это массив из четырех строк.&lt;br /&gt;&lt;br /&gt;Перед записью в файл, ХУПы преобразовываются в текстовый вид. При этом один ХУП должен располагаться в одну строку и его компоненты разделены строкой разделителем. Важно! Не символом разделителем, а строкой разделителем! Компоненты ХУПа при записи в файл сохраняют указанную последовательность.&lt;br /&gt;&lt;br /&gt;Файл ХУПов содержит несколько ХУПов. Как создается такой файл:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Каждому ХУПу для локального хоста должен соответствовать ХУП для удаленного хоста.&lt;/li&gt;&lt;li&gt;Для "локальных" ХУПов строка хоста имеет значение 'localhost'.&lt;/li&gt;&lt;li&gt;Можно указать ХУПы для локального хоста, а потом ровно столько же ХУПов для удаленного. Можно их указывать вперемежку. Важно только порядок следования ХУПов. Второй ХУП для локального хоста должен соответствовать второму ХУПу для удаленного.&lt;/li&gt;&lt;li&gt;ХУПы записываются по одному на строке либо с разделителем \r\n&lt;/li&gt;&lt;li&gt;То, что получилось, шифруется и записывается в файл ХУПов. В итоге получается не текстовый, а вполне себе бинарный файл.&lt;/li&gt;&lt;/ul&gt;Создать массив ХУПов вручную практически не возможно из-за огромной трудоемкости процесса. Для этой цели на сайте написан и действует &lt;a href="http://docphp.ru/blog/make_emysql.php"&gt;интерактивный инструмент&lt;/a&gt;. Я сам им пользуюсь.&lt;br /&gt;&lt;br /&gt;И напоследок несколько напоминалок.&lt;br /&gt;Зашли в указанный конструктор ХУПов после длительного промежутка времени и в который раз возникает вопрос:&lt;br /&gt;&lt;i&gt;&lt;b&gt;Вопрос.&lt;/b&gt;&lt;/i&gt; Что за разделитель? Это разделитель сведений внутри ХУПа или самих ХУПов?&lt;br /&gt;&lt;i&gt;&lt;b&gt;Ответ. &lt;/b&gt;&lt;/i&gt;Это разделитель сведений внутри ХУПа. Сами ХУПы разделяются символом новой строки, то есть просто записываются на отдельных строках.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Вопрос.&lt;/b&gt;&lt;/i&gt; А что, если у меня только одно подключение к базе данных? И вообще, разве это не самый обычный и популярный вариант работы?&lt;br /&gt;&lt;i&gt;&lt;b&gt;Ответ. &lt;/b&gt;&lt;/i&gt;Если нужно всего одно подключение к базе данных, в файле ХУПов должно быть указано 2 ХУПа. Одно для подключения к базе данных на удаленном хосте, а второе для того же подключения, но на локальном хосте. Помним, что грамотный сайт использует разных юзеров с одной и той же базой данных. У каждого пользователя свои полномочия. Для каждого юзера составляется отдельная пара ХУПов.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Вопрос.&lt;/b&gt;&lt;/i&gt; А если мне не нужен ХУП для удаленного хоста? Что если я только начал делать сайт и еще не зарегистрировал хостинг?&lt;br /&gt;&lt;i&gt;&lt;b&gt;Ответ.&lt;/b&gt;&lt;/i&gt; Используем одинаковые ХУПы для удаленного и локального хоста. ХУПы могут быть только парные. После регистрации сайта и выбора хостинга переделываем файл ХУПов.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Вопрос.&lt;/b&gt;&lt;/i&gt; Блин! Так ничего и не понял. Что записывать в окошко ХУПов в конструкторе?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Ответ.&lt;/b&gt;&lt;/i&gt; Предположим, у нас есть удаленный хостинг.&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Адрес MYSQL сервера:&amp;nbsp; mysql-tru-lala.ru:3306;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Пользователь oy_lala_user;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Имя базы данных oy_lala_main;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Пароль: akljhfas. &lt;/li&gt;&lt;/ul&gt;На локальном хосте мы сделали следующие настройки:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Адрес хоста: localhost;&lt;/li&gt;&lt;li&gt;Пользователь ss;&lt;/li&gt;&lt;li&gt;Имя базы данных ss;&lt;/li&gt;&lt;li&gt;Пароль: 123456&lt;/li&gt;&lt;/ul&gt;В поле разделителя мы вводим строку &lt;span style="color: blue;"&gt;##&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В поле ХУПов мы записываем следующий текст:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;mysql-tru-lala.ru:3306##oy_lala_user##oy_lala_main##akljhfas&lt;/div&gt;&lt;div style="color: blue;"&gt;localhost##ss##ss##123456&lt;/div&gt;&lt;br /&gt;Все!&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Вопрос.&lt;/b&gt;&lt;/i&gt; Как класс EMYSQL понимает, какие ХУПы надо использовать - локальные или удаленные?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Ответ.&lt;/b&gt;&lt;/i&gt; В папку сайта на локальном хосте мы записываем специальный пустой (или не пустой) файл с конкретным названием. Присутствие этого файла на сайте и свидетельствует о том, что сайт на локальном хосте работает. Название файла с путем от корня вводится в конструкторе в специальное поле.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-471065463501154750?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/471065463501154750/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/05/emysql.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/471065463501154750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/471065463501154750'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/05/emysql.html' title='Структура массива ХУПов для класса EMYSQL'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-492991191860169642</id><published>2011-05-04T23:03:00.000-07:00</published><updated>2011-05-04T23:03:10.028-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='самодельный блог'/><title type='text'>Задержка в реализации самодельного блога</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;К сожалению, нет времени на программирование самодельного блога. Нет времени даже на документирование существующей системы классов! На работе жуткий прессинг со стороны начальства.&lt;br /&gt;&lt;br /&gt;В связи с этим принимаю решение вести блог проекта документации в этом самом блоггере. Существующий блог в том виде, в каком он существует (по адресу &lt;a href="http://docphp.ru/"&gt;http://docphp.ru&lt;/a&gt;), можно использовать для подготовки записей для блоггера.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-492991191860169642?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/492991191860169642/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/05/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/492991191860169642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/492991191860169642'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/05/blog-post.html' title='Задержка в реализации самодельного блога'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-5196755581735091867</id><published>2011-03-23T04:57:00.000-07:00</published><updated>2011-03-23T04:57:44.509-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='даты'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='напоминалки'/><title type='text'>Как проверить дату PHP на пустое значение</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Пустая дата в PHP - &lt;b&gt;1970-01-01 00:00:00 GMT&lt;/b&gt;&lt;br /&gt;Чтобы проверить дату на это значение можно сделать так:&lt;br /&gt;&lt;br /&gt;if (strtotime ($time) &amp;lt;= 0 ) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 'Пустая дата';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Нужно обязательно проверять на отрицательные значения, поскольку момент в времени &lt;b&gt;1970-01-01 00:00:00 &lt;/b&gt;по Москве (например) до наступления начала эпохи UNIX еще целых 3 часа. Таким образом функция вернет&lt;b&gt; -10800&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Возможно, на разных операционных системах поведение функции strtotime() будет разное. По крайней мере так в документации написано, а я не проверял.&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-5196755581735091867?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/5196755581735091867/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/03/php.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/5196755581735091867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/5196755581735091867'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/03/php.html' title='Как проверить дату PHP на пустое значение'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-2380879415574901282</id><published>2011-03-22T05:37:00.000-07:00</published><updated>2011-03-30T21:37:26.705-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='даты'/><category scheme='http://www.blogger.com/atom/ns#' term='MYSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='напоминалки'/><title type='text'>Сравнение дат в MYSQL запросах</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&amp;nbsp;Предположим, у нас есть поле со значением &lt;span style="color: blue;"&gt;date_time&lt;/span&gt;. По нему установлен индекс. Тогда мы можем найти все записи от определенного числа разными способами. Однако, нужно иметь ввиду следующее.&lt;br /&gt;&lt;br /&gt;Только поиск вот таким запросом&amp;nbsp; (ищем все записи от &lt;span style="color: blue;"&gt;2009-04-02&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SELECT * FROM `tbl_diary` WHERE `diary_date` &amp;gt;= '2009-04-02' and `diary_date` &amp;lt; '2009-04-03'&lt;/b&gt;&lt;br /&gt;&lt;b&gt;или&lt;/b&gt;&lt;br /&gt;&lt;b&gt;SELECT * FROM `tbl_diary` WHERE `diary_date` &amp;gt;= '2009-04-02 00:00' and `diary_date` &amp;lt;= '2009-04-02 23:59'&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;использует индекс по полю datetime. Если мы будем использовать вычисляемые значения даты, то поиск будет проходить перебором и индекс использоваться не будет.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #783f04;"&gt;&lt;u&gt;&lt;b&gt;Кстати, второй запрос может быть намного удобнее для программирования&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;br /&gt;Например,&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SELECT * FROM `tbl_diary` WHERE DATE_FORMAT(`diary_date`,"%Y-%m-%d") = '2009-04-02' &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;не ищет по индексу, а перебирает все строки подряд.&lt;br /&gt;&lt;br /&gt;То же самое с запросом типа&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SELECT * FROM `tbl_diary` WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`diary_date`) &amp;lt; 86&lt;/b&gt;400&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-2380879415574901282?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/2380879415574901282/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/03/mysql_22.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/2380879415574901282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/2380879415574901282'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/03/mysql_22.html' title='Сравнение дат в MYSQL запросах'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-5421157978442575416</id><published>2011-03-16T02:51:00.000-07:00</published><updated>2011-03-24T02:07:30.625-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ярлыки блога'/><category scheme='http://www.blogger.com/atom/ns#' term='самодельный блог'/><title type='text'>Ярлыки по умолчанию</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Как можно догадаться, я делаю блог не просто так, а потому, что меня кое что не устраивает в блогах стандартных. В частности мне бы хотелось иметь так называемые "ярлыки по умолчанию". Другими словами, если я делаю запись, то у нее уже должен быть ярлык. Для этой цели у меня есть в базе данных следующие, подходящие для этой цели, поля:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Поле наименования записи блога &lt;/li&gt;&lt;li&gt;Поле имени файла&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Значения этих полей можно сразу можно использовать в качестве ярлыков. Сложность в том, что для разных типов записей использовать эти записи для создания ярлыков нужно по-разному.&lt;br /&gt;&lt;br /&gt;Поле класса актуально только для частей класса - методов, свойств, констант и т.д.&lt;br /&gt;Поле имени файла актуально для класса и модуля, а через них и для их членов.&lt;br /&gt;&lt;br /&gt;Похоже, пришла пора разобраться с типами записей и алгоритмом учета каждого типа.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-5421157978442575416?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/5421157978442575416/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/03/blog-post_2658.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/5421157978442575416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/5421157978442575416'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/03/blog-post_2658.html' title='Ярлыки по умолчанию'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-3385550720555406759</id><published>2011-03-16T01:40:00.000-07:00</published><updated>2011-03-16T01:43:49.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ярлыки блога'/><category scheme='http://www.blogger.com/atom/ns#' term='самодельный блог'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='Блог по шагам'/><category scheme='http://www.blogger.com/atom/ns#' term='SS_BLOGTAG'/><title type='text'>Класс для управления ярлыками</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class = "main_title_div"&gt;        Класс управления ярлыками&lt;/div&gt;&lt;div class="subtitle_div"&gt;        Преамбула:&lt;/div&gt;&lt;div class = "preamble_div"&gt;        &lt;p&gt;Следующий класс логически представляет ярлыки и их связи с блогом. Возможно, нужно сразу разделить эти функции. Ярлыки к ярлыкам, а связи к связям. Возможно, для связей нужно свой класс делать. Но это будет после. А пока этот класс даже не отлажен. В нем наверняка могут быть ошибки.&lt;/p&gt;&lt;p&gt;На сегодняшний день класс умеет проверять существование ярлыка и связи ярлык-блог и добавлять ярлык и связь.&lt;/p&gt;&lt;/div&gt;&lt;div class="subtitle_div"&gt;        Пример:&lt;/div&gt;&lt;div class="phpcode_div"&gt;      &lt;code&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #0000BB"&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;/**&lt;br /&gt;&amp;nbsp;*&amp;nbsp;Класс&amp;nbsp;для&amp;nbsp;работы&amp;nbsp;с&amp;nbsp;тегами&amp;nbsp;блога.&amp;nbsp;Логически&amp;nbsp;класс&amp;nbsp;представляет&amp;nbsp;список&amp;nbsp;всех&amp;nbsp;возможных&amp;nbsp;тегов&amp;nbsp;и&amp;nbsp;операции&amp;nbsp;с&amp;nbsp;ними&lt;br /&gt;&amp;nbsp;*&amp;nbsp;&lt;br /&gt;&amp;nbsp;*&amp;nbsp;Кстати,&amp;nbsp;пример&amp;nbsp;использования&amp;nbsp;класса&amp;nbsp;&amp;lt;b&amp;gt;TBASE_EMYSQL&amp;lt;/b&amp;gt;&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@author&amp;nbsp;Полуэкт&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@package&amp;nbsp;BLOG&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@see&amp;nbsp;TBASE_EMYSQL&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #007700"&gt;include_once&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'class.TBASE_EMYSQL.php'&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;/**&lt;br /&gt;&amp;nbsp;*&amp;nbsp;Класс&amp;nbsp;для&amp;nbsp;работы&amp;nbsp;с&amp;nbsp;тегами&amp;nbsp;блога.&amp;nbsp;Логически&amp;nbsp;класс&amp;nbsp;представляет&amp;nbsp;список&amp;nbsp;всех&amp;nbsp;возможных&amp;nbsp;тегов&amp;nbsp;и&amp;nbsp;операции&amp;nbsp;с&amp;nbsp;ними&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;Кстати,&amp;nbsp;пример&amp;nbsp;использования&amp;nbsp;класса&amp;nbsp;&amp;lt;b&amp;gt;TBASE_EMYSQL&amp;lt;/b&amp;gt;&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@author&amp;nbsp;Полуэкт&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@package&amp;nbsp;BLOG&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@see&amp;nbsp;TBASE_EMYSQL&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #007700"&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;SS_BLOGTAG&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;TBASE_EMYSQL&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blogrec_id&lt;/span&gt;&lt;span style="color: #007700"&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//&amp;nbsp;активная&amp;nbsp;запись&amp;nbsp;блога&lt;br /&gt;&lt;br /&gt;//------------------------------------------------------------------------------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Поиск&amp;nbsp;записи&amp;nbsp;в&amp;nbsp;таблице&amp;nbsp;ярлыков&amp;nbsp;по&amp;nbsp;тексту&amp;nbsp;ярлыка&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Используется&amp;nbsp;для&amp;nbsp;недопущения&amp;nbsp;дублирования&amp;nbsp;ярлыков.&amp;nbsp;Текст&amp;nbsp;ярлыка&amp;nbsp;не&amp;nbsp;должен&amp;nbsp;содержать&amp;nbsp;опасных&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;символов.&amp;nbsp;(за&amp;nbsp;это&amp;nbsp;обычно&amp;nbsp;отвечает&amp;nbsp;класс&amp;nbsp;&amp;lt;b&amp;gt;CHECK&amp;lt;/b&amp;gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;String&amp;nbsp;$tag_text&amp;nbsp;-&amp;nbsp;текст&amp;nbsp;(содержание)&amp;nbsp;искомого&amp;nbsp;ярлыка&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&amp;nbsp;Integer&amp;nbsp;-&amp;nbsp;первичный&amp;nbsp;ключ&amp;nbsp;найденной&amp;nbsp;записи&amp;nbsp;или&amp;nbsp;0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;find_tag&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_text&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(empty(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_text&lt;/span&gt;&lt;span style="color: #007700"&gt;))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;0&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$query&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'SELECT&amp;nbsp;`tag_id`&amp;nbsp;FROM&amp;nbsp;`tbl_tag`&amp;nbsp;WHERE&amp;nbsp;`tag_text`&amp;nbsp;=&amp;nbsp;"'&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_text&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'"'&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;query&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$query&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;or&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;my_exit&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;''&lt;/span&gt;&lt;span style="color: #007700"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #DD0000"&gt;"Ошибка&amp;nbsp;в&amp;nbsp;запросе&amp;nbsp;поиска&amp;nbsp;ярлыка&amp;nbsp;&amp;lt;br&amp;gt;$query&amp;lt;br&amp;gt;{$this-&amp;gt;link_id-&amp;gt;error}"&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;num_rows&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;0&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$row&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;mysql_fetch_assoc&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$row&lt;/span&gt;&lt;span style="color: #007700"&gt;[&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'tag_id'&lt;/span&gt;&lt;span style="color: #007700"&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;0&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//------------------------------------------------------------------------------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Проверить,&amp;nbsp;связан&amp;nbsp;ли&amp;nbsp;определенный&amp;nbsp;ярлык&amp;nbsp;с&amp;nbsp;определенной&amp;nbsp;записью&amp;nbsp;блога&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;Integer&amp;nbsp;$tag_id&amp;nbsp;-&amp;nbsp;ид&amp;nbsp;ярлыка,&amp;nbsp;привязку&amp;nbsp;которого&amp;nbsp;надо&amp;nbsp;проверить&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;Integer&amp;nbsp;$blog_id&amp;nbsp;-&amp;nbsp;если&amp;nbsp;передан,&amp;nbsp;то&amp;nbsp;проверяется&amp;nbsp;привязка&amp;nbsp;к&amp;nbsp;нему,&amp;nbsp;если&amp;nbsp;нет,&amp;nbsp;то&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;к&amp;nbsp;активной&amp;nbsp;записи&amp;nbsp;класса&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;tag_is_linked&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&lt;/span&gt;&lt;span style="color: #007700"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blog_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;0&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(empty(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blog_id&lt;/span&gt;&lt;span style="color: #007700"&gt;))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blog_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;blogrec_id&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(empty(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blog_id&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;or&amp;nbsp;empty(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&lt;/span&gt;&lt;span style="color: #007700"&gt;))&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;my_exit&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;''&lt;/span&gt;&lt;span style="color: #007700"&gt;,&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'При&amp;nbsp;поиске&amp;nbsp;связки&amp;nbsp;блог&amp;nbsp;-&amp;nbsp;ярлык&amp;nbsp;один&amp;nbsp;из&amp;nbsp;параметров&amp;nbsp;пуст!'&lt;/span&gt;&lt;span style="color: #007700"&gt;);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;!&amp;nbsp;empty&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;mysql&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;count_records_sql&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'SELECT&amp;nbsp;COUNT(*)&amp;nbsp;FROM&amp;nbsp;tbl_tagblog&amp;nbsp;WHERE&amp;nbsp;tagblog_tag&amp;nbsp;='&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'&amp;nbsp;and&amp;nbsp;tagblog_blog&amp;nbsp;='&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blog_id&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//------------------------------------------------------------------------------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Добавить&amp;nbsp;один&amp;nbsp;ярлык&amp;nbsp;в&amp;nbsp;справочник&amp;nbsp;ярлыков&amp;nbsp;и&amp;nbsp;соединить&amp;nbsp;его&amp;nbsp;с&amp;nbsp;текущей&amp;nbsp;записью&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Первичный&amp;nbsp;ключ&amp;nbsp;ярлыка&amp;nbsp;-&amp;nbsp;автоинкрементарный,&amp;nbsp;а&amp;nbsp;текст&amp;nbsp;ярлыка&amp;nbsp;должен&amp;nbsp;находиться&amp;nbsp;в&amp;nbsp;$_REQUEST['tag_text']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Ключ&amp;nbsp;поста&amp;nbsp;совпадает&amp;nbsp;с&amp;nbsp;названием&amp;nbsp;поля.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&amp;nbsp;Boolean&amp;nbsp;-&amp;nbsp;истина,&amp;nbsp;если&amp;nbsp;запись&amp;nbsp;добавлялась,&amp;nbsp;ложь,&amp;nbsp;если&amp;nbsp;нет&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;add_tag&lt;/span&gt;&lt;span style="color: #007700"&gt;()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(empty(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$_REQUEST&lt;/span&gt;&lt;span style="color: #007700"&gt;[&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'tag_text'&lt;/span&gt;&lt;span style="color: #007700"&gt;]))&amp;nbsp;{&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;false&lt;/span&gt;&lt;span style="color: #007700"&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$duplicate&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;find_tag&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$_REQUEST&lt;/span&gt;&lt;span style="color: #007700"&gt;[&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'tag_text'&lt;/span&gt;&lt;span style="color: #007700"&gt;]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$duplicate&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;==&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;0&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;{&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//&amp;nbsp;Добавляем&amp;nbsp;ярлык&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$query&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'INSERT&amp;nbsp;INTO&amp;nbsp;`tbl_tag`&amp;nbsp;SET&amp;nbsp;`tag_text`&amp;nbsp;=&amp;nbsp;"'&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;real_escape_string&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$_REQUEST&lt;/span&gt;&lt;span style="color: #007700"&gt;[&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'tag_text'&lt;/span&gt;&lt;span style="color: #007700"&gt;]).&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'"'&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;query&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$query&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;or&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;my_exit&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;''&lt;/span&gt;&lt;span style="color: #007700"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #DD0000"&gt;"Ошибка&amp;nbsp;в&amp;nbsp;запросе&amp;nbsp;добавления&amp;nbsp;ярлыка&amp;nbsp;&amp;lt;br&amp;gt;$query&amp;lt;br&amp;gt;{$this-&amp;gt;link_id-&amp;gt;error}"&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;mysql&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;select_sql&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'SELECT&amp;nbsp;LAST_INSERT_ID()'&lt;/span&gt;&lt;span style="color: #007700"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$duplicate&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//&amp;nbsp;Если&amp;nbsp;установлена&amp;nbsp;активная&amp;nbsp;запись,&amp;nbsp;привяжем&amp;nbsp;к&amp;nbsp;ней&amp;nbsp;только&amp;nbsp;что&amp;nbsp;созданный&amp;nbsp;ярлык&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;if&amp;nbsp;(!empty(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;blogrec_id&lt;/span&gt;&lt;span style="color: #007700"&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;if&amp;nbsp;(!&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;tag_is_linked&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&lt;/span&gt;&lt;span style="color: #007700"&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//&amp;nbsp;Надо&amp;nbsp;привязывать.&amp;nbsp;Пока&amp;nbsp;не&amp;nbsp;привязано&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;add_link&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&lt;/span&gt;&lt;span style="color: #007700"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blog_id&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//------------------------------------------------------------------------------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Добавить&amp;nbsp;связку&amp;nbsp;"ярлык&amp;nbsp;-&amp;nbsp;блог"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Никаких&amp;nbsp;проверок&amp;nbsp;не&amp;nbsp;производится.&amp;nbsp;Только&amp;nbsp;добавление&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&amp;nbsp;Integer&amp;nbsp;Количество&amp;nbsp;затронутых&amp;nbsp;рядов&amp;nbsp;при&amp;nbsp;добавлении&amp;nbsp;связи&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;private&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;add_link&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&lt;/span&gt;&lt;span style="color: #007700"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blog_id&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$query&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'INSERT&amp;nbsp;INTO&amp;nbsp;`tbl_tagblog`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;`tagblog_tag`&amp;nbsp;=&amp;nbsp;"'&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$tag_id&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`tagblog_blog`&amp;nbsp;=&amp;nbsp;"'&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$blog_id&lt;/span&gt;&lt;span style="color: #007700"&gt;.&lt;/span&gt;&lt;span style="color: #DD0000"&gt;'"'&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #007700"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;query&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$query&lt;/span&gt;&lt;span style="color: #007700"&gt;)&amp;nbsp;or&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;my_exit&lt;/span&gt;&lt;span style="color: #007700"&gt;(&lt;/span&gt;&lt;span style="color: #DD0000"&gt;''&lt;/span&gt;&lt;span style="color: #007700"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #DD0000"&gt;"Ошибка&amp;nbsp;в&amp;nbsp;запросе&amp;nbsp;добавления&amp;nbsp;связки&amp;nbsp;ярлыка&amp;nbsp;и&amp;nbsp;блога&amp;lt;br&amp;gt;$query&amp;lt;br&amp;gt;{$this-&amp;gt;link_id-&amp;gt;error}"&lt;/span&gt;&lt;span style="color: #007700"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;$this&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;link_id&lt;/span&gt;&lt;span style="color: #007700"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;affected_rows&lt;/span&gt;&lt;span style="color: #007700"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #FF8000"&gt;//------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #007700"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000BB"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-3385550720555406759?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/3385550720555406759/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/03/blog-post_16.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/3385550720555406759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/3385550720555406759'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/03/blog-post_16.html' title='Класс для управления ярлыками'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418130391596426958.post-9206359598094600983</id><published>2011-03-15T23:13:00.001-07:00</published><updated>2011-03-15T23:16:47.903-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ярлыки блога'/><category scheme='http://www.blogger.com/atom/ns#' term='самодельный блог'/><category scheme='http://www.blogger.com/atom/ns#' term='MYSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='таблицы блога'/><title type='text'>Таблица связей между ярлыками и записями блога</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;code class="sql"&gt;&lt;span class="syntax"&gt;&lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;CREATE&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;TABLE&lt;/span&gt;  &lt;span class="syntax_quote syntax_quote_backtick"&gt;`classes`&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_qualifier"&gt;.&lt;/span&gt;&lt;span class="syntax_quote syntax_quote_backtick"&gt;`tbl_tagblog`&lt;/span&gt; &lt;span class="syntax_punct syntax_punct_bracket_open_round"&gt;(&lt;/span&gt;&lt;div class="syntax_indent1"&gt; &lt;span class="syntax_quote syntax_quote_backtick"&gt;`tagblog_tag`&lt;/span&gt; &lt;span class="syntax_alpha syntax_alpha_columnType"&gt;INT&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_bracket_open_round"&gt;(&lt;/span&gt; &lt;span class="syntax_digit syntax_digit_integer"&gt;10&lt;/span&gt;  &lt;span class="syntax_punct syntax_punct_bracket_close_round"&gt;)&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_columnAttrib"&gt;UNSIGNED&lt;/span&gt; &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;NOT&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;NULL&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;COMMENT&lt;/span&gt;  &lt;span class="syntax_quote syntax_quote_single"&gt;'Ссылка на ярлык'&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_listsep"&gt;,&lt;/span&gt;&lt;br /&gt; &lt;span class="syntax_quote syntax_quote_backtick"&gt;`tagblog_blog`&lt;/span&gt; &lt;span class="syntax_alpha syntax_alpha_columnType"&gt;INT&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_bracket_open_round"&gt;(&lt;/span&gt; &lt;span class="syntax_digit syntax_digit_integer"&gt;11&lt;/span&gt;  &lt;span class="syntax_punct syntax_punct_bracket_close_round"&gt;)&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_columnAttrib"&gt;UNSIGNED&lt;/span&gt; &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;NOT&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;NULL&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;COMMENT&lt;/span&gt;  &lt;span class="syntax_quote syntax_quote_single"&gt;'Ссылка на запись блога'&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_listsep"&gt;,&lt;/span&gt;&lt;br /&gt; &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;INDEX&lt;/span&gt; &lt;span class="syntax_punct syntax_punct_bracket_open_round"&gt;(&lt;/span&gt;  &lt;span class="syntax_quote syntax_quote_backtick"&gt;`tagblog_tag`&lt;/span&gt; &lt;span class="syntax_punct syntax_punct_listsep"&gt;,&lt;/span&gt;  &lt;span class="syntax_quote syntax_quote_backtick"&gt;`tagblog_blog`&lt;/span&gt;  &lt;span class="syntax_punct syntax_punct_bracket_close_round"&gt;)&lt;/span&gt; &lt;/div&gt;&lt;span class="syntax_punct syntax_punct_bracket_close_round"&gt;)&lt;/span&gt; &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;ENGINE&lt;/span&gt;  &lt;span class="syntax_punct"&gt;=&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;MYISAM&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;COMMENT&lt;/span&gt;  &lt;span class="syntax_punct"&gt;=&lt;/span&gt;  &lt;span class="syntax_quote syntax_quote_single"&gt;'Связь таблиц ярылыков и записей блога'&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_queryend"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418130391596426958-9206359598094600983?l=www.php-classes.ru' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.php-classes.ru/feeds/9206359598094600983/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.php-classes.ru/2011/03/blog-post_832.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/9206359598094600983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418130391596426958/posts/default/9206359598094600983'/><link rel='alternate' type='text/html' href='http://www.php-classes.ru/2011/03/blog-post_832.html' title='Таблица связей между ярлыками и записями блога'/><author><name>Полуэкт</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
