채택완료

클릭시 php(쿼리문) 불러오기.

2022-08-07 (일) 18:06:05 4,612
Copy
<?php
$sql = "

  select a.mb_id, b.as_photo, b.mb_nick, b.mb_email, b.mb_homepage, b.as_level

    from g5_point a left join g5_member b on (a.mb_id = b.mb_id)

   where a.po_rel_table = '{$bo_table}'

     and a.po_rel_id = '{$wr_id}'

     and a.po_rel_action = '열람'

   order by a.po_datetime desc

";

$result = sql_query($sql);

for ($i = 0; $row = sql_fetch_array($result); $i++) {

  

                    echo apms_sideview($row['mb_id'], get_text($row['mb_nick']), $row['mb_email'], $row['mb_homepage'], $row['as_level']);

}

    

    ?>

해당 소스는 point 테이블에서 열람한 회원 목록을 뽑아주는 쿼리인데요.

게시판 뷰 페이지 마다 들어가니 딜레이가 너무 심하게 걸려 새창으로 불러들이고 싶습니다.

문제는 저 소스대로 불러들이려니 빈 페이지로만 나오네요. 

짧은 생각으로는 게시판 뷰아 가인 따로 페이지로 불러들이다 보니 필요한 정보가 부족한게 아닌가 싶어서

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 
include_once('../common.php');
global $view, $wr_id, $bo_table;

이런식으로도 넣어봤는데... 새창으로 불러와도 반응이 없습니다.

어떻게 해야 하는 걸까요

답변 5개 / 댓글 3개

채택된 답변
+20 포인트

열람한 회원목록을 보는데 

왜 포인트 전체를 걸죠?

문제의 접근방법이 잘못된것으로 보여집니다.

다시말해서

회원중, 포인트의 '열람'을 한 회원 목록

이라면

포인트를 열람한 작동을 할때, 회원정보에 표기를 하던지

포인트가 중심이 아니라.

회원중에 열람이 존재하는 회원을 체크하던지

하면되는거죠

두번째방법의 경우

Copy
select b.mb_id, b.as_photo, b.mb_nick, b.mb_email, b.mb_homepage, b.as_level

from g5_member b

where exists (select 'x' from g5_point a

                     where a.mb_id = b.mb_id

                          and a.po_rel_table = '{$bo_table}' 

                          and a.po_rel_id = '{$wr_id}' 

                         and a.po_rel_action = '열람'

                     )

으로 접근하는겁니다.

point별로 열람한 리스트가 역순으로 조회가 되어야하면

상세보기로 풀어가는게 좋죠

답변에 대한 댓글 2개

와... 말씀대로 수정해보니 속도가 3배는 빨라진 것 같습니다 ㅠㅠ 너무 감사드립니다!
저기 정말 죄송한데, 혹시 총 몇 명이 열람했는가 값을 뽑아내려면 어떤 식으로 뽑으면 될까요?
몇명이 열람했는가? 라는것 자체는
무엇을이 빠진것 같은데 어떤것에 대한 몇명인지가 중요하겠죠
2022-08-08 (월) 14:53:24

g5_point 테이블 인덱스를 보니

> show index from g5_point;
+-------------+------------+----------+--------------+----------------+
| Table       | Non_unique | Key_name | Seq_in_index | Column_name    |
+-------------+------------+----------+--------------+----------------+
| g5575_point |          0 | PRIMARY  |            1 | po_id          | 
| g5575_point |          1 | index1   |            1 | mb_id          | 
| g5575_point |          1 | index1   |            2 | po_rel_table   | 
| g5575_point |          1 | index1   |            3 | po_rel_id      | 
| g5575_point |          1 | index1   |            4 | po_rel_action  | 
| g5575_point |          1 | index2   |            1 | po_expire_date | 
+-------------+------------+----------+--------------+----------------+
6 rows in set (0.00 sec)

게시판(bo_table)과 wr_id, mb_id로 된 인덱스 하나 더 추가하는 것도 방법입니다.

아미나에서 해당 위젯의 설정시  캐싱을 활성화 해두면 됩니다. 1시간이나 1일.

2022-08-07 (일) 19:24:31

해당 커먼파일 위치가 맞다면 mysql 접속 되실거에요.

2022-08-07 (일) 18:25:47

새창에서 mysql 접근하려면 common.php 가 로드되어야 합니다.

답변에 대한 댓글 1개

include_once('../common.php'); 넣으면 되지 않나요?

답변을 작성하려면 로그인이 필요합니다.