テーブル名は複数形
src/Model/Table/
HogesTable.php
ここでは
PostsTable.php
<?php namespace App\Model\Table; use Cake\ORM\Table; class PostsTable extends Table { public function initialize(array $config) { $this->addBehavior('Timestamp'); } }
やばい、完全に眠くなってきた。
随机应变 ABCD: Always Be Coding and … : хороший
テーブル名は複数形
src/Model/Table/
HogesTable.php
ここでは
PostsTable.php
<?php namespace App\Model\Table; use Cake\ORM\Table; class PostsTable extends Table { public function initialize(array $config) { $this->addBehavior('Timestamp'); } }
やばい、完全に眠くなってきた。
まずローカルにcomposerを入れます。
curl -sS https://getcomposer.org/installer | php
続いて、cakeをインストール
php composer.phar create-project --prefer-dist cakephp/app myapp
cd myapp
サーバーを立てます。
bin/cake server -H 192.168.33.10 -p 8000
準備が出来ました。
DBの設定
config/app.php
'Datasources' => [ 'default' => [ 'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Mysql', 'persistent' => false, 'host' => 'localhost', /** * CakePHP will use the default DB port based on the driver selected * MySQL on MAMP uses port 8889, MAMP users will want to uncomment * the following line and set the port accordingly */ //'port' => 'non_standard_port_number', 'username' => 'my_app', 'password' => 'secret', 'database' => 'my_app', 'encoding' => 'utf8', 'timezone' => 'UTC', 'flags' => [], 'cacheMetadata' => true, 'log' => false,
mvcをつくる
bin/cake bake all posts
(※postsはDBのテーブル名)
そして、192.168.33.10:8000/posts をたたくと、DBのテーブルのカラム・レコード一覧が表示される。
create table cake.posts( id int unsigned auto_increment primary key, title varchar(255), body text, created datetime default null, modified datetime default null );
こちらは画像生成が可能で
ImageJPEG($out, '$hoge');
こちらは出来ないので、何故か紋々としていたら、
ImageJPEG($out, 'img/'.$hoge.'');
フォルダのパーミッションが
RWX
R X
R X
755 になっていたからですね。
RWX
RWX
RWX
777 に変更したところ、上手くいきました。
危ない危ない、もう少しでやけ酒(現実逃避)コースでした。
localなどに置くのが普通とのことですが、
<Files ~ "hoge.php"> Order allow,deny Deny from all </Files>
hoge1~3のテーブルから検索しようとする際に、
$sql = "select * from hoge01, hoge02, hoge03";
と書くと、強制終了となりました。
$sql = "select * from hoge01 union select * from hoge02 union select * from hoge03";
こちらなら、問題なく検索されます。
<?php function getR($i){ if($i < 128){ $ret = 0; } else if($i > 127 && $i < 191){ $ret = ($i-127)*4; } else if ($i > 190){ $ret = 255; } return $ret; } function getG($i){ if($i >= 64 && $i <= 191){ $ret = 255; } else if ($i < 64){ $ret = $i * 4; } else { $ret = 256-($i-191)*4; } return $ret; } function getB($i){ if($i <= 64){ $ret = 255; }else if($i > 64 && $i < 127){ $ret = 255-($i-64)*4; } else if($i >= 127){ $ret = 0; } return $ret; } header("content-type: image/png"); $image = imagecreate(512,100); for($i = 0; $i < 256; $i++){ $tmp = imagecolorallocate($image, getR($i), getG($i), getB($i)); imagefilledrectangle($image, $i * 2, 0, ($i*2)+2, 99, $tmp); } imagepng($image); imagedestroy($image); ?>
<style> .current{ font-weight: bold; } </style> <?php $logdata = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); $count = count($logdata); $max = 5; $limit = ceil($count/$max); $page = empty($_GET["page"])? 1: $_GET["page"]; $pstart = ($page == 1)? 0: ($page-1)* $max; $pend = ($page * $max); print"<p>"; for($i=$pstart;$i<$pend;$i++){ if($i >= $count){break;} print $logdata[$i]." "; } print "</p>"; $page = empty($_GET["page"])? 1:$_GET["page"]; $disp=3; $next = $page+1; $prev = $page-1; $start = ($page-floor($disp / 2) > 0) ? ($page-floor($disp/2)) : 1; $end = ($start > 1) ? ($page+floor($disp/2)) : $disp; //55 $start = ($limit < $end) ? $start-($end-$limit):$start; if($page != 1 ) { print '<a href="?page='.$prev.'">« 前へ</a> '; } if(($page - $disp) > 0 | $page == $disp){ if($start >= floor($disp/2)){ print '<a href="?page=1">1</a>'; if($start > floor($disp/2) and $page != $disp){ print "..."; } if($page == $disp){ print " "; } } } for($i=$start; $i <= $end ; $i++){ $class = ($page == $i) ? ' class="current"':""; if($i <= $limit && $i > 0 ) print '<a href="?page='.$i.'"'.$class.'>'.$i.'</a> '; } if($limit > $end){ if($limit - 1 > $end) print "..."; print '<a href="?page='.$limit.'">'.$limit.'</a>'; } if($page < $limit){ print ' <a href="?page='.$next.'">次へ »</a>'; } ?>
想像してたより、早かった。
<style> .current{ font-weight: bold; } </style> <?php $limit = 10; $page = empty($_GET["page"])? 1:$_GET["page"]; $disp=3; $next = $page+1; $prev = $page-1; $start = ($page-floor($disp / 2) > 0) ? ($page-floor($disp/2)) : 1; $end = ($start > 1) ? ($page+floor($disp/2)) : $disp; //55 $start = ($limit < $end) ? $start-($end-$limit):$start; if($page != 1 ) { print '<a href="?page='.$prev.'">« 前へ</a>'; } if(($page - $disp) > 0 | $page == $disp){ if($start >= floor($disp/2)){ print '<a href="?page=1">1</a>'; if($start > floor($disp/2) and $page != $disp){ print "..."; } if($page == $disp){ print " "; } } } for($i=$start; $i <= $end ; $i++){ $class = ($page == $i) ? ' class="current"':""; if($i <= $limit && $i > 0 ) print '<a href="?page='.$i.'"'.$class.'>'.$i.'</a> '; } if($limit > $end){ if($limit - 1 > $end) print "..."; print '<a href="?page='.$limit.'">'.$limit.'</a>'; } if($page < $limit){ print '<a href="?page='.$next.'">次へ »</a>'; } ?>
<?php $page = empty($_GET["page"])? 1:$_GET["page"]; function paging($page,$disp=5){ $limit = 10; $page = empty($_GET["page"])? 1: $_GET["page"]; $next = $page+1; $prev = $page-1; if($page != 1){ echo '<a href="?page='.$prev.'">« 前へ</a>'; } if($page < $limit){ echo ' <a href="?page='.$next.'">次へ »</a>'; } // print "current:".$page."<br>"; // print "next:".$next."<br>"; // print "prev:".$prev."<br>"; } echo paging(); ?>
例えば、60個のデータを1ページ20個まで表示すると考えた場合、
$_GET[“param”]で、パラメーターの値を取得して、条件分岐で表示できる。
<?php $data = 60; $per_show = 20; $page_count = (int)(($data -1) / $per_show) +1; // echo $page_count; echo $page_count . "ページまであります。<br>"; $param = (int)$_GET["page"]; if($param){ if($page_count >= $param){ echo $param . "ページ目です。"; } } ?>
なるほど、こういうことか。
ページングを足してみます。
<?php $data = 70; $per_show = 20; $page_count = (int)(($data -1) / $per_show) +1; // echo $page_count; echo $page_count . "ページまであります。<br>"; $param = (int)$_GET["page"]; if($param){ if($page_count >= $param){ echo $param . "ページ目です。<br>"; } } echo "<br>"; for($i=0; $i< $page_count; $i++){ $page = $i + 1; echo "<a href=\"?page=".$page."\">".$page."</a> "; } ?>
うひょー