[php질문] 게시판 리스트 값 출력문제입니다.
일반형게시판을 보면 보통 리스트 출력을
--------------------------------------------------
no | title | name | date
--------------------------------------------------
6 test test 2005
5 test1 test1 2005
4 test2 test2 2005
3 test3 test3 2005
2 test4 test4 2005
--------------------------------------------------
prev [1] [2] next
--------------------------------------------------
이렇게 되는데 그중 no=5번을 지우고 글을 다시 입력하면
--------------------------------------------------
no | title | name | date
--------------------------------------------------
7 test5 test5 2005
6 test1 test1 2005
4 test2 test2 2005
3 test3 test3 2005
2 test4 test4 2005
--------------------------------------------------
prev [1] [2] next
--------------------------------------------------
이렇게 되버리거든요?
지우고 다시 입력 하더라도 순서가 6 5 4 3 2 이렇게 정렬 할 수 있는 방법을 문의 드리고 싶습니다.
제 코드 입니다.
<? $numresults=mysql_query("select id from $board where del!='y'"); $numrows=mysql_num_rows($numresults); function re_see($parentid) { global $board; static $i=0; $query3="select id,del from $board where parent=$parentid order by id desc"; $mysql_result3=mysql_query($query3); while ($row3=mysql_fetch_array($mysql_result3)) { if ($row3[del]=='n') { $i++; $query4="update $board set next=$i where id=$row3[id]"; mysql_query($query4); } re_see($row3[id]); } } re_see(0); function kstrcut($str, $len, $suffix = "") { if ($len >= strlen($str)) return $str; $klen = $len - 1; while(ord($str[$klen]) & 0x80) $klen--; return substr($str, 0, $len - (($len + $klen + 1) % 2)) . $suffix; } $limit=15; // 페이지 안에 게시물 수 if (!$offset) { $offset=0; } $result=mysql_query("select * from $board where del!='y' order by next limit $offset,$limit"); while($row=mysql_fetch_array($result)) { echo "<tr>"; echo "<td width=2 align=left background=../www_board/images/www_15.gif><img src=../www_board/images/www_15.gif width=2 height=25></td>"; echo "<td width=40 align=center>"; echo "$row[id]"; <<--------- 이부분이 auto_increment로 지정되어 있습니다. echo "</td>"; $day=explode(" ",$row[wdate]); echo "<td width=100 align=center>"; echo " $day[0]"; echo "</td>"; echo "<td width=229 align=left> "; $title=htmlspecialchars($row[title]); if ($row[parent]!=0) // re 이미지 { echo (" <img src=images/re.gif align=absmiddle border=0>"); } echo "<a href=www_view.php?id=$row[id]&offset=$offset>"; echo kstrcut("$title",50,"..."); echo "</a>"; echo "</td>"; echo "<td width=100 align=center>"; echo "$row[name]"; echo "</td>"; echo "<td width=70 align=center>"; echo "$row[see]"; echo "</td>"; echo "<td width=2 align=right background=../www_board/images/www_15.gif><img src=../www_board/images/www_15.gif width=2 height=25></td>"; echo "</tr>"; echo "<tr bgcolor=#CAE10A>"; echo "<td height=1 colspan=7 align=left><img src=../../images/spacer.gif width=1 height=1></td>"; echo "</tr>"; } mysql_close(); ?>
물론 편법으로 이렇게도 해보았습니다.
$limit=15; // 페이지 안에 게시물 수 if (!$offset) { $offset=0; } $result=mysql_query("select * from $board where del!='y' order by next limit $offset,$limit"); while($row=mysql_fetch_array($result)) { $count=$numrows--; <<------- 이부분 수정 echo "<tr>"; echo "<td width=2 align=left background=../www_board/images/www_15.gif><img src=../www_board/images/www_15.gif width=2 height=25></td>"; echo "<td width=40 align=center>"; echo "$count"; <<--------- 이부분 수정 echo "</td>";
이렇게 하면 리스트에서는 $numrows(총게시물수) 하나씩 차감하니까 제대로 되었습니다.
문제는 다음 페이지 리스트로 옮기면 이어서 카운트가 되어야 하는데 앞면과 똑같이 되어버리네요.... ㅜㅡ
--------------------------------------------------
no | title | name | date
--------------------------------------------------
6 test test 2005
5 test1 test1 2005
4 test2 test2 2005
3 test3 test3 2005
2 test4 test4 2005
--------------------------------------------------
prev [1] [2] next
--------------------------------------------------
1페이지
--------------------------------------------------
no | title | name | date
--------------------------------------------------
6 test5 test5 2005
--------------------------------------------------
prev [1] [2] next
--------------------------------------------------
2페이지
카운트(no)가 1이 되어야하는데 똑같이 6 이 나와버리네요.. ㅜㅡ
도움을 요청 하겠습니다.
참..페이지 나누는 부분입니다.[code:1]<?if &
참..페이지 나누는 부분입니다.
[ShadowMind_Angels]
배움의 길은 멀고도 험하군요..............
진정한 배움의 길이란 ★━────
보여주신 코드는 DB에서 SELECT 하는 부분만 있네요.아마 dat
보여주신 코드는 DB에서 SELECT 하는 부분만 있네요.
아마 database 의 no 필드에 auto_increment 가걸린것 같은데 그렇다면 수동으로 작업해주는 방법밖엔 없습니다.
auto_increment 가 걸리지 않아도 수동으로 체크해서 작업해야겠네요.
만약 no 가 프라임으로 걸려있다면 그냥 놔두는게 좋습니다.
출력할때의 정렬이 문제라면 일반적으로 정렬용 필드를 하나 따로 두고 그필드를 필요에따라 가공하여 사용하는게 좋습니다.
질문은 php 쪽으로 하셨지만 답은 database 쪽에 있고,
원하는 결과는 php의 다른곳에 있는것 같습니다. (무슨말이지.. :roll: )
time to wait...
[code:1]mysql> desc customer_board;
디비테이블 구조입니다.
$id 는 글이 쓰여을때 자동으로 값이 넘어가는거 맞습니다.
편법
을 사용하여 전체값에 대한 내림순으로 값을 따로 줬습니다.
그결과가 내림순 값은 잘되는데 다음 페이지로 넘어 갔을때가 적용이 안되고 앞 페이지 처럼 처음 내림순 값을 나온다는 것입니다.
저두 이쪽에서 수정을 봐야 할듯 싶은데...영 감이 안오네요.
[ShadowMind_Angels]
배움의 길은 멀고도 험하군요..............
진정한 배움의 길이란 ★━────
편법으로 이렇게나마 했긴 했는데 영 찜찜하네요..[code:1]$
편법으로 이렇게나마 했긴 했는데 영 찜찜하네요..
깔끔하게 단순위 게시물 카운트 정렬이 되었네요...
좀더 나은 방법도 있을것 같은데.. 더 연구를 해봐야겠군요.. ^^
좋은 명절 연휴 되시길 바랍니다.
감사합니다.
[ShadowMind_Angels]
배움의 길은 멀고도 험하군요..............
진정한 배움의 길이란 ★━────
댓글 달기