mysql 重複を除いた値の一覧抽出

以下で取得可能です。
SELECT DISTINCT colname FROM tablename;

mysql> select distinct sector from lists;
+————————–+
| sector |
+————————–+
| 水産・農林業 |
| 卸売業 |
| 建設業 |
| 非鉄金属 |
| 鉱業 |
| 機械 |
| サービス業 |
| 金属製品 |
| 情報・通信 |
| 食料品 |
| 医薬品 |
| 不動産業 |
| 陸運業 |
| その他金融業 |
| 小売業 |
| その他製品 |
| 繊維製品 |
| 電気機器 |
| ガラス・土石製品 |
| 証券業 |
| 輸送用機器 |
| REIT銘柄一覧 |
| 石油・石炭製品 |
| 化学 |
| パルプ・紙 |
| 精密機器 |
| ゴム製品 |
| 鉄鋼 |
| 銀行業 |
| 保険業 |
| 倉庫・運輸関連業 |
| 海運業 |
| 空運業 |
| 電気・ガス業 |
+————————–+
34 rows in set (0.05 sec)

早く気づけばよかった。

DBから同業種・同じ市場の銘柄を抽出する

select * from table where で条件を記載します。

$code = empty($_GET["code"])? 'null' : $_GET["code"];

$dsn = "mysql:dbname=equity;host=localhost";
$user = "hoge";
$password = "hogehoge";
 
try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e){
    print('connection failed:'.$e->getMessage());
} 


$sql = "select * from lists where code = $code";
$stmt = $dbh->query($sql);

$result = $stmt->fetch(PDO::FETCH_ASSOC);
$sector = $result['sector'];
$market = $result['market'];

echo "<b>".$result['name']. "</b>(".$code.") ";
echo $result['sector'] ." ".$result['market']. "<br><br>";
echo "同業種の銘柄(".$sector.")"."<br>";

$sql2 = "select * from lists where market = '$market' AND sector = '$sector' and code != $code";
$stmt2 = $dbh->query($sql2);
while($result = $stmt2->fetch(PDO::FETCH_ASSOC)){
	    echo $result["code"]." ".$result["name"]. "<br>";
}

パラメータを$_GETで受け取る

echo $_GET["code"];

コードの情報をDBから取得する

$time_start = microtime(true);

$code = empty($_GET["code"])? 'null' : $_GET["code"];
echo $code. "<br>";

$dsn = "mysql:dbname=equity;host=localhost";
$user = "hoge";
$password = "hogehoge";
 
try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e){
    print('connection failed:'.$e->getMessage());
} 

$sql = "select * from lists where code = $code";
$stmt = $dbh->query($sql);

$result = $stmt->fetch(PDO::FETCH_ASSOC);
 
echo $result['name']. "<br>";
echo $result['sector']. "<br>";
echo $result['market']. "<br>";

echo "<br>";
$time = microtime(true) - $time_start;
echo "{$time}秒";

OK!

パラメータからデータを読み込む

パラメータを変える

なるほど

さくら共有サーバー cake3.5インストール後の.htaccessの設定

www/cake/に testというappを作っています。
それぞれのhtaccessのRewriteBaseでカレントディレクトリを指定してあげます。

/cake/.htaccess

  
   RewriteEngine on  
   RewriteRule    ^$ test/webroot/    [L]  
   RewriteRule    (.*) app/webroot/$1 [L]  
   RewriteBase /  
  

/cake/test/.htaccess

  
    RewriteEngine on  
    RewriteRule    ^$    webroot/    [L]  
    RewriteRule    (.*) webroot/$1    [L]  
    RewriteBase /test
  

/cake/test/webroot/.htaccess


    RewriteEngine On
    RewriteBase /test/webroot
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

きたー

ここまでもってくるの、結構煩雑だな~
VPSの方が簡単にセットアップできるという謎現象ですね。

さくらサーバーでintlを入れた後にcakephp3.5エラー

