<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>けいごの開発日記</title>
<link>https://ameblo.jp/dkeigo/</link>
<atom:link href="https://rssblog.ameba.jp/dkeigo/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>おもにPHPでの開発した内容を掲載していきます。</description>
<language>ja</language>
<item>
<title>[cakephp] $this-&gt;setで保存した変数をコントローラーで参照する。</title>
<description>
<![CDATA[ <p>#AppConroller.php</p><p>$this-&gt;set('userinfo',$userinfo);</p><br><p>#PostController.php</p><p>$this-&gt;viewVars['userinfo']</p><br><br><p>このようにAppControllerで保存した変数をほかの</p><p>コントローラーで見る時がある。</p><br>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-11235502259.html</link>
<pubDate>Sat, 28 Apr 2012 11:36:44 +0900</pubDate>
</item>
<item>
<title>[cakephp] テーブルからデータ取得</title>
<description>
<![CDATA[ <p>//こちらは検索結果をすべて取得する例<br>$timetables = $this-&gt;Timetable-&gt;find('all',array(<br>'conditions' =&gt; array('Timetable.userid' =&gt; $vid ,'DATE(Timetable.startdate) =' =&gt; $ddate ),<br>'fields' =&gt; array('Timetable.startdate', 'DISTINCT Timetable.startdate'),<br>'order' =&gt; array('Timetable.startdate' =&gt; 'ASC'),<br>'group' =&gt; array('Timetable.startdate'),<br>'limit' =&gt; 50<br>));</p><br><p>このallの場所をfirstにすれば、最初の１件のみ取得することが出来る。<br><br>もし別のテーブルを取得する場合には次の宣言が必要<br>//使いたいコントローラーの上にて宣言する。<br>var $uses = array('User','Prefecture','Category');<br>注意点は必ず追加したい、テーブル名と自分自身のテーブル名も含める。</p><p>例えば今回の例で言うとコントローラーが<br>users_controller.phpでその中でPrefectureテーブルとCategoryテーブルを<br>使用したい場合になります。もちろんテーブル名はクラス名なので、実際の<br>テーブル名は複数系になります。</p><br>&lt;script type="text/javascript"&gt;&lt;!--<br>google_ad_client = "ca-pub-7245466150014293";<br>/* ameblog */<br>google_ad_slot = "8734624761";<br>google_ad_width = 728;<br>google_ad_height = 15;<br>//--&gt;<br>&lt;/script&gt;<br>&lt;script type="text/javascript"<br>src="<a href="http://pagead2.googlesyndication.com/pagead/show_ads.js">http://pagead2.googlesyndication.com/pagead/show_ads.js</a>"&gt;<br>&lt;/script&gt;<br>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-11029851162.html</link>
<pubDate>Mon, 26 Sep 2011 10:32:39 +0900</pubDate>
</item>
<item>
<title>[CakePHP] ログイン後にグループごとに表示ページを変更する。</title>
<description>
<![CDATA[ <p>今回のテーマはグループごとに処理を分ける方法です。<br>意外と必要な要件な気がしますが、検索してもなかなかよい<br>サンプルを見つけることが出来ず、約２日間も解決に費やしました。(/_;)</p><p><br>ログイン後に表示させるトップページをグループごとに変更するのですが<br>どのタイミングで変更すればいいのか分からずとても苦労しました。<br>ログインの認証っていったい全体どこでやっているのか、そこをつきとめるのが<br>なかなか出来なかったです。<br>下記に自分なりに分かった事を記述します。</p><p><br>まずログイン画面でログインボタンを押してからの処理です。</p><p><br>１．app_Controller.phpが呼ばれる<br>２．user_controller.phpのbeforeFilter処理が呼ばれる<br>３．この後にリダイレクト先（$this-&gt;Auth-&gt;loginRedirect）が呼ばれる</p><p><br>こんな感じなので、２で処理を行い、変更を試みたのですが反映されず<br>結局下記の流れになりました。</p><p><br>１．app_Controller.phpが呼ばれる・・・$this-&gt;Auth-&gt;loginRedirectを無効に設定<br>２．user_controller.phpのbeforeFilter処理が呼ばれる<br>３．user_controller.phpのlogin処理が呼ばれる<br>４．login処理の中で、_login処理を呼ぶ<br>５．_login処理の中でグループを取得して、処理分岐を行っています。</p><p><br>はまったところは、やるたびに違う動きをしていて、テストをブラウザの戻るボタンを<br>押してやっていたので、ログアウト処理がうまく出来てなくて、たまにうまくいっていました。</p><p><br>こちらがサンプルになります。</p><p><br>[app_controller.php]<br>&lt;?php<br>class AppController extends Controller {<br> var $components = array('Acl', 'Auth', 'Session');<br> function beforeFilter() {<br>  // AuthComponent の設定<br>  $this-&gt;Auth-&gt;authorize = 'actions';<br>  $this-&gt;Auth-&gt;loginAction = array('controller' =&gt; 'users', 'action' =&gt; 'login');<br>  //$this-&gt;Auth-&gt;loginRedirect = array('controller' =&gt; 'users', 'action' =&gt; 'csensei');<br>  //$this-&gt;Auth-&gt;logoutRedirect = $this-&gt;redirect('http://www.aaaaa.com');<br>  $this-&gt;Auth-&gt;loginError = 'ログインエラーです';<br>  $this-&gt;Auth-&gt;authError = '権限がありません';</p><p>  $this-&gt;Auth-&gt;fields = array('username' =&gt; 'email','password' =&gt; 'password');</p><p>  $this-&gt;set('user',$this-&gt;Auth-&gt;user());<br> }<br>}<br>?&gt;</p><p><br>[users_controller.php]<br>function beforeFilter() {<br> parent::beforeFilter();<br> $this-&gt;Auth-&gt;allow('*');<br> $userdata = $this-&gt;Auth-&gt;user();<br>}</p><p>function login() {<br> if ($this-&gt;Auth-&gt;user()) {</p><p> }else{<br>  $this-&gt;Session-&gt;setFlash(__('パスワードが違います。', true));<br> }<br> $this-&gt;_login();<br>}</p><p>Function _login(){<br> if ($this-&gt;Auth-&gt;user()) {<br>  if($this-&gt;Auth-&gt;user('group_id') == 1){<br>   $this-&gt;Auth-&gt;loginRedirect = array('controller' =&gt; 'users', 'action' =&gt; 'index');<br>  }elseif($this-&gt;Auth-&gt;user('group_id') == 2){<br>   $this-&gt;Auth-&gt;loginRedirect = array('controller' =&gt; 'users', 'action' =&gt; 'csensei');<br>  }elseif($this-&gt;Auth-&gt;user('group_id') == 3){<br>   $this-&gt;Auth-&gt;loginRedirect = array('controller' =&gt; 'users', 'action' =&gt; 'cseito');<br>  }<br>   $userdata = $this-&gt;Auth-&gt;user();<br>   $this-&gt;redirect($this-&gt;Auth-&gt;loginRedirect);<br>  }<br>}<br> </p>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-11020319077.html</link>
<pubDate>Sat, 17 Sep 2011 08:26:25 +0900</pubDate>
</item>
<item>
<title>[CakePHP] テキストBOXでサイズが変更できない。</title>
<description>
<![CDATA[ <p>通常sizeを指定すると、テキストBOXのサイズが変更されるらしいのだが</p><p>変更されない。</p><br><p>echo $this-&gt;Form-&gt;input('age',array('label' =&gt; '年齢' , 'size' =&gt; '5'))."\n";</p><br><p>そこで、いろいろと調べたところ、styleのwidthを変更することによって</p><p>サイズを調整出来ることが判明。</p><p>echo $this-&gt;Form-&gt;input('age',array('label' =&gt; '年齢' , 'style' =&gt; 'width:50px'))."\n";</p><br><p>ちなみに最後についている\nですが、HTMLに出力されたときに、改行されるので</p><p>見やすくなります。</p><br>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-11011317242.html</link>
<pubDate>Thu, 08 Sep 2011 08:00:13 +0900</pubDate>
</item>
<item>
<title>[CakePHP] webrootを変更するとリンク先がおかしい</title>
<description>
<![CDATA[ ちゃんとページは表示されるのに、なぜかそのページからのリンク先が<br>おかしい<br><br>例<br>http://www.test.com/app/users/add<br><br>ここからリンクをすると<br>http://www.test.com/app/users/view<br>に行って欲しいのですが<br>http://www.test.com/users/view<br>になり、もちろんエラーになり４０４と表示されてしまう。<br><br>いろいろと調べてみると、htaccessファイルをいじればよいなど<br>いろいろと書かれていますが、そーではなく前にも同じ間違えをして<br>それを思い出す事が出来ました。<br><br>そもそもcakephpの仕様だと思うのですが、webrootにappという名前の<br>フォルダを作ってはいけなかったのです。<br><br>そしてappをmyappに変更したところ、一気に解決！<br>これに約１日悩んでいました。　なんか昔のプログラマーに戻った気分です。<br><br>とりあえず、解決してすっきりです。<br>もし同じ悩みの人、これで解決出来ますよ。<br><br>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-11007297288.html</link>
<pubDate>Sun, 04 Sep 2011 10:10:14 +0900</pubDate>
</item>
<item>
<title>CakePHPインストールおよびセットアップ編</title>
<description>
<![CDATA[ <p>今回は今更ながらセットアップ編をお送り致します。</p><br><p>まず最新版のCakePHPをダウンロードしましょう。<br>こちら　（<a href="https://github.com/cakephp/cakephp/downloads">https://github.com/cakephp/cakephp/downloads</a>）<br>この時点では1.3.11が最新なので、こちらをダウンロード</p><br><p>ZIPでもtar.gzでもどちらでもOKです。ただしSSHでサーバに接続出来ない<br>人はZIP版をダウンロードして、PCで解凍してから、FTPでアップすることを<br>お勧めします。</p><br><p>[ファイルを解凍] ･･･ZIPの人は飛ばして下さい。<br>適当な場所でtar.gzファイルを解凍します。<br>tar zxvf cakephp-cakephp-1.3.11-23-gff0119b.tar.gz</p><br><p>解凍すると<br>drwxr-xr-x  13 keigo hpusers  384 2011-08-29 11:19 app<br>drwxr-xr-x   6 keigo hpusers  304 2011-08-29 11:19 cake<br>-rw-r--r--   1 keigo hpusers 1848 2011-08-29 11:19 index.php<br>drwxr-xr-x   2 keigo hpusers   72 2011-08-29 11:19 plugins<br>-rw-r--r--   1 keigo hpusers 1055 2011-08-29 11:19 README<br>drwxr-xr-x   3 keigo hpusers   72 2011-08-29 11:19 vendors<br>とファイルやフォルダが出て来ますが、必須なのは<br>app フォルダとcakeフォルダとindex.phpになります。</p><p><br>[ファイルの配置]<br>解凍して出来たappとcakeフォルダを適切な場所に配置します。<br>これはセキュリティ上WEBからはアクセス出来ないところが好ましいです。<br>ホスティング会社によっては、公開済みフォルダしかアクセス権限がない場合が<br>ありその場合はしょうがないですね。</p><p><br><a href="mailto:keigo@s137:~/cake/sensei">keigo@s137:~/cake/sensei</a>&gt; ls -l<br>total 0<br>drwxr-xr-x  13 keigo hpusers 384 2011-08-29 11:19 app<br>drwxr-xr-x   6 keigo hpusers 304 2011-08-29 11:19 cake<br>drwxr-xr-x   4 keigo hpusers 216 2011-08-30 18:20 cakephp-cakephp-ff0119b<br>とりあえずこれで配置完了</p><p>次に公開ディレクトリ作成<br>ここでは、下記環境に設定します。<br>公開URL: senseinoyotei.ebb.jp<br>アプリケーション: app</p><br><p>senseinoyotei.ebb.jp/app ・・・これでCakePHPが動作する。<br>人によっては、大元から動作させたい人もいると思います<br>その場合はappのディレクトリ作成は必要ありません。また<br>appも好きな名前をつけて問題ありません。</p><br><p><a href="mailto:keigo@s137:~/public_html/senseinoyotei.ebb.jp">keigo@s137:~/public_html/senseinoyotei.ebb.jp</a>&gt; pwd<br>/virtual/keigo/public_html/senseinoyotei.ebb.jp<br><a href="mailto:keigo@s137:~/public_html/senseinoyotei.ebb.jp">keigo@s137:~/public_html/senseinoyotei.ebb.jp</a>&gt; mkdir app<br><a href="mailto:keigo@s137:~/public_html/senseinoyotei.ebb.jp">keigo@s137:~/public_html/senseinoyotei.ebb.jp</a>&gt; cd app/<br><a href="mailto:keigo@s137:~/public_html/senseinoyotei.ebb.jp/app">keigo@s137:~/public_html/senseinoyotei.ebb.jp/app</a>&gt;</p><br><p>作成したディレクトリにindex.phpを配置します。<br><a href="mailto:keigo@s137:~/public_html/senseinoyotei.ebb.jp/app">keigo@s137:~/public_html/senseinoyotei.ebb.jp/app</a>&gt; ls -l<br>total 4<br>-rw-r--r--  1 keigo hpusers 1848 2011-08-30 18:26 index.php</p><br><p>[環境ファイル変更]<br>次に環境に会わせてindex.phpを変更します。<br>//      define('ROOT', dirname(__FILE__));<br>define('ROOT', DS . 'virtual' .DS. 'keigo'. DS . 'cake'. DS . 'sensei');</p><br><p>今回はcakeフォルダとappフォルダが同じなので、この設定を<br>変えるだけで大丈夫です。<br>ここでのDSは/を意味しています。それぞれの環境に会わせて<br>設定して下さい。</p><br><p>この時にページにアクセスしてエラーが出ていたら<br>パスが間違っている可能性があります。</p><br><p>またアクセス権がないエラーであればOKです。</p><br><p>[次にアクセス権の変更]<br>先ほど移動したappフォルダに書き込み権限を与えます。</p><p>tmpフォルダに権限を与えます。<br><a href="mailto:keigo@s137:~/cake/sensei/app">keigo@s137:~/cake/sensei/app</a>&gt; chmod 777 tmp</p><br><p>[データベースファイルの作成]<br>テンプレートがconfigフォルダにあるので、こちらをコピーする<br><a href="mailto:keigo@s137:~/cake/sensei/app/config">keigo@s137:~/cake/sensei/app/config</a>&gt; cp database.php.default database.php</p><br><p>次に編集していきます。<br>var $default = array(<br>        'driver' =&gt; 'mysql',<br>        'persistent' =&gt; false,<br>        'host' =&gt; 'localhost',<br>        'login' =&gt; 'user',<br>        'password' =&gt; 'password',<br>        'database' =&gt; 'database_name',<br>        'prefix' =&gt; '',<br>        //'encoding' =&gt; 'utf8',<br>);<br>この個所を編集していきます。<br>修正箇所は<br>host<br>login<br>password<br>database<br>今回はMySQLを使用します。ここではデータベースの作成は<br>触れませんので各自作成し、この項目を修正して下さい。</p><br><p>これで、画面を更新して見ましょう。　エラーが基本的に<br>消えましたでしょうか？<br>ただ、まだアプリケーションは作成していないので、<br>Missing Method in AppController<br>だけ表示されていればOKです。</p><br><p>これでアプリケーションを作成する準備が整いました。<br>とりあえず、今回はここまで</p><p><br></p>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-11002649247.html</link>
<pubDate>Tue, 30 Aug 2011 21:09:14 +0900</pubDate>
</item>
<item>
<title>配列の並び替え</title>
<description>
<![CDATA[ <p>データが配列に入っている時で並び替えを行い時があります。</p><p>今回はただの配列ではなく、多次元配列の場合の例を紹介します。</p><br><p>配列が空かチェックを行い、降順でソートしています。</p><p>昇順でソートする場合はSORT_ASCを使用します。</p><br><p>またオプションでソートする項目が文字列なのか数字なのか指定できます。</p><p>$eyears, SORT_ASC, SORT_STRING</p><p>この場合は文字列です。</p><p>数字の場合はSORT_NUMERICを使用します。</p><br><p>  if(!empty($res[data])){<br>   foreach($res[data] as $key =&gt; $row){<br>    $byears[$key] = $row["byear"];<br>    $eyears[$key] = $row["eyear"];<br>   } <br>   array_multisort($byears,SORT_DESC,$eyears,SORT_DESC,$res[data]);<br>  }</p>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-10905842035.html</link>
<pubDate>Sat, 28 May 2011 18:28:17 +0900</pubDate>
</item>
<item>
<title>データ取得時の並び替え</title>
<description>
<![CDATA[ <p>order句を使用する<br>昇順の場合は指定なしで、降順の場合はSESCを指定する。</p><p>例<br>昇順　'order'      =&gt; array('Gallery.modified')<br>降順　'order'      =&gt; array('Gallery.modified' =&gt; 'DESC')</p><p>$this-&gt;paginate = array(<br>     'conditions' =&gt; array('User.del' =&gt; 0, 'User.state' =&gt; 1, 'User.lcategory_id' =&gt; $category),<br>     'group'      =&gt; array('Gallery.user_id'),<br>     'order'      =&gt; array('Gallery.modified' =&gt; 'DESC'),<br>     'limit'      =&gt; 50<br>     );<br></p>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-10905655373.html</link>
<pubDate>Sat, 28 May 2011 14:57:22 +0900</pubDate>
</item>
<item>
<title>SelectBOXとRADIOBOX</title>
<description>
<![CDATA[ <p>#Select BOX<br>echo $form-&gt;input('language_id', array(<br>         'type'=&gt; 'redio',<br>         'label' =&gt; 'Language',<br>         'legend' =&gt; false,<br>         'separator' =&gt; '&lt;label&gt;&lt;/label&gt;',<br>         'class' =&gt; 'float_left',<br>         'options'=&gt; array(<br>          '1'=&gt;'Japanese',<br>          '2'=&gt;'South Korean',<br>          '3'=&gt;'Chinese',<br>          '4'=&gt;'French'<br>          )<br>       ))."\n";<br>       <br>#Radio BOX<br>echo $form-&gt;input('language_id', array(<br>       'type'=&gt; 'radio',<br>       'label' =&gt; 'Language',<br>       'legend' =&gt; false,<br>       'separator' =&gt; '&lt;BR&gt;',<br>       'class' =&gt; 'radio_m',<br>       'options'=&gt; array(<br>        '1'=&gt;'Japanese',<br>        '2'=&gt;'South Korean',<br>        '3'=&gt;'Chinese',<br>        '4'=&gt;'French'<br>        )<br>     ))."\n";</p><p>separatorを設定しないと、RADIOボックスが横につながってしまう。<br>またclassを使用してボタンの間隔を調節しないと、テキストとずれてしまう。</p><p>class<br>input.radio_m {<br> vertical-align:0.5em;<br>}<br></p>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-10878022523.html</link>
<pubDate>Sun, 01 May 2011 16:30:57 +0900</pubDate>
</item>
<item>
<title>formから変数を取得</title>
<description>
<![CDATA[ <p>formから変数を取得</p><p>[HTML]</p><p>&lt;form name="form" action="./sample01.php" method="GET"&gt;<br>&lt;input name="name" type="text"&gt;</p><br><p>[PHP]<br>$name = $_REQUEST["name"];</p><br><p>input のnameが対応している。</p>
]]>
</description>
<link>https://ameblo.jp/dkeigo/entry-10877618111.html</link>
<pubDate>Sun, 01 May 2011 07:00:34 +0900</pubDate>
</item>
</channel>
</rss>
