게시판 글 작성 시 다른 게시판의 특정 글의 옵션 값을 같이 업데이트 하는 소스를 구성하고 싶습니다.

소스 의뢰하는 구성은 아래와 같습니다.

 

1. 업데이트 하려는 대상 정보 

    : 글 작성 게시판은 차 수리 게시판이고, 업데이트 하려는 게시판은 해당 사용자의 등록된 자동차 목록에서 선택된 기준으로 누적거리(총 운행거리)를 업데이트 하는 소스입니다.

 

2. 방법

    :  차 수리 게시판에서 글을 작성 할때 (editor.php -> <button type="submit" class="kboard-default-button-small">저장</button>)

       저장 버튼 클릭 시 editor에 정의된 자동차 목록의 누적거리(메타값)를 업데이트 되도록 구성

 

3. 시도했던 방법 

    a) 테마의 function.php 에 적용한 소스 (=> 하지만 업데이트 되지 않음)

// Add Car Current Distance DB Update Kboard Code 
add_action('kboard_document_update', 'kboard_document_update_car_distance', 10, 4);
function kboard_document_update_car_distance($content_uid, $board_id, $content, $board){
	global $wpdb;

	if($board_id == '3'){ // 실제 게시판 id로 적용해주세요.
		// $wpdb->query() 함수를 활용하시면 DB 데이터를 추가하실 수 있습니다.
		$wpdb->query("UPDATE opc_kboard_board_option SET `option_value` = '{$content->option->car_current_distance}' WHERE `option_key` = 'car_current_distance' AND `content_uid` = '{$document->uid}'");
	}
}

 

   b) phpMyAdmin 에서 쿼리문 입력 (쿼리문으로 직접 입력 시 업데이트 정상 동작함)

UPDATE opc_kboard_board_option SET `option_value` = '135790' WHERE `option_key` = 'car_current_distance' AND `content_uid` = '37';

 

4. 개인적으로 판단한 문제는 다른 게시판의 항목들을 불러오는 값이 정상적으로 오지 않거나 소스를 잘못 입력하여 문제로 판단되었습니다.

여러개의 게시판을 적용해야하는 관계로 해당 게시판의 글 작성 페이지 내에서 쿼리문을 직접 입력해서 데이터를 업데이트하고자 합니다.

에디터 페이지 내에서는 해당 게시글을 불러오는 소스를 모두 적상적으로 넣어서 데이터를 불러옵니다.

 

5. 최종 요청은 '차량 목록 게시판'에서 불러온 목록에서 선택한 차와 주행거리를 선택 시 주행거리 입력에 placeholder 정보를 표시하고, 글 작성 버튼(글작성/업데이트 포함)을 눌렀을때 add_action 처럼 db를 업데이트 하고 성공여부를 alert로 띄운 후 화면 이동하도록 소스를 구성해주세요.

  요청 1. 차량 목록을 선택 시 현재 게시판의 주행거리의 placeholder에 선택하 차량 누적 주행거리로 값을 표시

  요청 2. 글 업데이트 시 선택한 차량의 주행거리를 입력한 정보로 업데이트 (현재 게시판의 입력값은 유지)

  요청 3. 정상적으로 글등록 및 차량 목록의 db가 업데이트 되었는지 표시

 

# 참고 소스 #

차량 목록 게시판에서 불러오고 누적거리를 표시하는 소스 (현재 1개 미만인 경우의 대상 차량 번호와 주행거리를 placeholder 에 표시)

		<!--- 차량 등록 리스트 호출 Start  --->

		<?php
			// 다른 게시판 정보 불러오기
			global $wpdb;
			$board_id = '1'; // 게시판 id
			$current_user_id = get_current_user_id(); // 로그인 사용자 아이디 가져오기
			$where[] = "`board_id`='{$board_id}'";
			$where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')"; // 공지사항이 아니면서 휴지통에 있는 게시글이 아닌 정상글
			$where = implode(' AND ', $where);
			$user_content_count = $wpdb->get_var("SELECT COUNT(*) FROM `{$wpdb->prefix}kboard_board_content` WHERE `board_id` = '{$board_id}' And `member_uid` = '{$current_user_id}' And `status`='' OR `status` IS NULL OR `status`='pending_approval'"); // User Write Post Count
			$results = $wpdb->get_results("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE {$where} And `member_uid` = '{$current_user_id}'");

			//get wp user data
			$current_user = wp_get_current_user();

			//Contents List Count
			$content_list = new KBContentList($board_id);
			$content_list->getList();
			$list = $document->member_display == $current_user->display_name;
		?>

		<?php if($content_list->total == 1):?>
		<div id="select_car" class="kboard-attr-row kboard-attr-radio meta-key-select_car">
			<label class="attr-name" for="select_car"><span class="field-name">차량 선택</span> <span class="require">*</span></label>
			<div class="attr-value">
				<?php foreach($results as $item):?>
					<?php
					$document = new KBContent();
					$document->initWithUID($item->uid);
					?>
					<label class="attr-value-label"><input type="radio" name="kboard_option_select_car" value="<?php echo $document->option->car_number?>" checked><?php echo $document->option->car_number?></label>
					||<?php echo $document->uid ?>||
				<?php endforeach?>
			</div>
		</div>
		<div id="default_current_distance">
			<label class="attr-name" for="car_current_distance">누적주행거리 <span class="require">*</span></label>
			<div class=""><input type="number" id="kboard_option_car_current_distance" name="kboard_option_car_current_distance" value="<?php echo $content->option->car_current_distance?>" placeholder="<?php echo $document->option->car_current_distance ?>"></div>
		</div>
		<?php elseif($content_list->total > 1):?>
		<div id="select_car" class="kboard-attr-row kboard-attr-radio meta-key-select_car required">
			<label class="attr-name" for="select_car"><span class="field-name">차량 선택</span> <span class="require">*</span></label>
			<div class="attr-value">
				<input type="hidden" type="radio" name="kboard_option_select_car" value="">
				<?php foreach($results as $item):?>
					<?php
					$document = new KBContent();
					$document->initWithUID($item->uid);
					?>
					<label class="attr-value-label"><input type="radio" name="kboard_option_select_car" class="required" value="<?php echo $document->option->car_number?>"<?php if($content->option->select_car == $document->option->car_number or $current_user->select_car == $document->option->car_number):?> checked<?php endif?>><?php echo $document->option->car_number?></label>
				<?php endforeach?>
			</div>
		</div>
		<div id="default_current_distance">
			<label class="attr-name" for="car_current_distance">누적주행거리 <span class="require">*</span></label>
			<div class=""><input type="number" id="kboard_option_car_current_distance" name="kboard_option_car_current_distance" value="<?php echo $content->option->car_current_distance?>" placeholder="주행거리 (ex. 1010 km)"></div>
		</div>
		<?php endif?>
		<!--- 차량 등록 리스트 호출 Stop --->

 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기

※ 상품, 상품정보, 거래에 관한 의무와 책임은 의뢰자와 작업자에게 있습니다.

  • 프로젝트 의뢰인과 댓글 작성자 본인만 볼 수 있습니다.

  • 프로젝트 의뢰인과 댓글 작성자 본인만 볼 수 있습니다.

※ 프로젝트에 지원하기 위해서는 코스모스팜에 로그인이 필요합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기