intlも入ったし、さあ、確認とおもったら、

php composer.phar create-project --prefer-dist cakephp/app myapp

Problem 1
– cakephp/cakephp 3.5.9 requires ext-intl * -> the requested PHP extension intl is missing from your system.

これはがっかりしますね。
確かに、php -i | grep intlで何も表示されない。

原因は、この php.ini は/usr/local/php/5.6/lib/php.iniの方を読み込んでいるから。
コントロールパネルで設定したphp.iniの方は、

php -c /home/[username]/www/php.ini -i | grep intl 

で表示される。

というわけで、cake3.5を入れる際も、以下のように打ちます。

php -c /home/[username]/www/php.ini composer.phar create-project --prefer-dist cakephp/app test

こんどは上手くいってるようです。

さくら共有サーバーにintlを入れて、cakephp3.5をインストール

intlがないと動きません。
というこで、まずicuライブラリを入れます。ここはサクサクいきます。

$ cd ~/local/src
$ wget http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz
$ tar zxvf icu4c-54_1-src.tgz
$ cd icu/source
$ ./configure --prefix=$HOME/local
$ gmake
$ gmake install

続いて、intl

$ cd ~/local/src
$ wget http://pecl.php.net/get/intl-3.0.0.tgz
$ tar zxvf intl-3.0.0.tgz
$ cd intl-3.0.0
$ phpize

次に、.configureをしますが、phpのバージョンを指定します。
/php/5.6/
ここでphpのバージョンを指定しないと、エラーになりました。

$ ./configure --prefix=$HOME/local --with-icu-dir=$HOME/local --with-php-config=/usr/local/php/5.6/bin/php-config
$ make

あとは、php.initでextensionのパスを通します。
phpinfo()に入ってることを確認。

バージョン指定のところ、毎回見落とすんだよな~
自暴自棄です。

centos php7.0.27にintlを入れようとして嵌ったこと

まず、intlを入れようとします。

# sudo yum install --enablerepo=remi --enablerepo=remi-php56 -y php-intl

すると、phpが7.0.27とエラー表示されます。

Error: Package: php-intl-5.6.34-1.el6.remi.x86_64 (remi-php56)
           Requires: php-common(x86-64) = 5.6.34-1.el6.remi
           Installed: php-common-7.0.27-1.el6.remi.x86_64 (@remi-php70)
               php-common(x86-64) = 7.0.27-1.el6.remi
           Available: php-common-5.3.3-49.el6.x86_

phpのバージョン確認

# php -v
PHP 7.0.27 (cli) (built: Jan  2 2018 12:12:41) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

intlのリストを表示

# yum list | grep intl
intltool.noarch                            0.41.0-1.1.el6              @anaconda       -CentOS-201703281317.x86_64/6.9
perl-libintl.x86_64                        1.20-1.el6                  base
php-intl.x86_64                            5.3.3-49.el6                base
php-symfony-intl.noarch                    2.3.42-1.el6                epel
php54-php-intl.x86_64                      5.4.45-14.el6.remi          remi-safe
php55-php-intl.x86_64                      5.5.38-8.el6.remi           remi-safe
php56-php-intl.x86_64                      5.6.34-1.el6.remi           remi-safe
php70-php-intl.x86_64                      7.0.28-1.el6.remi           remi-safe
php71-php-intl.x86_64                      7.1.15-1.el6.remi           remi-safe
php72-php-intl.x86_64                      7.2.3-1.el6.remi            remi-safe

php70-php-intl.x86_64 を入れます。

# sudo yum install php70-php-intl

はいったか確認します。

# php -i | grep intl
#

なに!? 入ってない。
/opt/remi/php70/root/usr/lib64/php/modules/ に入っている。

/usr/lib64/php/modules にintl.soを入れる。

phpinfo()

コマンドライン

# php -i | grep intl
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

ふー焦った。

optはアドオンアプリケーションソフトウェアパッケージ(追加アプリケーション)
remiサードパーティのリポジトリの一つ とのこと。

