Categories
PHP+MySQL

同じテーブルを2回結合(JOIN)する。

都道府県や製造メーカーなどの一覧が保存されているテーブルを2回結合したいという案件がありまして、しかも CodeIgniter で。

CodeIgniter を使うのであれば、クエリビルダを使いたくいろいろと試行錯誤したので備忘録として。

[table01(メインのテーブル)]
id address honseki
1 2 3
2 1 5
3 4 8
4 6 7
[table02(都道府県のテーブル)]
id pref
1 茨城県
2 栃木県
3 群馬県
4 埼玉県
5 千葉県
6 東京都
7 神奈川県
8 山梨県

table01 に table02 を2回結合して以下のようにしたい!

[結合したテーブル)]
id address honseki add hon
1 2 3 栃木県 群馬県
2 1 5 茨城県 千葉県
3 4 8 埼玉県 山梨県
4 6 7 東京都 神奈川県

上記を実現するためのクエリが以下。

SELECT `table01`.*, `add_tabl`.`pref` AS `add`, `hon_tabl`.`pref` AS `hon` FROM `table01` 
LEFT JOIN `table02` AS `add_tabl` ON `table01`.`address` = `add_tabl`.`id` 
LEFT JOIN `table02` AS `hon_tabl` ON `table01`.`honseki` = `hon_tabl`.`id` 
ORDER BY `id`

JOIN のときに呼び出すテーブル名を AS で変更すればよい。

上のクエリを CodeIgniter のクエリビルダで行うと以下になる。

$this->db->select('table01.*,add_tabl.pref AS add,hon_tabl.pref AS hon')
->join('table02 AS add_tabl','table01.address = add_tabl.id','left')
->join('table02 AS hon_tabl','table01.address = hon_tabl.id','left')
->order_by('id','ASC');
$list = $this->db->get('table01')->result();
Categories
javascript(jQuery) PHP+MySQL その他

都道府県の配列

必要なときに探す時間を減らすため。。。

[1=>’北海道’,’青森県’,’岩手県’,’宮城県’,’秋田県’,’山形県’,’福島県’,’茨城県’,’栃木県’,’群馬県’,’埼玉県’,’千葉県’,’東京都’,’神奈川県’,’新潟県’,’富山県’,’石川県’,’福井県’,’山梨県’,’長野県’,’岐阜県’,’静岡県’,’愛知県’,’三重県’,’滋賀県’,’京都府’,’大阪府’,’兵庫県’,’奈良県’,’和歌山県’,’鳥取県’,’島根県’,’岡山県’,’広島県’,’山口県’,’徳島県’,’香川県’,’愛媛県’,’高知県’,’福岡県’,’佐賀県’,’長崎県’,’熊本県’,’大分県’,’宮崎県’,’鹿児島県’,’沖縄県’];

[‘北海道’=>’北海道’,’青森県’=>’青森県’,’岩手県’=>’岩手県’,’宮城県’=>’宮城県’,’秋田県’=>’秋田県’,’山形県’=>’山形県’,’福島県’=>’福島県’,’茨城県’=>’茨城県’,’栃木県’=>’栃木県’,’群馬県’=>’群馬県’,’埼玉県’=>’埼玉県’,’千葉県’=>’千葉県’,’東京都’=>’東京都’,’神奈川県’=>’神奈川県’,’新潟県’=>’新潟県’,’富山県’=>’富山県’,’石川県’=>’石川県’,’福井県’=>’福井県’,’山梨県’=>’山梨県’,’長野県’=>’長野県’,’岐阜県’=>’岐阜県’,’静岡県’=>’静岡県’,’愛知県’=>’愛知県’,’三重県’=>’三重県’,’滋賀県’=>’滋賀県’,’京都府’=>’京都府’,’大阪府’=>’大阪府’,’兵庫県’=>’兵庫県’,’奈良県’=>’奈良県’,’和歌山県’=>’和歌山県’,’鳥取県’=>’鳥取県’,’島根県’=>’島根県’,’岡山県’=>’岡山県’,’広島県’=>’広島県’,’山口県’=>’山口県’,’徳島県’=>’徳島県’,’香川県’=>’香川県’,’愛媛県’=>’愛媛県’,’高知県’=>’高知県’,’福岡県’=>’福岡県’,’佐賀県’=>’佐賀県’,’長崎県’=>’長崎県’,’熊本県’=>’熊本県’,’大分県’=>’大分県’,’宮崎県’=>’宮崎県’,’鹿児島県’=>’鹿児島県’,’沖縄県’=>’沖縄県’];

Categories
PHP+MySQL ホームページ制作・作成

Zoom と連携する予約システム構築

Zoom 連携の予約システム

当システムは、一般的な予約システムに Zoom を連携させ Zoom のミーティングを作成するとともにミーティングに必要な情報(URL, ミーティングID, パスワード)を予約登録と同時にメールで送るシステムです。

従来、お客様との打ち合わせを Zoom のミーティングで行う場合、以下のようなフローで行われているケースがほとんどと思われます。

  1. お客様から連絡を受ける
  2. 日時を調整する
  3. Zoom のミーティングを作成する
  4. Zoom ミーティングの情報(URL, ミーティングID, パスワード)をお客様に連絡する
  5. 当日ミーティングを行う

