답변 3개
리스트를 40개를 한 페이지 다 출력한다는 가정하에 개발자는 아니어서 스크립트로 처리할 것 같아요
리스트 40개를 json 으로 뿌려줄 페이지 하나 만들고 스크립트로 그 페이지를 접속해서 json 데이터를 가져온 후 랜덤으로 10개, 그 외 30개 를 구분해서 하나의 배열에 담아서 출력할 것 같아요
찾아보니 order by rand() 로 하면 랜덤으로 sorting 되나 봅니다
</p>
<p>where wr_1 != '' order by rand() limit 10</p>
<p>
이런식으로 하면 랜덤으로 10개 출력 될 것 같구요
40개(전체 글) - 10개(랜덤으로 가져온 글)
차집합 개념으로 전체 글 배열에서 랜덤으로 가져온 글 데이터들을 빼면 일반 게시글 30개만 남을테고
위에서 가져온 랜덤글 10개 와 일반글 30개 가지고 출력하면 되지 않을까 싶네요
답변에 대한 댓글 3개
랜덤으로 가져온 게시글의 wr_id 만 따로 뽑아서 배열로 만들어서
[code]
where wr_1 != '' and wr_id not in (랜덤글 10개의 wr_id 만 따로 뽑아놓은 배열)
[/code]
뭐 이런식으로 쿼리를 하나더 짜서 나머지 일반글을 불러올 수도 있을 것 같아요
짱구굴리고 지피티한테 물어보고 구글링해보면서 구현해나가는 식인데 제가 말씀드린 방법이 맞는지는 테스트를 해보질 못해서 아래 @미니님a 님께서 달아주신 답변을 토대로 해보시길 추천드립니다!
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p><?php
$bo_table = 'free'; // 게시판 테이블명
$write_table = $g5['write_prefix'] . $bo_table;</p>
<p>// 1. wr_1에 값이 있는 글 중에서 랜덤으로 10개 가져오기
$priority_sql = "SELECT * FROM {$write_table}
WHERE wr_1 > '' AND wr_is_comment = 0
ORDER BY RAND()
LIMIT 10";</p>
<p>$priority_result = sql_query($priority_sql);
$priority_list = array();</p>
<p>while ($row = sql_fetch_array($priority_result)) {
$priority_list[] = $row;
}</p>
<p>// 2. 일반 게시글 30개 가져오기 (wr_1이 빈 값인 글들)
$normal_sql = "SELECT * FROM {$write_table}
WHERE wr_1 = '' AND wr_is_comment = 0
ORDER BY wr_num ASC, wr_reply ASC
LIMIT 30";</p>
<p>$normal_result = sql_query($normal_sql);
$normal_list = array();</p>
<p>while ($row = sql_fetch_array($normal_result)) {
$normal_list[] = $row;
}</p>
<p>// 3. 두 배열을 합치기
$total_list = array_merge($priority_list, $normal_list);</p>
<p>// 4. 출력하기
foreach ($total_list as $list) {
echo $list['wr_subject'] . " - " . $list['wr_datetime'] . "
";
}
?></p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p><?php
// wr_1 값 있는 글 중 랜덤 10개
$sql1 = "SELECT * FROM g5_write_yourboard WHERE wr_1 <> '' ORDER BY RAND() LIMIT 10";
$res1 = sql_query($sql1);</p>
<p>$list = array();
while ($row = sql_fetch_array($res1)) {
$list[] = $row;
}</p>
<p>// wr_1 값 없는 일반 글 최신 30개
$sql2 = "SELECT * FROM g5_write_yourboard WHERE wr_1 = '' ORDER BY wr_id DESC LIMIT 30";
$res2 = sql_query($sql2);</p>
<p>while ($row = sql_fetch_array($res2)) {
$list[] = $row;
}</p>
<p>// 이제 $list 에 총 40개 들어 있음
foreach ($list as $item) {
echo $item['wr_id'] . ' - ' . $item['wr_subject'] . '
';
}
?></p>
<p>
분리해서 가져와서 합친 다음 출력이 가장 베스트일 것 같습니다.
g5_write_yourboard 여기에 실제 가져올 보드명 쓰심 되구요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인