카테고리2 제품 불러오기

안녕하세요.

퓨어 갤러리 스킨으로 제품 게시판을 만들었는데요,

카테고리 2에 있는 데이터를 랜덤으로 4개정도 뽑아와서 document.php쪽에 앉히고 싶습니다.

어떻게 접근을 해야할지 몰라 글 남깁니다.

 

<?php
$dbc = mysqli_connect('localhost', 'user_name', 'password',  'db_name');
$query = 'select * from wp_kboard_board_option order by rand() limit 4' ;
$data = mysqli_query($dbc, $query);

while($row = mysqli_fetch_array($data)){
    print_r($row);
    echo "<br/>";
}
?>

 

이런식으로 짜서 옵션데이터7개를 무작위로 불러오는것 까지는 성공하였습니다.

힌트를 주신다면 응용해서 완성해보도록 하겠습니다.

감사합니다.

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

    k보드 관리자님의 도움으로 완성하였습니다.

    다른분들도 이글을보고 많은 도움이 되셨으면 좋겠네요!!

  • 안녕하세요.

    1. foreach 문 안에서 html 코드를 추가해주시면 됩니다. (아래 코드 참고)

    2. 게시글 상세 페이지에서 카테고리는 $content->category1 와 $content->category2 코드를 사용해보세요.

    3. $content->uid 로 현재 보고 있는 상세 페이지의 uid를 알 수 있습니다.

    위 질문들을 토대로 예제를 작성해봤습니다.

    아래의 코드를 적용해보세요.

    <?php
    global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}kboard_board_content
                            WHERE category1 = '{$content->category1}'
                            AND category2 = '{$content->category2}'
    						AND uid != {$content->uid}
                            ORDER BY RAND()   
                            LIMIT 4");
    ?>
    <ul>
    <?
    $additional_list = array();
    foreach($results as $row):
       $test = new KBContent();
       $test->initWithUID($row->uid);
       $tmp = array(
       	"title" => $test->title,
       	"uid" => $test->uid,
       	"product_single" => $test->option->product_single ,
       	"tablespac1"=> $test->option->tablespac1
        );
       $additional_list[] = $tmp;
    ?>
    <li class="goods_float">
    	<a class="" href="<?php echo $url->set('uid', $test->uid)->set('mod', 'document')->toString()?>#kboard-document">
    		<div class="goods" style="background-image:url('<?php echo $tmp['product_single']; ?>');"></div>
    		<p> <?php echo $tmp['title'] ?> </p>
    		<p> <?php echo $tmp['tablespac1'] ?> </p>
    	</a>
    </li>
    <div style="clear:both"></div>
    <?php endforeach?>
    </ul>

    적용 후에도 원하는 결과가 나오지 않으신다면 댓글로 남겨주세요.

    고맙습니다.

  • <?php
    global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}kboard_board_content
                            WHERE category1 = '거성산업'
                            AND category2 = '장의자'
                            AND uid != 1
                            ORDER BY RAND()   
                            LIMIT 4");
    
    $additional_list = array();
    foreach($results as $row){
       $content = new KBContent();
       $content->initWithUID($row->uid);
       $tmp = array(
            "title" => $content->title,
            "uid" => $content->uid,
            "product_single" => $content->option->product_single ,
            "tablespac1"=> $content->option->tablespac1
        );
       $additional_list[] = $tmp;
    }
    ?>

     

    		<ul>
    			<li class="goods_float">
    				<a class="" href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>#kboard-document">
    					<div class="goods" style="background-image:url('<?php echo $tmp['product_single']; ?>');"></div>
    					<p> <?php echo $tmp['title'] ?> </p>
    					<p> <?php echo $tmp['tablespac1'] ?> </p>
    				</a>
    			</li>
    			
    			<div style="clear:both"></div>
    		</ul>

     

    이런식으로 코드를 재구성해 거성산업이라는 카테고리속에 장의자라는 카테고리를 찾아서 현재의 uid가 1이아닌 값을 4개 랜덤으로 뿌려라 라고 짜봤는데요.

     

    1. 이런경우에 하나의 html ( ul > li ) 안에 반복문으로 돌리려면 어떤 방법이 있을까요?

    2. 쿼리에서 지금은 카테고리1 = 거성산업,  카테고리2 = 장의자로 직접 지정했지만

    현재 카테고리1,2 를 인식하게 쿼리를 짜려면 어떻게 수정하면 좋을까요?

    3. 마찬가지로 쿼리에서 uid 가 1이 아닌것을 찾았지만 현재 uid를 인식하여 나오지 않게 하려면 어떻게 수정하면 좋을까요?

     

    현재 1개의 제품출력까지는 잘 나오고있습니다.

  • 아래처럼 해보시면 어떨까요?

    <?php
    global $wpdb;
    $results = $wpdb->get_results("select * from {$wpdb->prefix}kboard_board_option where content_uid='{$content->uid}' and (option_key='tablespac3' or option_key='product_single') order by rand() limit 4");
    foreach($results as $row){
    	$content = new KBContent();
    	$content->initWithUID($row->content_uid);
    	echo $content->title;
    	echo $content->option->tablespac3;
    	echo $content->option->product_single;
    }
    ?>
  • 감사합니다.

    kboard_board_content 안에있는 uid를 파악하여

    kboard_board_option 안에있는 content_uid값이 일치하는 애들한테서

    kboard_board_content 안에있는title과 

    kboard_board_option 안에있는 option_key값중 

    텍스트 tablespac3(텍스트)과 product_single(이미지)를 가져온다

     

    최종결과물은

    document.php에

    <ul>
     <li>
      <a href="<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>#kboard-document">
      <div style="background-image:url("<?php echo '결과물' ?>")
      <div><?php echo '결과물' ?></div>
      <div><?php echo '결과물' ?></div>
      </a>
     </li>

    이런식으로 하면 되지않을까 싶기는한데..

    하단에 4개를 어떻게 지정할지와 <a>태그속 url이 현재 접속된 uid랑 겹치게되지않을까 고민이되네요..

    그래도 꼭 완성해보겠습니다. 도움주시면 감사하겠습니다.

     

    결과적으로 문서 하단쪽에 어떻게 나와야하는지 이미지 올려보도록 하겠습니다. 감사합니다.

  • 안녕하세요~^^

    카테고리2와 옵션 데이터를 어떤 식으로 연결하고자 하는지 (원하시는지) 잘 이해는 안 갑니다.

    일단 mysqli_connect 등 함수 사용 대신 wpdb 클래스를 사용해서 쿼리를 요청해주세요.

    아래는 wpdb 클래스를 사용해서 쿼리를 요청하고 결과를 바탕으로 게시글 제목까지 출력하는 예제 코드입니다.

    <?php
    global $wpdb;
    $results = $wpdb->get_results("select * from {$wpdb->prefix}kboard_board_option order by rand() limit 4");
    foreach($results as $row){
    	$content = new KBContent();
    	$content->initWithUID($row->content_uid);
    	echo $content->title;
    }
    ?>

    스킨의 document.php 파일에 추가해서 응용해보시겠어요?

    아니면 좀 더 구체적으로 설명을 해주시겠어요?

    저희가 밀린 업무가 많아서 아주 세세하게는 답변드리기 어렵지만 도움드리겠습니다.

    고맙습니다.

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