当システムは、上記の 1~4 の作業を1つにまとめたものになります。

「Zoom 爆弾(ボム)」と呼ばれている「荒らし」の対策である「待合室」のオプションはシステム導入時に「On」としています。これによりホストの承認がなければミーティングに参加することができません。

予約時にメールで送るミーティングID は個人ミーティングID(PMI)ではございません。ミーティング毎に発行されるミーティングID をメールに載せています。

申込フォーム

上図の日付をクリックすると申込フォームに遷移します。

時間の選択肢は、空いている時間のみ選択できます(空いていない場合は選択できないようにしています)。また、時間の選択肢は他の時間に変更することが可能です(システム導入時に設定します)。

入力項目の追加や削除はご相談ください。

申込み

上図のフォームを進めると申込完了画面になり、Zoom ミーティングの情報を入力されたメールアドレスと管理者宛に送信します。

Zoom のアプリでミーティングが設定されていることを確認してください。

キャンセル時

キャンセルの際は、管理画面にあるボタン1つで Zoom のミーティングを含めてキャンセル処理ができます。

こんな場面で

次のようなご利用ができると思います。

  • 弁護士・税理士・司法書士・行政書士など士業の相談予約
  • コンサル会社の予約
  • 神社の祈願の予約
  • 学校・塾の面談の予約
  • カルチャー教室の個人予約
  • 不動産会社の面談の予約
  • 人材派遣会社の面接の予約
  • etc…

上記以外でのご利用もご相談ください。

ご興味のある方は・・・

本システムにつきまして、ご興味のある方は、以下の URL からお問い合わせください。

https://www.of-mokuren.com/inquiry.php

Categories
WordPress ホームページ制作・作成

カスタム投稿に別のカスタム投稿も表示させる

WordPress の single のページにおいて、カスタム投稿をメインに表示させ、ページ下方に別のカスタム投稿の内容を表示させたい!

という事案があり、その方法を残しておきたく。。。

◆メインのカスタム投稿
  • post_type : cusmain
◆サブのカスタム投稿
  • post_type : cussub
◆タクソノミー
  • name : tax

上2つのカスタム投稿に上のタクソノミーを関連させる。この辺の作業は、Custom Post Type UI で。

term を作り、メインのカスタム投稿の記事とサブのカスタム投稿の記事で同じ term を選択する。要は term が2つの記事の紐付け役になる。

single ページは、メインのカスタム投稿向けとして single-cusmain.php を作成。あとは、tax_query を使った以下のようなコードにする。

if( have_posts() ):
while( have_posts() ) : the_post();
the_content();
$term = get_the_terms( $post->id, 'tax' );
$array = [
	'post_type' => 'cussub',
	'tax_query' => array(
		array(
			'taxonomy' => 'tax',
			'field' => 'slug',
			'terms' => $term[0]->slug
		)
	)
];
$results = get_posts( $array );
var_dump( $results );
endwhile; endif;
Categories
WordPress プラグイン ホームページ制作・作成

WordPress のお問い合わせフォーム(Contact Form 7)のセキュリティ

当オフィスが白紙から構築した場合、お問い合わせフォームの代表的なプラグインである Contact Form 7 は利用していないのですが、いままで当オフィスに更新依頼をされた「他社が WordPress で構築されたサイト」のお問い合わせフォームでは、Contact Form 7 を利用されていることがほとんどです。Contact Form 7 は優秀なプラグインであり、多くのサイトで利用されているのですが、「当オフィスに更新や変更などでご依頼をされた他社製の WordPress 構築サイト」では Contact Form 7 のセキュリティを考慮した設置がされているサイトは今のところありません。

  • ご自身のサイトから迷惑メールが多数届いている。
  • レンタルサーバー会社から「Contact Form 7 に対して外部からスパム行為が確認されている」の連絡が届いている。

上記のような状況はありませんでしょうか?

Contact Form 7 ではセキュリティに関しまして次の3つを提案しています。

Akismet によるスパムフィルタリング
「Akismet」は WordPress をインストールした初めからあるプラグインです。Akismet を有効化するためには「AKISMET API KEY」が必要になります。有効化したのちにフォームの入力項目に Akismet 関連のオプションを設置することになります。
ブラックリスト
迷惑メールが届く場合、そのIPアドレスをブラックリスト登録し送信できないようにする策です。自分宛てに届くメールに相手のIPアドレスが記載されているように設置します。
reCAPTCHA (v3)
reCAPTCHA は、Google が提供するサービスです。以前のバージョンでは「私はロボットではありません」のテキストでチェックをさせる仕組みでしたが、最新のものはそのような表示はなくなっています。

いままで「当オフィスに更新・編集などでご依頼された他社製サイト(WordPressでの構築)」で上記のいずれかを設置されているサイトはありませんでした。ご自身のサイトのお問い合わせフォームからの迷惑メールが多いもしくはご心配されている場合は当オフィスまでお気軽にご連絡下さい。お見積もり・ご相談は無料です。