prepare(); /* 変数初期化 */ $err_str = ""; $locomill = null; /* Locomillクラスインスタンス生成 */ if( $err_str === "" ) { try { $locomill = new Locomill( $_COOKIE ); $member_data = $locomill->session->sess_data['member_data']; if( $member_data ) { $is_login = 1; $login_user_name = $member_data['avatar_nickname']; $login_user_id = $member_data['id']; } } catch( LocomillError $e ) { $err_str .= $e->get_exception(); } } /* Memberクラスインスタンス生成 */ if( $err_str === "" ) { try { $member = new Member( $locomill->get_db() ); } catch( MemberError $e ) { $err_str .= $e->get_exception(); } } # ----- オブジェクト作成 ----- $too = new Tools(""); $moduleName = 'public_question'; /* -------------------------------------- 変数宣言 ---------------------------------------*/ $r_title_str = ''; /* -------------------------------------- DB接続 ---------------------------------------*/ $conn = db_connect(); if (!$conn) { echo "データベースに接続できません。"; exit; } if (!db_select_db($conn)) { echo "データベースを選択できません。"; exit; } fnTraceLog($conn, $moduleName . 'プレビュー', $login_user_id); /* -------------------------------------- 変数の初期化 ---------------------------------------*/ $r_name_str = ''; $r_title_str = ''; $r_point_str = ''; $r_point_place_int = 0; $r_memo_str = ''; $r_class_int = 0; $r_attribute_int = 0; $r_status_int = 0; $disp_order_int = 0; // 選択肢で使えるタグ(複数ある場合は、|で区切る ex. a|b|br|... ) $allow_tags_str = 'fa|br'; $allow_tags_str2 = ''; /* -------------------------------------- セッション開始 ---------------------------------------*/ //2009.03セッション管理修正 $_SESSION → $locomill->session->sess_data //session_name("TRMS"); //session_start(); if (isset($locomill->session->sess_data['r_user_id'])) { unset($locomill->session->sess_data['r_user_id']); } if (isset($locomill->session->sess_data['rc_point'])) { unset($locomill->session->sess_data['rc_point']); } if (isset($locomill->session->sess_data['rc_nasu_point'])) { unset($locomill->session->sess_data['rc_nasu_point']); } if (isset($locomill->session->sess_data['r_title_str'])) { unset($locomill->session->sess_data['r_title_str']); } /* -------------------------------------- クエリ取得 ---------------------------------------*/ if(@$_POST["r_id"]){ $r_id = (int)htmlspecialchars(@$_POST["r_id"]); $code = htmlspecialchars(@$_POST["code"]); $email_pc = htmlspecialchars(@$_POST["email_pc"]); $next_q_seq = (int)htmlspecialchars(@$_POST["next_q_seq"]); $prev_q_seq = (int)htmlspecialchars(@$_POST["prev_q_seq"]); }else{ $r_id = (int)htmlspecialchars(@$_GET["r_id"]); $code = htmlspecialchars(@$_GET["code"]); $next_q_seq = (int)htmlspecialchars(@$_GET["next_q_seq"]); $prev_q_seq = (int)htmlspecialchars(@$_GET["prev_q_seq"]); } //$r_user_id = 0; $s_r_id = "rid".$r_id; $disp_err_flag = 0; /* -------------------------------------- 表示不正チェック ---------------------------------------*/ if($disp_err_flag == 0){ $SQLStr = "SELECT rc.*, r_title, r_class FROM research_condition_data rc"; $SQLStr .= " LEFT JOIN research_basis_data r ON rc.rc_r_id = r.r_id"; $SQLStr .= " WHERE rc.rc_r_id = ".$r_id; $SQLStr .= " AND rc.del_flag = 0 AND rc.disp_flag = 1 "; $rs = db_query($SQLStr, $conn); if ($rs == '') { // ロールバック(fnErrorLogにて実施) $errmsg = 'クエリ内容に誤りがあります。(E:001)'; fnErrorLog($conn, $moduleName . $errmsg, $SQLStr,$login_user_id); //die($errmsg . db_error($conn)); $disp_err_flag = 1; }else{ if(($RetCnt = db_num_rows($rs)) > 0){ $Line = db_fetch_object($rs); $r_title_str = stripslashes($Line->r_title); $r_class_int = stripslashes($Line->r_class); $rc_point = stripslashes($Line->rc_point); $rc_nasu_point = stripslashes($Line->rc_nasu_point); $rc_sample = stripslashes($Line->rc_sample); }else{ $disp_err_flag = 1; } } } /* -------------------------------------- ログイン情報チェック(栃ナビ!リサーチ) ---------------------------------------*/ if ($disp_err_flag == 0) { if ($r_class_int == 1) { if ($locomill->get_is_login() === false || empty($locomill->session->sess_data['member_data'])) { header( "location: /login/?is_keep=1&rdr=" . $_SERVER['REQUEST_URI'] ); exit; } /* 会員情報の準備 */ $member_data = $locomill->session->sess_data['member_data']; if ($member_data) { if (!$member->check_member_data(1,$member_data)) { header( "location: /mypage/email/form/?rdr=" . $_SERVER['REQUEST_URI'] ); exit; } elseif (!$member->check_member_data(3,$member_data)) { header( "location: /mypage/myprofile/form/?rdr=" . $_SERVER['REQUEST_URI'] ); exit; } if (!empty($rc_nasu_point) && $member_data['nasu_flg'] != 1) { $smarty->display('research/public_question_nasu.tpl'); exit; } $is_login = 1; $login_user_name = $member_data['avatar_nickname']; $login_user_id = $member_data['id']; $m_sex = $member_data['sex']; $now = getdate(); $year = $now['year']; $mon = $now['mon']; $day = $now['mday']; if ($member_data['birth'] > ($year-20)."-".$mon."-".$day && $member_data['birth'] <= date('Y/m/d')) { $m_generation = 1; } elseif ($member_data['birth'] > ($year-30)."-".$mon."-".$day && $member_data['birth'] <= ($year-20)."-".$mon."-".$day) { $m_generation = 2; } elseif ($member_data['birth'] > ($year-40)."-".$mon."-".$day && $member_data['birth'] <= ($year-30)."-".$mon."-".$day) { $m_generation = 3; } elseif ($member_data['birth'] > ($year-50)."-".$mon."-".$day && $member_data['birth'] <= ($year-40)."-".$mon."-".$day) { $m_generation = 4; } elseif ($member_data['birth'] > '1800-01-01' && $member_data['birth'] <= ($year-50)."-".$mon."-".$day && $member_data['birth'] <> '0000-00-00') { $m_generation = 5; } /* Areaクラスインスタンス生成 */ try { $ara = new Area( $locomill->get_db() ); $ara_data = $ara->get_data("area_master_03_tbl", $member_data['city']); $m_area = $ara_data['parent_id']; } catch( AreaError $e ) { $ara_data = array(); $m_area = 0; } } } else { if (isset($locomill->session->sess_data) === false) { // セッション生成 $locomill->session = new Session( $locomill->get_db(), "" ); $locomill->session->start(); $locomill->session->user_id = -1; $locomill->session->store_data(); } if (empty($email_pc)) { $email_pc = $locomill->session->sess_data['email_pc']; } $err_flag = 0; if (@$_GET["r_id"] && empty($email_pc)) { $err_flag = 1; } else { if (empty($email_pc) === true || $too->valid_mailaddr($email_pc) === false) { $locomill->session->sess_data['r_error']['email_pc'] = 1; $err_flag = 1; } else if ($too->check_answer_email_dup($r_id, $email_pc) === true) { $locomill->session->sess_data['r_error']['email_pc'] = 2; $err_flag = 1; } } if ($err_flag == 1) { $locomill->session->sess_data['r_info']['email_pc'] = $email_pc; $locomill->session->store_data(); header("Location: public_question_check.shtml?r_id=".$r_id."&code=".$code."&next_q_seq=".$next_q_seq."&prev_q_seq=".$prev_q_seq); exit; } else { $locomill->session->sess_data['email_pc'] = $email_pc; } } } $r_user_id = $login_user_id; if (!isset($locomill->session->sess_data['r_id'])) { $locomill->session->sess_data['r_id']= $r_id; $locomill->session->sess_data['code']= $code; } /* -------------------------------------- アドレス不正なら終了 ---------------------------------------*/ if($disp_err_flag == 0){ $u_code = UncriptPW($code); $word = "rid".$r_id; if( empty($u_code) === true ){ $errmsg = 'アンケートを表示できません。(パラメータが不正です)
アドレスを確認してください。'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; }else if($u_code != $word){ $SQLStr = "SELECT rm_id, rm_r_id "; $SQLStr .= " FROM research_condition_mail_data"; $SQLStr .= " WHERE rm_r_id = " . $r_id; $SQLStr .= " AND rm_member_id = " . $r_user_id; $SQLStr .= " AND del_flag = 0 "; $SQLStr .= " AND disp_flag = 1 "; $rs = db_query($SQLStr, $conn); if ($rs == '') { // ロールバック(fnErrorLogにて実施) $errmsg = 'アンケートを表示できません。(クエリ内容に誤りがあります)
アドレスを確認してください。'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; $r_title_str = ""; }else{ if(($RetCnt = db_num_rows($rs)) == 0){ $errmsg = 'アンケートを表示できません。(パラメータが不正です E:001)
アドレスを確認してください。'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; $r_title_str = ""; }else{ $Line = db_fetch_object($rs); $rm_id = stripslashes($Line->rm_id); if($u_code != $rm_id){ $errmsg = 'アンケートを表示できません。(パラメータが不正です E:002)
アドレスを確認してください。'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; $r_title_str = ""; } } } } } /* -------------------------------------- 既に回答済みなら終了 ---------------------------------------*/ if($disp_err_flag == 0){ if($r_class_int == 1) { $SQLStr = "SELECT a_r_id"; $SQLStr .= " FROM research_answer_data"; $SQLStr .= " WHERE a_r_id = ".$r_id; $SQLStr .= " AND a_customer_id > 0 AND a_customer_id = ".$r_user_id; $SQLStr .= " AND del_flag = 0 "; $SQLStr .= " AND disp_flag = 1 "; $rs = db_query($SQLStr, $conn); if ($rs == '') { // ロールバック(fnErrorLogにて実施) $errmsg = 'クエリ内容に誤りがあります。(E:003)'; fnErrorLog($conn, $moduleName . $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; }else{ if(($RetCnt = db_num_rows($rs)) > 0){ $errmsg = $login_user_name.'さんは既に回答しています。
次回のアンケートにご協力をよろしくお願いいたします。'; fnErrorLog($conn, $moduleName . $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; } } } } /* -------------------------------------- 割付数を取得(あれば) ---------------------------------------*/ if($disp_err_flag == 0){ $SQLStr = "SELECT ra.* FROM research_condition_data rc"; $SQLStr .= " LEFT JOIN ("; $SQLStr .= " SELECT * FROM research_condition_assign_data"; $SQLStr .= " WHERE del_flag = '0' AND disp_flag = '1'"; $SQLStr .= " ) ra"; $SQLStr .= " ON rc.rc_id = ra.ra_rc_id"; $SQLStr .= " WHERE rc.del_flag = '0' AND rc.disp_flag = '1'"; $SQLStr .= " AND rc.rc_r_id = " . $r_id; $rs = db_query($SQLStr, $conn); if ($rs == '') { // ロールバック(fnErrorLogにて実施) $errmsg = 'クエリ内容に誤りがあります。(E:004)'; fnErrorLog($conn, $moduleName . $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; }else{ if(($RetCnt = db_num_rows($rs)) > 0){ for( $i=0; $i<$RetCnt; $i++ ){ $Line = db_fetch_object($rs); $ra_cond1 = stripslashes($Line->ra_condition1); $ra_cond2 = stripslashes($Line->ra_condition2); $ra_cond3 = stripslashes($Line->ra_condition3); $ra_cond1_cmb = (int)stripslashes($Line->ra_condition1_cmb); $ra_cond2_cmb = (int)stripslashes($Line->ra_condition2_cmb); $ra_cond3_cmb = (int)stripslashes($Line->ra_condition3_cmb); $ra_assign_value = (int)stripslashes($Line->ra_assign_value); $cond_arr = array(); $cond_arr[$ra_cond1_cmb-1] = (int)$ra_cond1; $cond_arr[$ra_cond2_cmb-1] = (int)$ra_cond2; $cond_arr[$ra_cond3_cmb-1] = (int)$ra_cond3; // 希望サンプル数を割付毎にカウント $cond_conf_arr_01[(int)$cond_arr[1]][(int)$cond_arr[2]] += $ra_assign_value; $cond_conf_arr_02[(int)$cond_arr[1]][(int)$cond_arr[3]] += $ra_assign_value; $cond_conf_arr_03[(int)$cond_arr[2]][(int)$cond_arr[3]] += $ra_assign_value; $cond_conf_arr_04[(int)$cond_arr[1]][(int)$cond_arr[2]][(int)$cond_arr[3]] += $ra_assign_value; $ra_total += $ra_assign_value; } $rca = ($ra_total > 0) ? 1 : 0; } else { $rca = 0; } } } /* -------------------------------------- サンプル数を超えたら終了 ---------------------------------------*/ if($disp_err_flag == 0){ $SQLStr = "SELECT a_customer_id, sex, birth, area, reg_datetime"; $SQLStr .= " FROM ("; if( $r_class_int == 1) { $SQLStr .= " SELECT a.a_customer_id, m.sex, m.birth, ar.rsv_int_01 AS area, a.reg_datetime FROM research_answer_data a"; $SQLStr .= " LEFT JOIN member_tbl m ON a.a_customer_id = m.id"; $SQLStr .= " LEFT JOIN area_master_03_tbl ar ON m.city = ar.id"; $SQLStr .= " WHERE a.del_flag = '0' AND a.disp_flag = '1'"; $SQLStr .= " AND a.a_r_id = ".$r_id; $SQLStr .= " GROUP BY a_customer_id, sex, birth, area, reg_datetime"; }else{ $SQLStr .= " SELECT a.a_customer_id, m.sex, m.birth, ar.rsv_int_01 AS area, a.reg_datetime FROM research_answer_data a"; $SQLStr .= " LEFT JOIN research_customer_data m ON a.a_customer_id = m.cu_id"; $SQLStr .= " LEFT JOIN area_master_03_tbl ar ON m.city = ar.id"; $SQLStr .= " WHERE a.del_flag = '0' AND a.disp_flag = '1'"; $SQLStr .= " AND a.a_r_id = ".$r_id; $SQLStr .= " GROUP BY a_customer_id, sex, birth, area, reg_datetime"; } $SQLStr .= " ) temp "; $rs = db_query($SQLStr, $conn); if ($rs == '') { // ロールバック(fnErrorLogにて実施) $errmsg = 'クエリ内容に誤りがあります。(E:005)'; fnErrorLog($conn, $moduleName . $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; }else{ if(($RetCnt = db_num_rows($rs)) > 0){ for( $i=0; $i<$RetCnt; $i++ ){ $Line = db_fetch_object($rs); list($year, $mon, $day ) = preg_split("/[-\/ ]/", $Line->reg_datetime ); $a_sex = stripslashes($Line->sex); $a_birth = stripslashes($Line->birth); $a_area = stripslashes($Line->area); // 年代を取得 if($a_birth > ($year-20)."-".$mon."-".$day && $a_birth <= date('Y/m/d')){ $a_generation = 1; }else if($a_birth > ($year-30)."-".$mon."-".$day && $a_birth <= ($year-20)."-".$mon."-".$day){ $a_generation = 2; }else if($a_birth > ($year-40)."-".$mon."-".$day && $a_birth <= ($year-30)."-".$mon."-".$day){ $a_generation = 3; }else if($a_birth > ($year-50)."-".$mon."-".$day && $a_birth <= ($year-40)."-".$mon."-".$day){ $a_generation = 4; }else if($a_birth > '1800-01-01' && $a_birth <= ($year-50)."-".$mon."-".$day && $a_birth <> '0000-00-00'){ $a_generation = 5; } // サンプル数を割付対象毎にカウント $cond_data_arr_01[$a_sex][$a_generation]++; $cond_data_arr_02[$a_sex][$a_area]++; $cond_data_arr_03[$a_generation][$a_area]++; $cond_data_arr_04[$a_sex][$a_generation][$a_area]++; } $cond_sex = $cond_arr[1]>0 ? 1 : 0; $cond_generation = $cond_arr[2]>0 ? 1 : 0; $cond_area = $cond_arr[3]>0 ? 1 : 0; if($cond_sex == 1 && $cond_generation == 1 && $cond_area == 1){ $cond_data = (int)$cond_data_arr_04[$m_sex][$m_generation][$m_area]; $cond_conf = (int)$cond_conf_arr_04[$m_sex][$m_generation][$m_area]; }else if($cond_sex == 1 && $cond_generation == 1){ $cond_data = (int)$cond_data_arr_01[$m_sex][$m_generation]; $cond_conf = (int)$cond_conf_arr_01[$m_sex][$m_generation]; }else if($cond_sex == 1 && $cond_area == 1){ $cond_data = (int)$cond_data_arr_02[$m_sex][$m_area]; $cond_conf = (int)$cond_conf_arr_02[$m_sex][$m_area]; }else if($cond_generation == 1 && $cond_area == 1){ $cond_data = (int)$cond_data_arr_03[$m_generation][$m_area]; $cond_conf = (int)$cond_conf_arr_03[$m_generation][$m_area]; } } if($RetCnt >= $rc_sample || ($RetCnt > 0 && $rca == 1 && $cond_data >= $cond_conf)){ $errmsg = '回答数が予定回収サンプル数に達したため、回答の受付を終了とさせていただきました。
次回のアンケートにご協力をよろしくお願いいたします。'; $disp_err_flag = 1; } } } if($disp_err_flag == 1){ $smarty->assign('open_err', "open_err"); if(empty($errmsg)=== true){ $errmsg = "アンケートを表示出来ません。"; } $smarty->assign('r_title', $r_title_str); $smarty->assign('open_err_msg', $errmsg); // output template $smarty->display('research/public_question.tpl'); exit; } $s_r_id = 'rid'.$r_id; if(!isset($locomill->session->sess_data['r_user_id'])){ $locomill->session->sess_data['r_user_id'] = $r_user_id; $locomill->session->sess_data['rc_point'] = $rc_point; $locomill->session->sess_data['rc_nasu_point'] = $rc_nasu_point; }else{ $r_user_id = $locomill->session->sess_data['r_user_id']; $rc_point = $locomill->session->sess_data['rc_point']; $rc_nasu_point = $locomill->session->sess_data['rc_nasu_point']; } if(!isset($locomill->session->sess_data['r_class_int'])){ $locomill->session->sess_data['r_class_int'] = $r_class_int; } $qtn_cnt = 0; $locomill->session->store_data(); /* -------------------------------------- 現在の設問以降のセッションに保存 されている回答を削除(戻る対応) ---------------------------------------*/ if($next_q_seq != 0){ } /* -------------------------------------- 回答をセッションに保存 ---------------------------------------*/ if($next_q_seq != 0){ for($i=1;$i<$next_q_seq;$i++){ $post_type_name = "typeid_".$i; $post_q_id_name = "q_id_".$i; $post_cnt1 = "cnt1_".$i; $post_cnt2 = "cnt2_".$i; $post_cnt3 = "cnt3_".$i; $post_required_check = "required_check_".$i; $post_choices_flag2 = "choices_flag2_".$i; $post_choices_num1 = "choices_num1_".$i; $post_choices_num2 = "choices_num2_".$i; $post_input_check = "input_check_".$i; $post_select_item = "select_item_".$i; $post_ratio_flag = "ratio_flag_".$i; $type_id = (int)htmlspecialchars(@$_POST[$post_type_name]); $q_id_s = (int)htmlspecialchars(@$_POST[$post_q_id_name]); $cnt1 = (int)htmlspecialchars(@$_POST[$post_cnt1]); $cnt2 = (int)htmlspecialchars(@$_POST[$post_cnt2]); $cnt3 = (int)htmlspecialchars(@$_POST[$post_cnt3]); $required_check = (int)htmlspecialchars(@$_POST[$post_required_check]); $choices_flag2 = (int)htmlspecialchars(@$_POST[$post_choices_flag2]); $choices_num1 = (int)htmlspecialchars(@$_POST[$post_choices_num1]); $choices_num2 = (int)htmlspecialchars(@$_POST[$post_choices_num2]); $input_check = (int)htmlspecialchars(@$_POST[$post_input_check]); $select_item = htmlspecialchars(@$_POST[$post_select_item]); $ratio_flag = (int)htmlspecialchars(@$_POST[$post_ratio_flag]); switch($type_id){ case 1: $answer_arr = array(); $post_Q_name = "Q".$i; $select_no = (int)htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[1] = $select_no; $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $post_Q_fa_name = "Q".$i."_S".$select_no."_FA"; $fa_arr = array(); $fa_arr[1] = htmlspecialchars(@$_POST[$post_Q_fa_name]); $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; break; case 2: $answer_arr = array(); $fa_arr = array(); for($j=1;$j<=$cnt1;$j++){ $post_Q_name = "Q".$i."_S".$j; $select_no = (int)htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[$j] = $select_no; $post_Q_fa_name = "Q".$i."_S".$j."_FA"; $fa_arr[$j] = htmlspecialchars(@$_POST[$post_Q_fa_name]); } $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; break; case 3: $answer_arr = array(); $post_Q_name = "Q".$i; $select_no = (int)htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[1] = $select_no; $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; break; case 4: $answer_arr = array(); $post_Q_name = "Q".$i; $select_no = (int)htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[1] = $select_no; $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; break; case 5: $answer_arr = array(); for($j=1;$j<=$cnt2;$j++){ $post_Q_name = "Q".$i."_S".$j; $select_no = (int)htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[$j] = $select_no; $post_Q_fa_name = "Q".$i."_S".$j."_FA"; $fa_arr[$j] = htmlspecialchars(@$_POST[$post_Q_fa_name]); } $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; break; case 6: $answer_arr = array(); for($j=1;$j<=$cnt2;$j++){ $answer_arr2 = array(); for($k=1;$k<=$cnt1;$k++){ $post_Q_name = "Q".$i."_R".$j."_C".$k; $select_no = (int)htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr2[$k] = $select_no; } $answer_arr[$j] = $answer_arr2; $post_Q_fa_name = "Q".$i."_S".$j."_FA"; $fa_arr[$j] = htmlspecialchars(@$_POST[$post_Q_fa_name]); } $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; break; case 7: $answer_arr = array(); for($j=1;$j<=$cnt2;$j++){ $post_Q_name = "Q".$i."_S".$j; $select_no = (int)htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[$j] = $select_no; $post_Q_fa_name = "Q".$i."_S".$select_no."_FA"; $fa_arr[$j] = htmlspecialchars(@$_POST[$post_Q_fa_name]); } $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; break; case 8: $answer_arr = array(); $post_Q_name = "Q".$i; $test = htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[1] = $test; $post_Q_fa_name = "Q".$i."_FA"; $fa_arr[1] = htmlspecialchars(@$_POST[$post_Q_fa_name]); $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; $locomill->session->sess_data[$s_r_id]['public'][$i]['input_check'] = $input_check; break; case 9: $answer_arr = array(); $fa_arr = array(); for($j=1;$j<=$cnt1;$j++){ $post_Q_fa_name = "Q".$i."_S".$j."_FA"; $answer_arr[$j]=''; $fa_arr[$j] = htmlspecialchars(@$_POST[$post_Q_fa_name]); } $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; $locomill->session->sess_data[$s_r_id]['public'][$i]['input_check'] = $input_check; break; case 10: $answer_arr = array(); $fa_arr = array(); for($j=1;$j<=$cnt1;$j++){ $post_Q_name = "Q".$i."_S".$j; $text = htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[$j] = $text; $post_Q_fa_name = "Q".$i."_S".$j."_FA"; $fa_arr[$j] = htmlspecialchars(@$_POST[$post_Q_fa_name]); } $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; $locomill->session->sess_data[$s_r_id]['public'][$i]['input_check'] = $input_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['ratio_flag'] = $ratio_flag; break; case 11: $answer_arr = array(); $fa_arr = array(); for($j=1;$j<=$cnt3;$j++){ $post_Q_name = "Q".$i."_S".$j; $text = htmlspecialchars(@$_POST[$post_Q_name]); $answer_arr[$j] = $text; $post_Q_fa_name = "Q".$i."_S".$j."_FA"; $fa_arr[$j] = htmlspecialchars(@$_POST[$post_Q_fa_name]); } $locomill->session->sess_data[$s_r_id]['public'][$i]['answer'] = $answer_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['fa'] = $fa_arr; $locomill->session->sess_data[$s_r_id]['public'][$i]['q_id'] = $q_id_s; $locomill->session->sess_data[$s_r_id]['public'][$i]['type_id'] = $type_id; $locomill->session->sess_data[$s_r_id]['public'][$i]['required_check'] = $required_check; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_flag2'] = $choices_flag2; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num1'] = $choices_num1; $locomill->session->sess_data[$s_r_id]['public'][$i]['choices_num2'] = $choices_num2; $locomill->session->sess_data[$s_r_id]['public'][$i]['select_item'] = $select_item; $locomill->session->sess_data[$s_r_id]['public'][$i]['input_check'] = $input_check; break; } $locomill->session->store_data(); } } /* -------------------------------------- エラーチェック ---------------------------------------*/ $session = $locomill->session->sess_data[$s_r_id]['public']; $err_flag = $too->research_err_check($session , $s_r_id); if($err_flag == 1){ $locomill->session->sess_data[$s_r_id]['public'] = $session; $locomill->session->store_data(); $next_q_seq = $prev_q_seq; } // 前のシーケンスNO(質問DBからの追加用) $smarty->assign('prev_q_seq', $next_q_seq); /* -------------------------------------- DBよりリスト取得 ---------------------------------------*/ if($locomill->session->sess_data['r_id'] != 0){ $SQLStr2 = "SET NAMES utf8"; $result = db_query($SQLStr2, $conn); // タイトル取得 $SQLStr = "SELECT * FROM research_basis_data WHERE r_id = ".$r_id ; $SQLStr .= " AND del_flag = 0 AND disp_flag = 1 "; $rs = db_query($SQLStr, $conn); if ($rs == '') { // ロールバック(fnErrorLogにて実施) $errmsg = 'クエリ内容に誤りがあります。(E:006)'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; }else{ if(($RetCnt = db_num_rows($rs)) > 0){ $Line = db_fetch_object($rs); if( $Line->r_status == 5 || $Line->r_status == 6 ) { // 回答期間終了かどうか確認 $errmsg = '回答期間が終了しています。
次回のアンケートにご協力をよろしくお願いいたします。'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); $disp_err_flag = 1; } $r_name_str = stripslashes($Line->r_name); $r_title_str = stripslashes($Line->r_title); $r_point_str = stripslashes($Line->r_point); $r_point_place_int = (int)stripslashes($Line->r_point_place); $r_memo_str = stripslashes($Line->r_memo); $r_class_int = (int)stripslashes($Line->r_class); $r_attribute_int = (int)stripslashes($Line->r_attribute); $r_status_int = (int)stripslashes($Line->r_status); $disp_order_int = (int)stripslashes($Line->disp_order); $locomill->session->sess_data['r_title_str'] = $r_title_str; $locomill->session->store_data(); } } // 設問取得 $SQLStr = "SELECT * FROM research_question_data WHERE q_r_id = ".$r_id; $SQLStr .= " AND del_flag = 0 AND disp_flag = 1 AND q_seq >= ".$next_q_seq ." ORDER BY q_seq "; $rs = db_query($SQLStr, $conn); if ($rs == '') { // ロールバック(fnErrorLogにて実施) $errmsg = $moduleName . 'クエリ内容に誤りがあります。(E:007)'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); die($errmsg . db_error($conn)); }else{ if(($RetCnt = db_num_rows($rs)) > 0){ $RetCnt_All = $RetCnt; for($i = 0; $i < $RetCnt_All; $i++) { db_data_seek($rs, $i); $Line = db_fetch_object($rs); // 条件設定をDBより取得 $SQLStr = "SELECT qa_q_id , qa_seq , qa_condition , qa_s_q_id , qa_s_c_seq , qa_s_c_id ,"; $SQLStr .= "qa_s_c_class , qa_c_seq , qa_select_class , qa_select_andor , q_seq "; $SQLStr .= "FROM research_question_add_data as ad "; $SQLStr .= "INNER JOIN research_question_data as qd "; $SQLStr .= "ON ad.qa_s_q_id = qd.q_id "; $SQLStr .= "AND ad.disp_flag = 1 "; $SQLStr .= "AND ad.del_flag = 0 "; $SQLStr .= "AND qd.disp_flag = 1 "; $SQLStr .= "AND qd.del_flag = 0 "; $SQLStr .= "WHERE ad.qa_q_id = ".$Line->q_id; $rs2 = db_query($SQLStr, $conn); if ($rs2 == '') { // ロールバック(fnErrorLogにて実施) $errmsg = $moduleName . 'クエリ内容に誤りがあります。(E:008)'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); die($errmsg . db_error($conn)); }else{ $condition = ''; if(($RetCnt2 = db_num_rows($rs2)) > 0){ $select_q_seq = array(); for($j = 0; $j < $RetCnt2; $j++){ db_data_seek($rs2, $j); $Line2 = db_fetch_object($rs2); $condition = stripslashes($Line2->qa_condition); $qa_seq = $Line2->qa_seq; $select_q_seq[$j] = $Line2->q_seq; $qa_s_q_id[$j] = $Line2->qa_s_q_id; $qa_s_c_id[$j] = $Line2->qa_s_c_id; $qa_select_andor[$j] = $Line2->qa_select_andor; $qa_s_c_class[$j] = $Line2->qa_s_c_class; $qa_s_c_seq[$j] = $Line2->qa_s_c_seq; $qa_select_class[$j] = $Line2->qa_select_class; } } } // 条件設定されている設問の場合、 $match_flag = 0; if($select_q_seq){ $select_data = array(); $select_not_hit_flag = 0; $qa_s_c_class_wk = 0; for($j=0;$j<$RetCnt2;$j++){ $match_flag = 0; switch($locomill->session->sess_data[$s_r_id]['public'][$select_q_seq[$j]]['type_id']){ case 1: case 2: case 3: case 4: if($qa_select_class[$j] == 1){ foreach($locomill->session->sess_data[$s_r_id]['public'][$select_q_seq[$j]]['answer'] as $key=>$value){ if($qa_s_c_id[$j] == $value){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 1; $match_flag = 1; break; } } if($match_flag == 0){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 0; } }else{ foreach($locomill->session->sess_data[$s_r_id]['public'][$select_q_seq[$j]]['answer'] as $key=>$value){ if($qa_s_c_id[$j] == $value){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 0; $match_flag = 1; break; } } if($match_flag == 0){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 1; $match_flag = 1; } } break; case 5: case 7: if($qa_select_class[$j] == 1){ foreach($locomill->session->sess_data[$s_r_id]['public'][$select_q_seq[$j]]['answer'] as $key=>$value){ if($key == $qa_s_c_seq[$j] && $qa_s_c_id[$j] == $value){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 1; $match_flag = 1; break; } } if($match_flag == 0){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 0; } }else{ foreach($locomill->session->sess_data[$s_r_id]['public'][$select_q_seq[$j]]['answer'] as $key=>$value){ if($key == $qa_s_c_seq[$j] && $qa_s_c_id[$j] == $value){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 0; $match_flag = 1; break; } } if($match_flag == 0){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 1; $match_flag = 1; } } break; case 6: if($qa_select_class[$j] == 1){ foreach($locomill->session->sess_data[$s_r_id]['public'][$select_q_seq[$j]]['answer'] as $key=>$value){ if($key == $qa_s_c_seq[$j]){ foreach($value as $key2=>$value2){ if($qa_s_c_id[$j] == $key2 && $value2 != 0) { $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 1; $match_flag = 1; break; } } if($match_flag == 1){ break; } } } if($match_flag == 0){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 0; } }else{ foreach($locomill->session->sess_data[$s_r_id]['public'][$select_q_seq[$j]]['answer'] as $key=>$value){ if($key == $qa_s_c_seq[$j]){ foreach($value as $key2=>$value2){ if($qa_s_c_id[$j] == $key2 && $value2 != 0){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 0; $match_flag = 1; break; } } if($match_flag == 1){ break; } } } if($match_flag == 0){ $select_data[$j]['qa_s_q_id'] = $qa_s_q_id[$j]; $select_data[$j]['qa_s_c_class'] = $qa_s_c_class[$j]; $select_data[$j]['qa_s_c_seq'] = $qa_s_c_seq[$j]; $select_data[$j]['qa_select_andor'] = $qa_select_andor[$j]; $select_data[$j]['match_flag'] = 1; $match_flag = 1; } } break; } if($qa_s_c_class_wk != $qa_s_c_class[$j]){ $qa_s_c_class_wk = $qa_s_c_class[$j]; } } $match_flag = 0; $wk_andor = 0; foreach($select_data as $key=>$value){ if($value['match_flag'] == 1 || $match_flag_wk == 1) { $match_flag_wk = 1; }else{ $match_flag_wk = 0; } if($wk_andor == 1){ if($match_flag == 1 && $match_flag_wk ==1){ $match_flag = 1; }else{ $match_flag = 0; } }elseif($wk_andor == 2){ if($match_flag == 1 || $match_flag_wk == 1){ $match_flag = 1; }else{ $match_flag = 0; } }else{ $match_flag = $match_flag_wk; } $wk_andor = $value['qa_select_andor']; } if($wk_andor == 1){ $match_flag = 0; } }else{ $match_flag = 1; } unset($select_q_seq); if($match_flag == 1){ $q_id[$qtn_cnt] = $Line->q_id; $q_seq[$qtn_cnt] = $Line->q_seq; $q_type_id[$qtn_cnt] = stripslashes($Line->q_type_id); $q_commnet[$qtn_cnt] = stripslashes($Line->q_comment); $q_image[$qtn_cnt] = stripslashes($Line->q_image); $q_image_place[$qtn_cnt] = stripslashes($Line->q_image_place); $q_image1[$qtn_cnt] = stripslashes($Line->q_image1); $q_image2[$qtn_cnt] = stripslashes($Line->q_image2); $q_image3[$qtn_cnt] = stripslashes($Line->q_image3); $q_caption1[$qtn_cnt] = stripslashes($Line->q_caption1); $q_caption2[$qtn_cnt] = stripslashes($Line->q_caption2); $q_caption3[$qtn_cnt] = stripslashes($Line->q_caption3); $q_image_memo[$qtn_cnt] = stripslashes($Line->q_image_memo); $q_popup[$qtn_cnt] = stripslashes($Line->q_popup); $q_popup_image1[$qtn_cnt] = stripslashes($Line->q_popup_image1); $q_popup_image2[$qtn_cnt] = stripslashes($Line->q_popup_image2); $q_popup_image3[$qtn_cnt] = stripslashes($Line->q_popup_image3); $q_popup_memo1[$qtn_cnt] = stripslashes($Line->q_popup_memo1); $q_popup_memo2[$qtn_cnt] = stripslashes($Line->q_popup_memo2); $q_popup_memo3[$qtn_cnt] = stripslashes($Line->q_popup_memo3); $q_question[$qtn_cnt] = stripslashes($Line->q_question); $q_free[$qtn_cnt] = stripslashes($Line->q_free); $q_left_comment[$qtn_cnt] = stripslashes($Line->q_left_comment); $q_right_comment[$qtn_cnt] = stripslashes($Line->q_right_comment); $q_choices_flag1[$qtn_cnt] = stripslashes($Line->q_choices_flag1); $q_rate[$qtn_cnt] = stripslashes($Line->q_rate); $q_order_disp1[$qtn_cnt] = stripslashes($Line->q_order_disp1); $q_order_disp2[$qtn_cnt] = stripslashes($Line->q_order_disp2); $q_order_disp3[$qtn_cnt] = stripslashes($Line->q_order_disp3); $q_order_disp4[$qtn_cnt] = stripslashes($Line->q_order_disp4); $q_num_disp1[$qtn_cnt] = stripslashes($Line->q_num_disp1); $q_num_disp2[$qtn_cnt] = stripslashes($Line->q_num_disp2); $q_column_disp[$qtn_cnt] = stripslashes($Line->q_column_disp); $q_answer_ranking[$qtn_cnt] = stripslashes($Line->q_answer_ranking); $q_input_check[$qtn_cnt] = stripslashes($Line->q_input_check); $q_required_check[$qtn_cnt] = stripslashes($Line->q_required_check); $q_required_num[$qtn_cnt] = stripslashes($Line->q_required_num); $q_choices_flag2[$qtn_cnt] = stripslashes($Line->q_choices_flag2); $q_choices_num1[$qtn_cnt] = stripslashes($Line->q_choices_num1); $q_choices_num2[$qtn_cnt] = stripslashes($Line->q_choices_num2); $q_condition_flag[$qtn_cnt] = stripslashes($Line->q_condition_flag); $q_page_break[$qtn_cnt] = stripslashes($Line->q_page_break); $q_disp_order[$qtn_cnt] = stripslashes($Line->q_disp_order); $q_ratio_flag[$qtn_cnt] = stripslashes($Line->q_ratio_flag); $qa_condition[$qtn_cnt] = $condition; // 選択肢をDBより取得 $SQLStr = "SELECT * FROM research_choices_data WHERE disp_flag = 1 AND del_flag = 0 "; $SQLStr .= "AND c_q_id = ".$q_id[$qtn_cnt]; $rs2 = db_query($SQLStr, $conn); if ($rs2 == '') { // ロールバック(fnErrorLogにて実施) $errmsg = $moduleName . 'クエリ内容に誤りがあります。(E:009)'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); die($errmsg . db_error($conn)); }else{ $Text1 = ''; $Text2 = ''; if(($RetCnt2 = db_num_rows($rs2)) > 0){ for($j = 0; $j < $RetCnt2; $j++){ db_data_seek($rs2, $j); $Line = db_fetch_object($rs2); if($Line->c_class == 1){ $Text1 .= stripslashes($Line->c_text)."\r\n"; }elseif($Line->c_class == 2){ $Text2 .= stripslashes($Line->c_text)."\r\n"; }elseif($Line->c_class == 3){ $Text3 .= stripslashes($Line->c_text)."\r\n"; } } $c_text1[$qtn_cnt] = $Text1; if($Text2){ $c_text2[$qtn_cnt] = $Text2; } if($Text3){ $c_text3[$qtn_cnt] = $Text3; } } } $next_q_seq = $q_seq[$qtn_cnt] + 1; // 次の設問の条件設定有無を取得 $next_select_flag = 0; if($qtn_cnt != $RetCnt-1){ $SQLStr = "SELECT count(*) as cnt FROM research_question_data as qd "; $SQLStr .= "INNER JOIN research_question_add_data as ad "; $SQLStr .= "ON qd.q_r_id = " .$r_id . " AND qd.q_id = ad.qa_q_id AND qd.disp_flag = 1 "; $SQLStr .= "AND qd.del_flag = 0 AND ad.disp_flag = 1 AND ad.del_flag = 0 "; $SQLStr .= "WHERE qd.q_seq = " . (int)$next_q_seq . " OR qd.q_seq = " . (int)$q_seq[$qtn_cnt]; $rs2 = db_query($SQLStr, $conn); if ($rs2 == '') { // ロールバック(fnErrorLogにて実施) $errmsg = $moduleName . 'クエリ内容に誤りがあります。(E:010)'; fnErrorLog($conn, $errmsg, $SQLStr,$login_user_id); die($errmsg . db_error($conn)); }else{ if(($RetCnt2 = db_num_rows($rs2)) > 0){ $Line = db_fetch_object($rs2); if($Line->cnt > 0){ $next_select_flag = 1; } } } } $qtn_cnt += 1; // 1ページに表示される設問数が、取得したデータ件数と同じ場合、送信ボタン表示 if($qtn_cnt == $RetCnt){ $smarty->assign('answer_end_flg', "1"); } if($q_page_break[$qtn_cnt - 1] == 1 || $next_select_flag == 1){ // 最後の設問の場合、強制的に送信ボタンを表示 if($i == $RetCnt_All -1 ){ $smarty->assign('answer_end_flg', "1"); } break; } }else{ // 後の設問が条件設定される、その設問の表示がされない、よって現在の設問で最後の場合の対応 if($i == $RetCnt_All -1 ){ $smarty->assign('answer_end_flg', "1"); } $RetCnt -= 1; } } if( $RetCnt == 0 ) { $smarty->assign('answer_end_flg', "1"); } } } } if($disp_err_flag == 1){ $smarty->assign('open_err', "open_err"); if(empty($errmsg)=== true){ $errmsg = "ページを表示出来ません。"; } $smarty->assign('r_title', $r_title_str); $smarty->assign('open_err_msg', $errmsg); // output template $smarty->display('research/public_question.tpl'); exit; } /* -------------------------------------- 各項目をセッションから復元 ---------------------------------------*/ // 調査名 if($locomill->session->sess_data['r_id'] != 0){ $r_name_str = '調査名:'.$r_name_str; $smarty->assign('r_name', $r_name_str); } // タイトル if($locomill->session->sess_data['r_id'] != 0){ $smarty->assign('r_title', $r_title_str); } // ポイント if($locomill->session->sess_data['r_id'] != 0){ $r_point_str = nl2br($r_point_str); $smarty->assign('r_point', $r_point_str); } // ポイント 文字並び if($locomill->session->sess_data['r_id'] != 0){ if($r_point_place_int == 1){ $smarty->assign('r_point_place', ""); }else{ $smarty->assign('r_point_place', "_center"); } } // 種別(画像切り替え) if($locomill->session->sess_data['r_id'] != 0){ $smarty->assign('r_class_int', $r_class_int); if($r_class_int == 1){ $smarty->assign('r_class_img', "mark_tochi_research.gif"); $smarty->assign('r_class_member', "r_class_member"); }else{ $smarty->assign('r_class_img', "mark_my_research.gif"); } } // リサーチID $smarty->assign('r_id', $r_id); $smarty->assign('code', $code); // 次のシーケンスNO(質問DBからの追加用) $smarty->assign('next_q_seq', $next_q_seq); // メールアドレス $smarty->assign('email', $email_pc); // 性別 $smarty->assign('sex', $sex); // 年代 $smarty->assign('generation', $generation); // 婚姻 $smarty->assign('marriage', $marriage); // 子供の有無 $smarty->assign('child', $child); for($i = 0; $i < $qtn_cnt; $i++){ $Hash = array(); $Q_no = $i+1; // エラー if(!empty($locomill->session->sess_data[$s_r_id]['public'][$q_seq[$i]]['err'])){ $Hash['question_err'] = $locomill->session->sess_data[$s_r_id]['public'][$q_seq[$i]]['err'][0]; unset($locomill->session->sess_data[$s_r_id]['public'][$q_seq[$i]]['err']); $locomill->session->store_data(); } // 質問上のコメント $comment_str = $q_commnet[$i]; $Hash['q_comment'] = nl2br($comment_str); // 質問文 $Hash['q_question'] = nl2br($q_question[$i]); // 必須 if($q_required_check[$i] == 1){ $Hash['q_required_check'] = '【必須入力】'; } if($q_required_check[$i] == 1){ if($q_choices_flag2[$i] == 2){ if($q_type_id[$i] == 11){ $Hash['q_required_check'] = '【' . $q_input_check[$i] . '位まで必須】'; }else{ $Hash['q_required_check'] = '【' . $q_choices_num1[$i] . '個選択】'; } }elseif($q_choices_flag2[$i] == 3){ if($q_type_id[$i] == 11){ }else{ $Hash['q_required_check'] = '【最大' . $q_choices_num2[$i] . '個まで】'; } } }elseif($q_required_check[$i] == 2){ $Hash['q_required_check'] = '【全入力欄必須】'; } // 条件文 $Hash['qa_condition'] = $qa_condition[$i]; // 選択肢 $pre_select = ''; $q_select_arr = array(); $q_select_tag_arr = array(); $q_select_arr2 = array(); $q_select_tag_arr2 = array(); $q_rand_select_arr = array(); $q_rand_select_arr2 = array(); if($c_text1[$i]){ $return_value = $too->research_cnv_question($c_text1[$i],$q_seq[$i],$s_r_id,$q_type_id[$i],$locomill->session->sess_data[$s_r_id]['public']); // 選択肢項目のオリジナルタグ変換後を配列に保存 $q_select_arr = $return_value[0]; $q_select_tag_arr = $return_value[1]; } if($c_text2[$i]){ $return_value = $too->research_cnv_question($c_text2[$i],$q_seq[$i],$s_r_id,$q_type_id[$i],$locomill->session->sess_data[$s_r_id]['public']); // 選択肢項目のオリジナルタグ変換後を配列に保存 $q_select_arr2 = $return_value[0]; $q_select_tag_arr2 = $return_value[1]; } if($c_text3[$i]){ $return_value = $too->research_cnv_question($c_text3[$i],$q_seq[$i],$s_r_id,$q_type_id[$i],$locomill->session->sess_data[$s_r_id]['public']); // 選択肢項目のオリジナルタグ変換後を配列に保存 $q_select_arr3 = $return_value[0]; $q_select_tag_arr3 = $return_value[1]; } /* -------------------------------------- 選択肢ランダム処理 ---------------------------------------*/ if(count($q_select_tag_arr)>0){ $q_rand_select_arr = $too->rnd_question($q_select_tag_arr,$q_order_disp1[$i],$q_order_disp2[$i]); } if(count($q_select_tag_arr2)>0){ $q_rand_select_arr2 = $too->rnd_question($q_select_tag_arr2,$q_order_disp3[$i],$q_order_disp4[$i]); } // 右項目は左を同じ順番である必要がある $q_rand_select_arr3 = array(); for( $k=0; $kcreate_question_html($hash_html,$locomill->session->sess_data[$s_r_id]['public']); $Hash['c_text1'] = $pre_select; // 画像 $hash_img = array(); $hash_img['q_image_place'] = $q_image_place[$i]; $hash_img['q_image_memo'] = $q_image_memo[$i]; $hash_img['q_image1'] = $q_image1[$i]; $hash_img['q_image2'] = $q_image2[$i]; $hash_img['q_image3'] = $q_image3[$i]; $hash_img['q_caption1'] = $q_caption1[$i]; $hash_img['q_caption2'] = $q_caption2[$i]; $hash_img['q_caption3'] = $q_caption3[$i]; // 画像HTML出力 $pre_img = $too->research_create_image_html($hash_img,$locomill->session->sess_data[$s_r_id]['public']); $Hash['img_pre'] = $pre_img; // ポップアップ画像 $popup_img = ""; if($q_popup[$i] === '1'){ $Hash['popup_img'] = ">>その他画像"; } // 質問下部の注釈欄 $attention_list = ''; // 必須 if($Hash['q_required_check']){ $attention_list .= '・必須入力
'; } if($q_order_disp1[$i] == 2){ $attention_list .= '・ランダム表示(項目順序)
'; }elseif($q_order_disp1[$i] == 3){ $attention_list .= '・ランダム表示(項目のソート基準)
'; } $Hash['attention_list'] = $attention_list; // フォーム名 $Hash['form_name'] = 'questionTypeForm'.$i; // 設問ID $Hash['q_id'] = $q_id[$i]; // SEQ $Hash['q_seq'] = $q_seq[$i]; // 設問タイプ $Hash['type_id'] = $q_type_id[$i]; // 編集先URL switch($q_type_id[$i]){ case 1: $Hash['edit_url'] = 'question_type_edit_01.shtml'; break; case 2: $Hash['edit_url'] = 'question_type_edit_02.shtml'; break; case 3: $Hash['edit_url'] = 'question_type_edit_03.shtml'; break; case 4: $Hash['edit_url'] = 'question_type_edit_04.shtml'; break; case 5: $Hash['edit_url'] = 'question_type_edit_05.shtml'; break; case 6: $Hash['edit_url'] = 'question_type_edit_06.shtml'; break; case 7: $Hash['edit_url'] = 'question_type_edit_07.shtml'; break; case 8: $Hash['edit_url'] = 'question_type_edit_08.shtml'; break; case 9: $Hash['edit_url'] = 'question_type_edit_09.shtml'; break; case 10: $Hash['edit_url'] = 'question_type_edit_10.shtml'; break; case 11: $Hash['edit_url'] = 'question_type_edit_11.shtml'; break; } $question_lp[] = $Hash; } $smarty->assign('question_lp', $question_lp); header("Content-type: text/html;charset=UTF-8"); header("Expires: Thu, 01 Dec 1994 16:00:00 GMT"); header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // output template $smarty->display('research/public_question.tpl');