안녕하세요
이번에 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 코드를 추가해보시겠어요?
고맙습니다.