COMING SOON 🚀

채택완료

랜덤으로 글 출력할 때 특정 글만 고정 출력하는 법

안녕하세요?

 

쿼리문에 order by radnd() 사용해서 게시글을 랜덤으로 출력하여 사용하고 있습니다.

그런데 특정 게시글은 랜덤이 아니라 계속 고정적으로 노출시키고 싶은데요,

 

어떻게 구현하면 좋을지 조언을 구하고자 합니다.

혹시 쿼리문으로도 가능한지도 궁금합니다!

 

감사합니다.

|

답변 4개 / 댓글 4개

채택된 답변
+20 포인트

어떤 구조로 작업을 하셨는지는 잘 모르겠지만 다음과 같이 하면 되지 않을까 싶네요

예시

Copy
<?php
// 고정으로 출력할 특정 글의 wr_id
$fixedPostID = 123;

// 특정 글을 고정으로 출력
$fixedPost = sql_fetch("SELECT * FROM {$g5['write_table']} WHERE wr_id = '{$fixedPostID}'"); // 특정 글을 가져오는 SQL 쿼리 예시

if ($fixedPost) {
    // 특정 글 출력
    echo "<h2>{$fixedPost['wr_subject']}</h2>";
    echo "<p>{$fixedPost['wr_content']}</p>";
}

// 나머지 글들을 랜덤으로 출력하는 SQL 쿼리
$randomPosts = sql_query("SELECT * FROM {$g5['write_table']} WHERE wr_id != '{$fixedPostID}' ORDER BY RAND() LIMIT 10"); // 랜덤 글들을 가져오는 SQL 쿼리 예시

while ($post = sql_fetch_array($randomPosts)) {
    echo "<h2>{$post['wr_subject']}</h2>";
    echo "<p>{$post['wr_content']}</p>";
}
?>

 

답변에 대한 댓글 2개

감사합니다! 혹시 쿼리 하나로 해결할 수 있는 방법은 없을까요?
[code]
<?php
// 고정으로 출력할 특정 글의 wr_id
$fixedPostID = 123;

// 특정 글을 고정으로 출력하는 SQL 쿼리
$sql = "SELECT * FROM {$g5['write_table']} WHERE wr_id = '{$fixedPostID}'";
$sql .= " UNION ALL ";
$sql .= "SELECT * FROM {$g5['write_table']} WHERE wr_id != '{$fixedPostID}' ORDER BY RAND() LIMIT 10";

$posts = sql_query($sql);

while ($post = sql_fetch_array($posts)) {
echo "<h2>{$post['wr_subject']}</h2>";
echo "<p>{$post['wr_content']}</p>";
}
?>
[/code]

참고하셔서 본인의 사이트에 맞게 작업하시면 될 것 같습니다.
여분필드를 사용하신다면 UNION ALL 다음줄에 아래와 같이 수정 하시면 될것 같습니다.

[code]
$sql .= "SELECT * FROM {$g5['write_table']} WHERE wr_id != '{$fixedPostID}' AND wr_20 = 0 ORDER BY RAND() LIMIT 10";
[/code]

두 번째 쿼리 부분에 AND wr_20 = 0 조건을 추가하여 나머지 글 중 wr_20 필드 값이 0인 글을 선택하게되며, 이렇게 하면 특정 글은 wr_20 필드 값이 1인 경우에만 선택되고, 나머지 글은 wr_20 필드 값이 0인 경우에만 선택되게 됩니다.

쿼리에서 union 으로 하시는게 제일 쉬울듯요

그런데 특정 게시글은 랜덤이 아니라...

==

특정 게시물을 어떻게 지정하시나요.

답변에 대한 댓글 2개

wr_20 필드 값을 1로 주었습니다. 나머지 일반글은 0 이구요
Order by wr_20 desc, rand()

특정글을 최신글 코드로 게시판 위쪽에 노출시키면 되지 않을까요?

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