深部物性値(P波・S波)

P波・S波
http://www.j-shis.bosai.go.jp/api-dstruct-phys

$BASE_URL = "http://www.j-shis.bosai.go.jp/map/api/dstrct/V1/phys.json";
$obj = json_decode(file_get_contents($BASE_URL));

print_r("<pre>");
var_dump($obj);
print_r("</pre>");

P波
[“SVP”]=>
object(stdClass)#12 (33) {
[“tn31”]=>
string(4) “5500”
[“tn29”]=>
string(4) “5000”
[“tn20”]=>
string(4) “3400”
[“tn8”]=>
string(4) “2100”
[“tn5”]=>
string(4) “1800”
[“tn32”]=>
string(4) “5700”
[“tn7”]=>
string(4) “2000”
[“tn6”]=>
string(4) “2000”
[“tn11”]=>
string(4) “2300”
[“tn25”]=>
string(4) “4000”
[“tn13”]=>
string(4) “2400”
[“tn9”]=>
string(4) “2100”
[“tn4”]=>
string(4) “1800”
[“tn19”]=>
string(4) “3200”
[“tn17”]=>
string(4) “2700”
[“tn30”]=>
string(4) “5500”
[“tn3”]=>
string(4) “1700”
[“tn15”]=>
string(4) “2500”
[“tn33”]=>
string(4) “6000”
[“tn1”]=>
string(4) “1600”
[“tn18”]=>
string(4) “3000”
[“tn28”]=>
string(4) “4600”
[“tn27”]=>
string(4) “5000”
[“tn16”]=>
string(4) “2600”
[“tn10”]=>
string(4) “2200”
[“tn21”]=>
string(4) “3500”
[“tn22”]=>
string(4) “3600”
[“tn23”]=>
string(4) “3700”
[“tn24”]=>
string(4) “3800”
[“tn14”]=>
string(4) “2500”
[“tn26”]=>
string(4) “4000”
[“tn2”]=>
string(4) “1600”
[“tn12”]=>
string(4) “2400”
}

S波
[“SVS”]=>
object(stdClass)#9 (33) {
[“tn31”]=>
string(4) “3200”
[“tn29”]=>
string(4) “2700”
[“tn20”]=>
string(4) “1600”
[“tn8”]=>
string(3) “700”
[“tn5”]=>
string(3) “550”
[“tn32”]=>
string(4) “3300”
[“tn7”]=>
string(3) “650”
[“tn6”]=>
string(3) “600”
[“tn11”]=>
string(3) “850”
[“tn25”]=>
string(4) “2100”
[“tn13”]=>
string(3) “950”
[“tn9”]=>
string(3) “750”
[“tn4”]=>
string(3) “500”
[“tn19”]=>
string(4) “1500”
[“tn17”]=>
string(4) “1300”
[“tn30”]=>
string(4) “3100”
[“tn3”]=>
string(3) “450”
[“tn15”]=>
string(4) “1100”
[“tn33”]=>
string(4) “3400”
[“tn1”]=>
string(3) “350”
[“tn18”]=>
string(4) “1400”
[“tn28”]=>
string(4) “2900”
[“tn27”]=>
string(4) “2700”
[“tn16”]=>
string(4) “1200”
[“tn10”]=>
string(3) “800”
[“tn21”]=>
string(4) “1700”
[“tn22”]=>
string(4) “1800”
[“tn23”]=>
string(4) “1900”
[“tn24”]=>
string(4) “2000”
[“tn14”]=>
string(4) “1000”
[“tn26”]=>
string(4) “2100”
[“tn2”]=>
string(3) “400”
[“tn12”]=>
string(3) “900”
}

地震予想のため、首都圏のP-Wave, S-Waveのリアルタイム値を取得してグラフにしたいんだが、なんか違う気がする。
少し掘ろうとすると、専門性が一気に高くなってついていけん。