<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>Web Tech Log by 1KB &#187; php</title>
	<atom:link href="http://1kb.jp/blog/archives/category/php/feed" rel="self" type="application/rss+xml" />
	<link>http://1kb.jp/blog</link>
	<description>Web開発、Webデザイン、SEO、携帯コンテンツなどWebにまつわるテクノロジーを追っかけるブログ。旧名「Web屋に復帰した人間のリハビリ日記」</description>
	<lastBuildDate>Fri, 13 Aug 2010 12:38:27 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://1kb.jp/blog/archives/category/php/feed" />
		<item>
		<title>SimplePie を使用してRSS/Atom FeedをWebページに組み込む</title>
		<link>http://1kb.jp/blog/archives/263</link>
		<comments>http://1kb.jp/blog/archives/263#comments</comments>
		<pubDate>Thu, 19 Feb 2009 09:51:18 +0000</pubDate>
		<dc:creator>1kb</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://1kb.jp/blog/?p=263</guid>
		<description><![CDATA[RSS関係のPHPライブラリはいろいろありますが、ファイルが一つのみで構成されていて、その名の通りシンプルなSimplePieを使ってみました。 SimplePie: Super-fast, easy-to-use, RSS and Atom feed parsing in PHP. まずは下ごしらえから //SimplePie require_once('../php/simplepie/simplepie.inc'); $feed = new SimplePie(); $feed-&#62;set_feed_url("http://1kb.jp/blog/feed"); // RSS Feed URL指定 $feed-&#62;set_cache_location("../php/simplepie/cache/"); // Cache ディレクトリ指定 $feed-&#62;init(); $feed-&#62;handle_content_type(); 後はページの任意の位置にてforeach()で回すだけ &#60;ul&#62; &#60;?php foreach ($feed-&#62;get_items() as $item){ $url   = $item-&#62;get_permalink(); //各記事のURL $title = $item-&#62;get_title(); // 各記事のタイトル $date  = $item-&#62;get_date('Y-m-d'); //日付 PHPのdateコマンドと同じ echo '&#60;li&#62;' . $date . [...]]]></description>
			<content:encoded><![CDATA[<p>RSS関係のPHPライブラリはいろいろありますが、ファイルが一つのみで構成されていて、その名の通りシンプルなSimplePieを使ってみました。</p>
<ul>
<li><a href="http://simplepie.org/">SimplePie: Super-fast, easy-to-use, RSS and Atom feed parsing in PHP.</a></li>
</ul>
<p>まずは下ごしらえから</p>
<pre>//SimplePie
require_once('../php/simplepie/simplepie.inc');
$feed = new SimplePie();
$feed-&gt;set_feed_url("http://1kb.jp/blog/feed"); // RSS Feed URL指定
$feed-&gt;set_cache_location("../php/simplepie/cache/"); // Cache ディレクトリ指定
$feed-&gt;init();
$feed-&gt;handle_content_type();</pre>
<p>後はページの任意の位置にてforeach()で回すだけ</p>
<pre> &lt;ul&gt;
&lt;?php
foreach ($feed-&gt;get_items() as $item){
$url   = $item-&gt;get_permalink(); //各記事のURL
$title = $item-&gt;get_title(); // 各記事のタイトル
$date  = $item-&gt;get_date('Y-m-d'); //日付 PHPのdateコマンドと同じ
echo '&lt;li&gt;' . $date . ' &lt;a href="' . $url .'"&gt;' . $title . '&lt;/a&gt;&lt;/li&gt;';
}
?&gt;
&lt;/ul&gt;</pre>
<p>非常に簡単ですね。詳細なドキュメントやAPIは<a href="http://simplepie.org/wiki/">こちら</a>をご参照ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://1kb.jp/blog/archives/263/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://1kb.jp/blog/archives/263" />
	</item>
		<item>
		<title>PHPでアップロードしたJPEGファイルをGIFファイルに変換する</title>
		<link>http://1kb.jp/blog/archives/260</link>
		<comments>http://1kb.jp/blog/archives/260#comments</comments>
		<pubDate>Wed, 18 Feb 2009 09:32:44 +0000</pubDate>
		<dc:creator>1kb</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://1kb.jp/blog/?p=260</guid>
		<description><![CDATA[とあるPHPスクリプトで、GIFファイルのみアップロードを許可してJPEGファイルがアップロードしたらエラーを返していました。ユーザビリティを考えるとあまり親切ではないので、JPEGファイルがアップロードされたら、自動的に変換するようにしようと思い、ちょいと調べてみました。 //アップロード先パス $filepath = "/path/to/filename.gif"; //アップロードしたファイルを保存 move_uploaded_file($_FILES['file']['tmp_name'], $filepath); //書き込み許可属性を付ける chmod($filepath, 0777); if (preg_match("/jpeg/", $_FILES['file']['type'])) {//JPEGの場合GIF変換 //JPEGファイルを展開 $img = imagecreatefromjpeg($filepath); //GIF形式で保存 imagegif($img, $filepath); //メモリを解放 imagedestroy($img); } ※実際には様々なエラー処理が必要です。PHPでのファイルアップロード処理に関しては割愛します。他を参照してください。 基本的にはPHPの関数 imagecreatefromjpeg() と imagegif() を使用して簡単にできました。もちろんGDのサポートは必須です。]]></description>
			<content:encoded><![CDATA[<p>とあるPHPスクリプトで、GIFファイルのみアップロードを許可してJPEGファイルがアップロードしたらエラーを返していました。ユーザビリティを考えるとあまり親切ではないので、JPEGファイルがアップロードされたら、自動的に変換するようにしようと思い、ちょいと調べてみました。</p>
<pre>//アップロード先パス
$filepath = "/path/to/filename.gif";
//アップロードしたファイルを保存
move_uploaded_file($_FILES['file']['tmp_name'], $filepath);
//書き込み許可属性を付ける
chmod($filepath, 0777);
if (preg_match("/jpeg/", $_FILES['file']['type'])) {//JPEGの場合GIF変換
//JPEGファイルを展開
$img = imagecreatefromjpeg($filepath);
//GIF形式で保存
imagegif($img, $filepath);
//メモリを解放
imagedestroy($img);
}</pre>
<p>※実際には様々なエラー処理が必要です。PHPでのファイルアップロード処理に関しては割愛します。他を参照してください。</p>
<p>基本的にはPHPの関数 imagecreatefromjpeg() と imagegif() を使用して簡単にできました。もちろんGDのサポートは必須です。</p>
]]></content:encoded>
			<wfw:commentRss>http://1kb.jp/blog/archives/260/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://1kb.jp/blog/archives/260" />
	</item>
		<item>
		<title>PHP strtotime関数でハマった！（翌月の表現の処理）</title>
		<link>http://1kb.jp/blog/archives/204</link>
		<comments>http://1kb.jp/blog/archives/204#comments</comments>
		<pubDate>Sat, 31 Jan 2009 14:27:07 +0000</pubDate>
		<dc:creator>1kb</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://1kb.jp/blog/?p=204</guid>
		<description><![CDATA[PHPには strtotimeという関数があります。引数に例えば「+1 month」と指定すれば1ヶ月後のタイムスタンプを返してくれます。 &#60;?php $nextmanth = date("Y-m", strtotime("+1 month"));?&#62; で翌月を返してくれると思ってました。しかし甘かった！！ 例えば今月28日の時点では問題なかったのですが、 例：2009年1月28日の時点 &#60;?php $nextmonth = date("Y-m", strtotime("+1 month")); echo $nextmonth;?&#62; 結果：2009-02 これが31日では 例：2009年1月31日の時点 &#60;?php $nextmonth = date("Y-m", strtotime("+1 month")); echo $nextmonth; ?&#62; 結果：2009-03 となってしまう。 なぜならば、strtotime関数では1月31日の1ヶ月後は2月31日で2月は31日が存在しないので3月3日という認識らしい。 実際に以下のコードを実行すると 例：2009年1月31日の時点 &#60;?php $nextmonth = date("Y-m-d", strtotime("+1 month")); echo $nextmonth;?&#62; 結果：2009-03-03 となってしまう。 1月31日では「次の月」を3月と返してしまってくれていて、原因を突き止めるのに苦労しました。 正解は 例：2009年1月31日の時点 &#60;?php $nextmonth = date("Y-m", strtotime(date("Y-m-01") [...]]]></description>
			<content:encoded><![CDATA[<p>PHPには strtotimeという関数があります。引数に例えば「+1 month」と指定すれば1ヶ月後のタイムスタンプを返してくれます。</p>
<pre>&lt;?php $nextmanth = date("Y-m", strtotime("+1 month"));?&gt;</pre>
<p>で翌月を返してくれると思ってました。<span style="color: #ff0000;"><strong>しかし甘かった！！</strong></span><br />
例えば今月28日の時点では問題なかったのですが、</p>
<pre>例：2009年1月28日の時点
&lt;?php
$nextmonth = date("Y-m", strtotime("+1 month"));
echo $nextmonth;?&gt;
結果：2009-02</pre>
<p>これが31日では</p>
<pre>例：2009年1月31日の時点
&lt;?php
$nextmonth = date("Y-m", strtotime("+1 month"));
echo $nextmonth;
?&gt;
結果：2009-03</pre>
<p>となってしまう。<br />
なぜならば、strtotime関数では1月31日の1ヶ月後は2月31日で2月は31日が存在しないので3月3日という認識らしい。</p>
<p>実際に以下のコードを実行すると</p>
<pre>例：2009年1月31日の時点
&lt;?php
$nextmonth = date("Y-m-d", strtotime("+1 month"));
echo $nextmonth;?&gt;
結果：2009-03-03</pre>
<p>となってしまう。<br />
1月31日では「次の月」を3月と返してしまってくれていて、原因を突き止めるのに苦労しました。</p>
<p>正解は</p>
<pre>例：2009年1月31日の時点
&lt;?php
$nextmonth = date("Y-m", strtotime(date("Y-m-01") . "+1 month"));
echo $nextmonth;
?&gt;
結果：2009-02</pre>
<p>いったん「2009-01-01」と月初に戻してから、「+1 month」してやるとうまくいきました。</p>
]]></content:encoded>
			<wfw:commentRss>http://1kb.jp/blog/archives/204/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://1kb.jp/blog/archives/204" />
	</item>
		<item>
		<title>MySQLで昇順ソートする時、NULL を最後に持ってくる</title>
		<link>http://1kb.jp/blog/archives/74</link>
		<comments>http://1kb.jp/blog/archives/74#comments</comments>
		<pubDate>Tue, 30 Dec 2008 08:53:49 +0000</pubDate>
		<dc:creator>1kb</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://1kb.jp/blog/?p=74</guid>
		<description><![CDATA[はまったのでメモ。 某Webアプリを「スパゲッティPHPスクリプト+SQLite」から「CakePHP+MySQL」の環境に移植作業をしてました。ある情報を一覧表示したときの並び順が、移植元のアプリと違うのでorder句にあれこれ試してみてもうまくいきません。 しょうがないのでGoogle先生に聞いてみた。どうやら、DBMSによってNULLの値が上に来たり下に来たりするとのこと。昇順ソートの場合、SQLiteでは下に来て、MySQL上に来るらしい。こいつが原因だ（つーか常識？）。 MySQL で NULL を一番最後にして昇順にソートする 上記エントリーを参考にしました。いつもありがとうございます。 答えとしてはorder by 句に &#8216;IS NULL &#8216;を入れればOK。具体的なSQL例文は以下のとおり SELECT * FROM truth_girls ORDER BY priority IS NULL; CakePHP風には $order = 'Model.priority IS NULL'; $alldata = $this-&#62;Model-&#62;findAllByFlag('1', null, $order); こんな感じでしょうか。]]></description>
			<content:encoded><![CDATA[<p>はまったのでメモ。<br />
某Webアプリを「スパゲッティPHPスクリプト+SQLite」から「CakePHP+MySQL」の環境に移植作業をしてました。ある情報を一覧表示したときの並び順が、移植元のアプリと違うのでorder句にあれこれ試してみてもうまくいきません。</p>
<p>しょうがないのでGoogle先生に聞いてみた。どうやら、DBMSによってNULLの値が上に来たり下に来たりするとのこと。昇順ソートの場合、SQLiteでは下に来て、MySQL上に来るらしい。こいつが原因だ（つーか常識？）。</p>
<ul>
<li><a href="http://www.syuhari.jp/blog/archives/69">MySQL で NULL を一番最後にして昇順にソートする</a></li>
</ul>
<p>上記エントリーを参考にしました。いつもありがとうございます。<br />
答えとしてはorder by 句に &#8216;IS NULL &#8216;を入れればOK。具体的なSQL例文は以下のとおり</p>
<pre>SELECT * FROM truth_girls ORDER BY priority <strong><span style="color: #ff0000;">IS NULL</span></strong>;</pre>
<p>CakePHP風には</p>
<pre>$order = 'Model.priority <strong><span style="color: #ff0000;">IS NULL</span></strong>';
$alldata = $this-&gt;Model-&gt;findAllByFlag('1', null, $order);</pre>
<p>こんな感じでしょうか。</p>
]]></content:encoded>
			<wfw:commentRss>http://1kb.jp/blog/archives/74/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://1kb.jp/blog/archives/74" />
	</item>
	</channel>
</rss>
