option 키 노출 방법

안녕하세요

이번에 k보드와 견적게시판을 연결하는 작업중에 있는데요

장바구니에서(직접만듬) 가져온 uid값을 기준으로 테이블은 inner join하여 노출하려고합니다.

 

<?php
/*WHERE uid IN ( $connect_uid_str )*/
			//wpdb 불러옴
			global $wpdb;
			//장바구니에서 uid불러옴
			$connect_uid = $_POST['connect_uid'];
			$connect_uid_str = implode(' , ', $connect_uid);
			//sql에서 데이터 불러옴
			$sql2 = $wpdb->get_results( "
										SELECT * 
										FROM wp_kboard_board_content
										INNER JOIN wp_kboard_board_option
										ON wp_kboard_board_content.uid = wp_kboard_board_option.content_uid
										"
										, ARRAY_A);

			foreach( $sql2 as $cart ){
				echo $cart["title"]."<br>";
				echo $cart["option_key"]."<br>";
			}
?>

위는 데이터를 가져온 sql입니다.

 

echo $cart["option_key"]."<br>"; 

이부분을 k보드에서 사용하듯이

echo $cart["option_key"]["tel"]

이런식으로 사용하고 싶습니다.

 

그리고 아래에서 

WHERE uid IN ( $connect_uid_str ) 이구문을 추가하면 애매한 uid라고합니다.

$connect_uid_str는 

$connect_uid = $_POST['connect_uid']; 여기에서 가져온 배열값(1,2,3,4)를 

$connect_uid_str = implode(' , ', $connect_uid); 이렇게 진행하여 '1', '2', '3', '4' 이런식으로 만들어두었습니다.

 

왜 애매한 구절이라고 하는지 알고 싶습니다.

 

항상 감사드립니다.

<?php

			//wpdb 불러옴
			global $wpdb;
			//장바구니에서 uid불러옴
			$connect_uid = $_POST['connect_uid'];
			$connect_uid_str = implode(' , ', $connect_uid);
			//sql에서 데이터 불러옴
			$sql2 = $wpdb->get_results( 	"
											SELECT * 
											FROM wp_kboard_board_content
											INNER JOIN wp_kboard_board_option
											ON wp_kboard_board_content.uid = wp_kboard_board_option.content_uid
											WHERE uid IN ( $connect_uid_str )
											"
											, ARRAY_A);

			foreach( $sql2 as $cart ){
				echo $cart["title"]."<br>";
				echo $cart["option_key"]."<br>";
			}
?>

 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    WHERE절의 uid 부분을 wp_kboard_board_content.uid로 교체해서 확인해보시겠어요?

    kboard_board_content 테이블과 kboard_board_option 테이블에 모두 uid 컬럼이 있습니다.

    그렇기 때문에 테이블 조인 시 어느 테이블의 uid인지 명확하게 설정해주셔야 합니다.

    고맙습니다.

  • 감사합니다.

    테이블을 지정해야한다고 생각하고 where절에는 적지않았네요..ㅠㅠ

     

    제일 궁금한것은

    echo $cart["option_key"]."<br>";

    이부분인데요

     

    k보드에서는 아래와같이 뽑아주고 있는데

    echo $content->option->tel

     

    저도 마찬가지로 해당 option_key와 해당하는 option_value 데이터를 뽑고 싶습니다.

    감사합니다.

  • KBContent 클래스를 사용하시면 될 듯합니다.

    아래의 코드를 활용해보시겠어요?

    $sql2 = $wpdb->get_results("SELECT wp_kboard_board_content.uid
    FROM wp_kboard_board_content
    INNER JOIN wp_kboard_board_option ON wp_kboard_board_content.uid = wp_kboard_board_option.content_uid
    WHERE wp_kboard_board_content.uid IN ( $connect_uid_str )",
    ARRAY_A);
    
    foreach( $sql2 as $cart ){
    	if(isset($cart['uid'])&&$cart['uid']){
    		$content = new KBContent();
    		$content->initWithUID($cart['uid']);
    		echo $content->option->tel;
    	}
    }

    KBContent 클래스로 초기화를 했기 때문에

    아래의 코드로 제목과 내용도 표시할 수 있습니다.

    echo $content->title;
    echo $content->content;

    고맙습니다.

  • 으아 감사합니다.

    $content->option-tel이 잘열립니다!

     

    그런데..

    마지막 uid만 두개씩 출력이됩니다.

    어디에 문제가있는지 디버깅이라도 하고싶은데 어떻게 해야할지를 모르겠네요..ㅜㅜ

     

    <?php
    
    			//wpdb 불러옴
    			global $wpdb;
    			//wp_user객체 반환
    			$current_user = wp_get_current_user();
    			//닉네임(display_name)가져옴
    			$nikname = $current_user->display_name;
    
    			//sql에서 데이터 불러옴
    			$sql2 = $wpdb->get_results( 	"
    															SELECT * 
    															FROM wp_kboard_board_option
    																		INNER JOIN wp_kboard_board_content
    																		ON wp_kboard_board_content.uid = wp_kboard_board_option.content_uid
    															WHERE wp_kboard_board_content.member_display = '$nikname' AND wp_kboard_board_content.board_id = 1
    															"
    															, ARRAY_A);
    
    			foreach( $sql2 as $cart ){
    				$content = new KBContent();
    				$content->initWithUID($cart['uid']);
    				echo "<p>". $content->uid."</p>";
    			}
    ?>

     

    이렇게 짯는데요..

    $content->uid는 두개가 될 수 없는데 

    출력값이

    1, 3, 7, 7 이렇게 나와버립니다

    즉 마지막에 나오는 uid만 두번이 출력됩니다.

    그룹화 즉 group by 이걸 안해줘서 그런데요 어떻게 해야할지 감이안오네요..

     

    힌트라도 주시면 잘 적용하겠습니다.

    항상감사드립니다.

  • 안녕하세요.

    올려주신 코드 중에서

    wp_kboard_board_content.board_id = 1 부분 뒤에

    GROUP BY wp_kboard_board_content.uid 코드를 추가해보시겠어요?

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요