開発情報・ナレッジ

投稿者: ShiningStar株式会社 2025年5月15日 (木)

アンケート回答後ギフトコードを送付するサンプルプログラム

本記事では、アンケートの回答を受け付けた後、
メールにてギフトコードが閲覧可能なURLを送信する方法について紹介します。

全体像

予めギフトコードDBにギフトコードを格納しておきます。
アンケート回答フォームよりアンケートを回答すると、ギフトコードDBのギフトコードに紐づき、
アンケートDBに登録され回答者に通知がされます。

アンケート回答フォームのサンクス画面にPHPを設置し、
ギフトコードDBのギフトコードIDとギフトコードを取得します。
フォームの登録時に発行された、アンケート管理IDとギフトコードIDをTRDBに登録し消し込みを行います。

DB設定

以下3つのDBを作成します。
アンケート管理用TRDB
アンケート回答DB
ギフトコードDB

アンケート管理用TRDB
フィールド名 フィールドタイトル フィールドタイプ 自動生成設定
アンケート管理ID enqueteId 数字・記号・アルファベット(32 bytes) 自動生成:使用しない
ギフトコード giftCode 数字・記号・アルファベット(32 bytes) 自動生成:使用しない
ギフトコードID giftCodeId 数字・記号・アルファベット(32 bytes) 自動生成:使用しない
連携済みフラグ connectFlg セレクト デフォルト値:2(連携済み)
登録日時 registDate TRDB登録日時 -

アンケート回答DB
フィールド名 フィールドタイトル フィールドタイプ 自動生成設定
アンケート管理ID enqueteId 数字・記号・アルファベット(32 bytes) 自動生成:値が存在しても、上書きする
メールアドレス mail メールアドレス(大・小文字無視) 自動生成:使用しない
ギフトコード giftCode 数字・記号・アルファベット(32 bytes) 自動生成:使用しない

ギフトコードDB
フィールド名 フィールドタイトル フィールドタイプ 自動生成設定
アンケート管理ID enqueteId 数字・記号・アルファベット(32 bytes) 自動生成:使用しない
ギフトコードID giftCodeId 数字・記号・アルファベット(32 bytes) 自動生成:値が存在しても、上書きする
ギフトコード giftCode 数字・記号・アルファベット(32 bytes) 自動生成:使用しない
連携済みフラグ connectFlg セレクト デフォルト値:1(未連携)
連携日時 connectDate 日付(○年○月○日 ○時○分○秒) -

上記のフィールドは必須のフィールドになります。
その他のフィールドは、必要に応じて追加してください。

TRDBのアクション設定についてはアンケート回答DBとギフトコードDBにそれぞれ更新アクションを作成し、
ギフトコードDBには連携済みフラグフィールドを更新アクションのマッピングに設定してください。

また、TRDB登録日時を連携日時フィールドにマッピングしてください。
アンケート回答DBにはギフトコードを更新アクションのマッピングに設定してください。

フォーム設定方法

アンケート回答DBに新規登録型のフォームを新規作成してください。

サンキューページの設定をソース編集に切り替えてください。
ページ最上部に以下のPHPを記載してください。
PHP
<? //<!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=OFF NAME=XXX --> ?>

<?

$db = $SPIRAL->getDataBase("giftCodeDB");
$db->addSortField("id");
$db->addSelectFields("giftCodeId","giftCode");
$db->setLinesPerPage(5);
$result = $db->doSelect();

$enqueteId = $SPIRAL->getContextByFieldTitle("enqueteId");

$errorFlg = 0;

foreach ($result["data"] as $value) {
    $db = $SPIRAL->getDataBase("enqueteTRDB");

    try {
        $registResult = $db->doInsert(array(
            "enqueteId" => $enqueteId,
            "giftCodeId" => $value["giftCodeId"],
            "giftCode" => $value["giftCode"]
        ));
        var_dump($registResult); // 成功時のみ出力
        break;
    } catch (Exception $e) {
     $errorFlg = 1;
        continue;
    }
}

?>
            

その後下部のHTMLソースを以下のように編集してください。
HTML
 <div class="smp_tmpl">
  <div class="sub_text">
   ご登録ありがとうございました。
   <?
   if($errorFlg == 1){
    echo "<br>";
    echo "エラーが発生した為、管理者に連絡してください。";
   }
   ?>
  </div>
 </div>
            

アンケート回答DBに対するマイエリアを発行してください。
クリックログインを有効にし、ログイン後ページにギフトコードの差し替えを出力してください。

サンクスメールの設定を行い、上記マイエリアに対するクリックログインURLを記載して
フォームの設定は以上になります。

解決しない場合はこちら コンテンツに関しての
要望はこちら