Web言語のお勉強~ど素人が往く~

かつてVB6を1年くらい触った事があるだけのど素人がWeb言語に挑戦します。勉強結果を随時発表します。

Twitterの検索機能が使えなくなっていますね(^^;

あれ?

今、メインブログの今日の記事のツイート数をチェックしてみたんですよ。

f:id:MoneyReport:20151114231341j:plain

ツイートの数字の所をクリックすれば、ツイッターで言及してくれた内容が分かるじゃないですか。
ところが2015/11/14 23:10頃に実行してみると・・・

f:id:MoneyReport:20151114231451j:plain

ほへ?
なんだこの画面は?
始めてみました(^-^;

書いてある内容をメモしておくと下記の様になっています。

技術的な問題が発生しています。
ご迷惑をお掛けしております。


العربية Dansk Deutsch English English UK Español فارسی Suomi Filipino Français עִבְרִית हिन्दी Magyar Bahasa Indonesia Italiano 日本語 한국어 Bahasa Melayu Nederlands Norsk Polski Português Русский Svenska ภาษาไทย Türkçe 简体中文


© 2015 Twitter About Help Status

言語表記が「どれほどツイッターが世界中で使われているのか」を表していますね(^o^;
凄い。

Twitter検索?

普通に自分のTwitterページとかは見られるので、現在使えないのはツイート検索機能の様ですね。

試しにTwitterの検索窓に「マネー報道」と入力して虫眼鏡をクリックしてみましょう。

f:id:MoneyReport:20151114232418j:plain

すると・・・

f:id:MoneyReport:20151114231451j:plain

ババン!
やはり「技術的な問題が発生している」との事。
世界中で24時間365日運用されているシステムのメンテナンスはシャレになりませんね~、やっぱり(^o^;
Twitter社の技術者の方達の苦労が忍ばれます(-_-;

PHPのお勉強「SQLiteを使ってみるも、『could not find driver』エラーで動かず・・・」

SQLite

仕事でSQLiteを使う場面が出てきた。
勿論、本番環境ではなくて開発環境で軽く動作検証するのに使うだけではあるのだが。

というか

「SQLiteって何?」

というのが正直なところ。
調べたところ下記の様なものを指すらしい。

SQLite
SQLite(エスキューライト、エスキューエライト)は、パブリックドメインの軽量な関係データベース管理システム (RDBMS) である。


概要
サーバとしてではなくアプリケーションに組み込んで利用される軽量のデータベースである。 一般的なRDBMSに比べて大規模な仕事には不向きだが、中小規模ならば速度に遜色はない。 また、APIは単純にライブラリを呼び出すだけであり、データの保存に単一のファイルのみを使用することが特徴である。バージョン3.3.8からは全文検索のFTS1モジュールがサポートされた。その後 FTS2 - FTS3 と強化を続けバージョン3.7.4からはFTS4モジュールがサポートされている。


SQLite - Wikipedia

ふむふむ。
DBサーバーを立てなくてもファイルで簡易的にRDBMSを利用できる様にしてくれる物らしい。
これは便利かも。

で、PDOを使ってみると・・・

<?php
    $dbh = new PDO("sqllite:hogedb");
?>

パスも合っているし、php.iniの設定も確認したが
下記のslqite関連のdllは読み込んでくれているようだ。

extension=php_pdo_sqlite.dll
extension=php_sqlite3.dll

phpinfoメソッドも読んで動作を確認した。

phpinfo();

動いているように見える。

f:id:MoneyReport:20150922143838j:plain

だのに何故か実行すると・・・

could not find driver

のエラーが吐き出されるばかり(-_-;
何故だ何がいけない(@o@)

ケアレスミス

色々とやっている中で、気が付いた・・・

sqllite・・・

SQL LITEになってる(`_`)

Lが2個になっている・・・。

綴りを「sqlite」に直すと・・・

<?php
    $dbh = new PDO("sqlite:hogedb");
?>

動いたーーーー!!!!

単純ミスでお恥ずかしや(^O^;

SQLite入門 第2版

SQLite入門 第2版

追記

SQLiteってカラムに型を持ってないの!?
DateTime型のカラムに「NOW()」ってクエリで指定したら怒られた(>_<)

SQLiteにはデータ型がないので、日付を扱うときには注意が要ります。


あと、SQLiteで現在の時刻を取得する場合


select datetime('now');


と実行するのですが、現在の時刻からマイナス9時間された値が返ってきます。
ロケールがうまくあっていないようなので、これを使って時刻を表示する場合は、以下のように実行して、9時間プラスします。


select datetime('now' ,'+09:00:00');


SQLiteで日付を扱うときに注意すること - public static void main

追記2

そういえば、SQLiteってユーザー名とパスワードがいらないんですね~。

SQLiteへの接続
PDOでSQLiteへ接続するには以下のようなDSNを指定し、PDOオブジェクトのインスタンスを生成します。


$dsn = 'sqlite:c:\test\sqlite.db';
$db = new PDO($dsn);


上記のように第一引数に指定するDSNは、
「sqlite:DBフルパス」
という表記で記載します。
SQLiteにはユーザやパスワードの設定がないので、PDOオブジェクトを生成する際には、
第二、第三引数は必要ありません。
PDO接続(SQLite,MySQL) | PHP入門~bituse~

【PHP】送信ボタンでデータを送信する時の手法いろいろ

送信ボタンでデータを送信する

PHP勉強メモφ(..)

今回は、フォームからデータを受け取る方法について解説します。例として、外観をHTMLで作り、PHPを使って実際にデータを送受信する方法で紹介します。
PHPでフォームからデータを受け取る方法(GETとPOST) | TechAcademyマガジン

formの基本は下記の様な感じ。
formでくくった中にinputタグを書いてテキスト入力でデータ内容を書いてもらって、submitで送信してもらう。
送信先はformのactionで指定したページへと遷移する。

<h1>フォームデータの送信</h1>
<form action = “index.php” method = “get”>
<input type = “text” name =“comment/“><br/>
<input type = “submit” value =“送信/“>
</form>

複数のボタンを配置したい場合は?

「更新」と「削除」ボタンを同一画面に配置したいなど。

こちらは配列にボタン名称を格納するパターン。

PHPでfor文などで1つのページに複数ボタンを設置した場合のボタンの判別

  1. input typeのボタンやテキストのname部分を配列にしとく
  2. if($_POST['submit'])の時、key関数を使ってどのボタンが押されたかを判別
  3. 配列を使って取り出す
  4. 後はお好きなように・・・
  5. ちなみにセキュリティーは考慮されてません(エスケープして下さい)

PHPで複数のボタンを配置したときの処理(forやwhileで設置した複数のボタンを判別)

ちょっと面倒くさそう。

こちらはボタンにnameを付けておいて、PHP側でPOSTで受け取って処理を分ける方法。

今回、HTMLでForm内に複数のSubmitボタンを配置して、ボタン毎に処理を分けたいと思ってます。


その場合、ボタンの name 属性に値を設定し、PHP側で $_POST['name属性の値'] があるかどうかを判定することで、どのボタンが押されたか判定できるようです。


(PHP)HTMLのFORMでSubmitボタンを複数配置したい場合 : 3流プログラマのメモ書き

こちらの方が使いやすそう!

<form method="post" action="control.php" id="input">
<input type="text"  name="testtext" value="">
<input type="submit" value="ボタン1"  name="button1"><br>
<input type="submit" value="ボタン2"  name="button2"><br>
<input type="submit" value="ボタン3"  name="button3"><br>
</form>

<?php
    if (isset($_POST['button1'])) {
        //ボタン1の時の処理 
        //(header関数で別のページに飛ばすことも可。その場合、他のPOSTの値を引き継ぐ時は
        // SESSION変数を使うとよいかも)
        exit;
    }elseif ( isset($_POST['button2']) ){
        //ボタン2の時の処理 
        exit;
    }elseif ( isset($_POST['button3']) ){
        //ボタン3の時の処理 
        exit;
    }
?>

この方式でいきたいと思います(^-^)/


私のPHP教科書はこちら。非常に分かりやすいです!

PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)

PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)