最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

カウンタ

おすすめ本

AccRanking

2018年11月 2日 (金)

【PHP】QRバーコードの生成の方法について

PHPでのQRバーコードの生成方法ですが、以下のサイトにフリーソフトが公開されていますのでこれを使ってみます。

QRcode Perl CGI & PHP scripts ver. 0.50

ページの下の方の「qr_img0.50j.tar.gz (1007KB)」をダウンロードします。

ダウンロードしたファイルを展開し「qr_img0.50j」フォルダができますので、 PHPプログラムのあるディレクトリに全てをコピーします。

このプログラムの使い方は「qr_img0.50j/README.txt」に詳しく書かれていますが、 プログラムの出力が画像データそのものなので、HTMLのIMGタグのURLとして指定すれば ブラウザでQRコードが表示されます。

HTMLのソースは以下の様になります。

Qruploadimg1


PHPのプログラムで使う場合は以下の様なソースになります。

ここで注意するのは「qr_img.php」を呼出す場合は、URLをサイトの先頭から記述することです。
楽天市場

デル株式会社

2018年10月19日 (金)

【MySQL】UNION MINUS が無いので、代わりに NOT EXISTS を使う方法について

MySQLUNION MINUS が出来ないので、代わりに NOT EXISTS を使って実現します。
前回の記事の ユーザ変数を使って連番や、連続日付を取得する方法について のSQL文を参考にします。

8個の連続日付から、途中の4件を差し引く例を以下に示します。
最初の方のFROM句の中は、10日分の連続日付を生成するテーブル定義になります。
また、 NOT EXISTS 句のFROM句の中は、途中の日付から4日分の連続日付を生成するテーブルとなります。
それぞれのテーブルを日付カラムでリンクを行うと、出力として4日分の日付が中抜けした結果になります。
実行結果は以下の様になります。


【MySQL】ユーザ変数を使って連番や、連続日付を取得する方法について

仕事の中で連番のみの仮想的なテーブルがほしい場合があったので、調べてみたところ、その解決方法としてユーザ変数を使って SQL文1個でできる様なので、その件を記します。

SQL文は以下の様に、2個のSELECT文をUNIONで連結しています。 最初のSELECT文でユーザ変数 @num を初期化し、2個目のSELECT文で @num を順次1加算し、表示することになります。 さらに LIMIT句 で何個までを生成するのかを指定します。
ただ、FROM句には実際のテーブルが必要ですので、あらかじめ TEST と命名したテーブルを作成しておきました。 TEST の中身はなんでもいいのですが、とにかく欲しい連番までのレコード(行)が必要です。
なるべくレコード数が多い方がいいのですが、特別に TEST などというテーブルを作成しなくても MySQLインストール時に生成されるシステムDBのテーブルを使ってもできます。

いろんな方のサイトを見ると、`information_schema`.COLUMNS を使っているのを多く見かけます。 実際このテーブルのレコード数は10万件以上ありますので、これを使うのがいいのではと思います。
実行結果は以下の様になります。
また、この方法を応用して、連続日付の生成を行います。以下のSQLを見て下さい。 @num の部分を @dat として日付発生させるように変更しています。
実行結果は以下の様になります。


2018年9月10日 (月)

【Oracle】Oracle10gからOracle11gへの移行でユーザログイン不可について

最近、Oracle10gのデータベースをOracle11gに移行した時に不具合が発生しました。 Oracle11gへのデータベース移行は問題無かったのですが、クライアント側のVisualBasic.NETのプログラムを動作させると Oracleへのログインができない状況でした。

データベース移行に当たって、10gと同じユーザを作成して行ったのですが、 なぜかVB.NETのプログラムでそのユーザでの11gへのログインが不可なのです。 データベースのユーザへのログインはSQLPlus等でログインを確認したのですが、 VB.NETのプログラムでのログインNGがよくわかりませんでした。

その後、調べてみると、Oracle11gからはユーザのパスワードが大文字、小文字を区別することが分かりました。 SQLPlusでその様子を調べてみると、以下の様になっていました。

システムパラメータの sec_case_sensitive_logon の値が TRUE は大文字、小文字を区別する設定です。
この値を以下の様に FALSE にすれば、パスワードがOracle10gの時と同様の扱いになる様です。 結果は以下の表示になります。

この設定より、VB.NETのプログラムでのログインが出来る様になりました。 Oracle10gとは古いとお思いでしょうが、まだまだ10gで動いているところもあります。 データベースの移行での一助になれば幸いです。

2018年8月14日 (火)

【PHP】「stdClass」を関数の引数としての使い方について

以前 stdClass の使い方を以下の記事に記しましたが、今回はそれを関数の引数に使おうと思います。

【PHP】連想配列の様な「stdClass」の使い方について

stdClass を引数にする場合には、どの様なプロパティを設定するのかは、前もって関数の呼び出し側と、関数内の処理を決めておく必要があります。
但し、引数が非常に多くなる場合には stdClass で渡すことですっきりした関数呼び出しにはなると思います。

以下のソースは stdClass を生成し3個のプロパティへを設定し、その内容を表示する簡単な例です。


3個のプロパティ値が表示されることが確認できます。

さらにもう一つの関数を宣言します。 この関数は、同じ引数を持つのですが各プロパティを再設定する様にしています。


これを実行すると以下の様な結果になります。

関数の引数としてクラスを渡すと、参照渡しで行われる様です。 参照渡しのため、クラスプロパティの値を書き換えることが出来ますので、注意が必要です。

また、 stdClass にプロパティが存在するかどうかをチェックし、処理を分けることも可能です。 上のソースに4番目のプロパティの存在有無で処理を分ける様にする処理を付加したものを以下に示します。


これを実行すると以下の様な結果になります。



デル株式会社