<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог Stafox&#039;a &#187; point</title>
	<atom:link href="/tag/point/feed/" rel="self" type="application/rss+xml" />
	<link>http://stafox.ru</link>
	<description>О программировании и создании сайтов</description>
	<lastBuildDate>Wed, 02 Apr 2014 13:10:39 +0000</lastBuildDate>
	<language>ru-RU</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8.1</generator>
	<item>
		<title>Zend Framework: работа с полем типа POINT в MySQL</title>
		<link>http://stafox.ru/zend-framework-work-with-point-type-in-mysql/</link>
		<comments>http://stafox.ru/zend-framework-work-with-point-type-in-mysql/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 20:33:06 +0000</pubDate>
		<dc:creator><![CDATA[Stafox]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[point]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[zf]]></category>

		<guid isPermaLink="false">http://stafox.ru/?p=1896</guid>
		<description><![CDATA[Я расскажу Вам как на Zend Framework работать с полем типа POINT в MySQL. В этом нет ничего сложного, и сейчас Вы убедитесь в этом сами. Структуру таблицы возьмем из предыдущей статьи. Для начала нам понадобится модель, в которой мы опишем методы для работы с базой данных. Как Вы видите, ничего сложного. Для добавления различных [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="/zend-framework-work-with-point-type-in-mysql/"><img src="/wp-content/uploads/2013/01/zf-point.jpg" alt="Работа с типом POINT в MySQL" width="580" height="200" class="aligncenter size-full wp-image-1897" /></a></p>
<p>Я расскажу Вам как на Zend Framework работать с <a href="/tip-dannyih-point-v-mysql/">полем типа POINT в MySQL</a>. В этом нет ничего сложного, и сейчас Вы убедитесь в этом сами.<span id="more-1896"></span></p>
<p>Структуру таблицы возьмем из предыдущей статьи. Для начала нам понадобится модель, в которой мы опишем методы для работы с базой данных.</p>
<pre data-enlighter-language="php" data-enlighter-theme="git" data-enlighter-title="" data-enlighter-highlight="" class="EnlighterJSRAW">
class Default_Model_DbTable_Geo extends Zend_Db_Table_Abstract {

    protected $_name = 'geo';
    protected $_db;

    public function addGeoPlace($place_name, $coordinates) {
        $data = array(
            'place_name' =&gt; $place_name,
            'coordinates' =&gt; new Zend_Db_Expr(&quot;PointFromText('POINT($coordinates[x] $coordinates[y])')&quot;)
        );
        return $this-&gt;insert($data);
    }

    public function getGeoLocationById($id) {
        $select = $this-&gt;_db-&gt;select()
                -&gt;from($this-&gt;_name, array(
                    'id',
                    'place_name'
                        )
                )
                -&gt;columns(array(
                    'x(coordinates) coordinates_x',
                    'y(coordinates) coordinates_y'
                ))
                -&gt;where(&quot;id = $id&quot;);
        $row = $this-&gt;_db-&gt;fetchRow($select);
        return (!$row) ? null : $row;
    }
}
</pre>
<p>Как Вы видите, ничего сложного. Для добавления различных выражений в ZF есть замечательный класс <strong>Zend_Db_Expr</strong>, который позволяет вставлять различные выражения. А вообще ZF сам распознает такие выражения (NOW, LOWER и прочие), если они заключены в скобки.</p>
<p>Ну, а пользоваться этим чудом очень просто.</p>
<pre data-enlighter-language="php" data-enlighter-theme="git" data-enlighter-title="" data-enlighter-highlight="" class="EnlighterJSRAW">
public function indexAction() {
        $this-&gt;_helper-&gt;layout-&gt;disableLayout();
        $this-&gt;_helper-&gt;viewRenderer-&gt;setNoRender();

        $geoModel = new Default_Model_DbTable_Geo();
        $coordinates = array(
                &quot;x&quot; =&gt; 49.2343503980067,
                &quot;y&quot; =&gt; 2.52738212494082
        );
        $geoModel-&gt;addGeoPlace(&quot;My Favorite Place&quot;, $coordinates);
}
</pre>
<p>Ну вот, таким образом Вы научились заполнять поле типа POINT в Zend Framework.</p>
<div class="wp_rp_wrap  wp_rp_vertical_m" id="wp_rp_first">
<div class="wp_rp_content">
<h3 class="related_post_title">Вам это тоже будет интересно</h3>
<ul class="related_post wp_rp" style="visibility: visible">
<li data-position="0" data-poid="in-1887" data-post-type="none" ><a href="/tip-dannyih-point-v-mysql/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2013/01/mysql-point-150x150.jpg" alt="Тип данных POINT в MySQL" width="150" height="150" /></a><a href="/tip-dannyih-point-v-mysql/" class="wp_rp_title">Тип данных POINT в MySQL</a></li>
<li data-position="1" data-poid="in-1717" data-post-type="none" ><a href="/zend-framework-problema-s-modelyami/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2013/01/zf-models-problem-150x150.jpg" alt="Zend Framework: проблема с моделями." width="150" height="150" /></a><a href="/zend-framework-problema-s-modelyami/" class="wp_rp_title">Zend Framework: проблема с моделями.</a></li>
<li data-position="2" data-poid="in-2051" data-post-type="none" ><a href="/zend-framework-peredacha-parametrov-v-shablonyi-vida/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2013/09/zf-send-params-to-view-150x150.png" alt="Zend Framework: передача параметров в шаблоны вида" width="150" height="150" /></a><a href="/zend-framework-peredacha-parametrov-v-shablonyi-vida/" class="wp_rp_title">Zend Framework: передача параметров в шаблоны вида</a></li>
<li data-position="3" data-poid="in-1734" data-post-type="none" ><a href="/zend-framework-gde-hranit-svoi-klassyi/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2013/01/zf-1-150x150.jpg" alt="Zend Framework: где хранить свои классы?" width="150" height="150" /></a><a href="/zend-framework-gde-hranit-svoi-klassyi/" class="wp_rp_title">Zend Framework: где хранить свои классы?</a></li>
<li data-position="4" data-poid="in-2185" data-post-type="none" ><a href="/zend-framework-form-decorators/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2014/02/zf-form-decorators-150x150.jpg" alt="Zend Framework: стандартные декораторы формы" width="150" height="150" /></a><a href="/zend-framework-form-decorators/" class="wp_rp_title">Zend Framework: стандартные декораторы формы</a></li>
</ul>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stafox.ru/zend-framework-work-with-point-type-in-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Тип данных POINT в MySQL</title>
		<link>http://stafox.ru/tip-dannyih-point-v-mysql/</link>
		<comments>http://stafox.ru/tip-dannyih-point-v-mysql/#comments</comments>
		<pubDate>Mon, 21 Jan 2013 19:41:56 +0000</pubDate>
		<dc:creator><![CDATA[Stafox]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[point]]></category>
		<category><![CDATA[query]]></category>

		<guid isPermaLink="false">http://stafox.ru/?p=1887</guid>
		<description><![CDATA[Не так давно передо мной стояла задача о необходимости хранить географические координаты (долготу и широту) в БД. Для этих целей в MySQL есть замечательный тип данных -  POINT. Он представляет собой структуру из нескольких полей. Кроме того, к этому типу можно (и даже нужно) применять встроенные функции. Именно эти функции определяют, какие данные необходимо хранить: [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="/tip-dannyih-point-v-mysql/"><img src="/wp-content/uploads/2013/01/mysql-point.jpg" alt="Тип данных POINT в MySQL" width="580" height="200" class="aligncenter size-full wp-image-1894" /></a><br />
Не так давно передо мной стояла задача о необходимости хранить географические координаты (долготу и широту) в БД. Для этих целей в MySQL есть замечательный тип данных -  POINT. Он представляет собой структуру из нескольких полей.<span id="more-1887"></span></p>
<p>Кроме того, к этому типу можно (и даже нужно) применять встроенные функции. Именно эти функции определяют, какие данные необходимо хранить: точку или линию, а может даже множество точек или множество линий. Разберем пример. Есть небольшая таблица в реляционной БД, назовем ее <em>geo</em>. И имеет она следующую структуру</p>
<pre data-enlighter-language="sql" data-enlighter-theme="git" data-enlighter-title="" data-enlighter-highlight="" class="EnlighterJSRAW">
`id` int(11) NOT NULL AUTO_INCREMENT,
`place_name` varchar(40) NOT NULL,
`coordinates` point NOT NULL
</pre>
<p>Для того чтобы создать такую таблицу, воспользуйтесь следующим SQL-запросом:</p>
<pre data-enlighter-language="sql" data-enlighter-theme="git" data-enlighter-title="" data-enlighter-highlight="" class="EnlighterJSRAW">
CREATE TABLE IF NOT EXISTS `geo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`place_name` varchar(40) NOT NULL,
`coordinates` point NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
</pre>
<p>Для того чтобы вставить строку в таблицу, воспользуемся конструкцией INSERT</p>
<pre data-enlighter-language="sql" data-enlighter-theme="git" data-enlighter-title="" data-enlighter-highlight="" class="EnlighterJSRAW">
INSERT INTO `geo` (`place_name`, `coordinates`) VALUES ('Apremont', PointFromText('POINT(49.2343503980067 2.52738212494082)'));
</pre>
<p>У этого типа есть один недостаток: данные нельзя просмотреть. Например в phpMyAdmin данные поля <em>coordinates</em> будут выглядеть вот так: <img src="/wp-content/uploads/2013/01/mysql-point-data.png" alt="mysql-point-data" width="152" height="23" class="alignnone size-full wp-image-1891" /><br />
И для того чтобы получить долготу и широту, придется воспользоваться вот таким SQL-запросом:</p>
<pre data-enlighter-language="sql" data-enlighter-theme="git" data-enlighter-title="" data-enlighter-highlight="" class="EnlighterJSRAW">
SELECT X(  `coordinates` ) , Y(  `coordinates` ) 
FROM  `geo` 
WHERE 1
LIMIT 1
</pre>
<p>Остался последний нюанс. Если у Вас возникают проблемы при экспортировании данных таблицы в которой присутствуют поля типа POINT, а именно, если после экспорта данных координаты не отображаются, то это означает, что Вы неправильно сделали экспорт. Наверняка Вы сделали экспорт в текст, затем скопировали его и вставили как SQL запрос. Нужно сделать экспорт в файл, а затем сделать импорт из этого файла.</p>
<div class="wp_rp_wrap  wp_rp_vertical_m" >
<div class="wp_rp_content">
<h3 class="related_post_title">Вам это тоже будет интересно</h3>
<ul class="related_post wp_rp" style="visibility: visible">
<li data-position="0" data-poid="in-1896" data-post-type="none" ><a href="/zend-framework-work-with-point-type-in-mysql/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2013/01/zf-point-150x150.jpg" alt="Zend Framework: работа с полем типа POINT в MySQL" width="150" height="150" /></a><a href="/zend-framework-work-with-point-type-in-mysql/" class="wp_rp_title">Zend Framework: работа с полем типа POINT в MySQL</a></li>
<li data-position="1" data-poid="in-1942" data-post-type="none" ><a href="/change-database-mysql-location/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2013/02/linux-mysql-dir-150x150.jpg" alt="Как изменить место хранения баз данных MySQL" width="150" height="150" /></a><a href="/change-database-mysql-location/" class="wp_rp_title">Как изменить место хранения баз данных MySQL</a></li>
<li data-position="2" data-poid="in-2115" data-post-type="none" ><a href="/zend-framework-store-sessions-in-database/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2014/01/zf-sessions-in-database-150x150.jpg" alt="Zend Framework: реализация хранения сессий в базе данных" width="150" height="150" /></a><a href="/zend-framework-store-sessions-in-database/" class="wp_rp_title">Zend Framework: реализация хранения сессий в базе данных</a></li>
<li data-position="3" data-poid="in-1652" data-post-type="none" ><a href="/linux-ustanovka-netbeans-ide/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2012/09/netbeans-150x150.png" alt="Linux: установка NetBeans IDE" width="150" height="150" /></a><a href="/linux-ustanovka-netbeans-ide/" class="wp_rp_title">Linux: установка NetBeans IDE</a></li>
<li data-position="4" data-poid="in-2109" data-post-type="none" ><a href="/install-and-configure-xdebug/" class="wp_rp_thumbnail"><img src="/wp-content/uploads/2014/01/install-and-configure-xdebug-150x150.jpg" alt="Установка и настройка Xdebug" width="150" height="150" /></a><a href="/install-and-configure-xdebug/" class="wp_rp_title">Установка и настройка Xdebug</a></li>
</ul>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stafox.ru/tip-dannyih-point-v-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
