테스트 사이트 - 개발 중인 베타 버전입니다

클릭시 php(쿼리문) 불러오기. 채택완료

티틴 3년 전 조회 3,781

</p>

<p><?php

$sql = "</p>

<p>  select a.mb_id, b.as_photo, b.mb_nick, b.mb_email, b.mb_homepage, b.as_level</p>

<p>    from g5_point a left join g5_member b on (a.mb_id = b.mb_id)</p>

<p>   where a.po_rel_table = '{$bo_table}'</p>

<p>     and a.po_rel_id = '{$wr_id}'</p>

<p>     and a.po_rel_action = '열람'</p>

<p>   order by a.po_datetime desc</p>

<p>";</p>

<p>$result = sql_query($sql);</p>

<p>for ($i = 0; $row = sql_fetch_array($result); $i++) {</p>

<p>  </p>

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

<p>}</p>

<p>    </p>

<p>    ?></p>

<p>

 

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

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

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

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

 

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

 

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

어떻게 해야 하는 걸까요

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

답변 5개

채택된 답변
+20 포인트
플래토
3년 전

열람한 회원목록을 보는데 

왜 포인트 전체를 걸죠?

 

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

 

다시말해서

 

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

이라면

 

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

 

포인트가 중심이 아니라.

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

하면되는거죠

두번째방법의 경우

</p>

<p>select b.<code>mb_id, b.as_photo, b.mb_nick, b.mb_email, b.mb_homepage, b.as_level</code></p>

<p><code>from g5_member b</code></p>

<p><font face="monospace"><span style="font-size: 11.375px;">where exists (select 'x' from g5_point a</span></font></p>

<p><font face="monospace"><span style="font-size: 11.375px;">                     where a.mb_id = b.mb_id</span></font></p>

<p><font face="monospace"><span style="font-size: 11.375px;">                          and </span></font><code>a.po_rel_table = '{$bo_table}' </code></p>

<p><code>                          and a.po_rel_id = '{$wr_id}' </code></p>

<p><code>                         and a.po_rel_action = '열람'</code></p>

<p><code>                     )</code></p>

<p>

으로 접근하는겁니다.

 

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

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

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

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

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로 된 인덱스 하나 더 추가하는 것도 방법입니다.

로그인 후 평가할 수 있습니다

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

3년 전

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

로그인 후 평가할 수 있습니다

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

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

로그인 후 평가할 수 있습니다

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

티틴
3년 전
include_once('../common.php'); 넣으면 되지 않나요?

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

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

로그인