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');