[김성민]님이 남기신 글:
>안녕하세요,
>
>그때 알려주신 시간 비교 부분을 적용해서 이제 완성 단계에
있는데,
>모르는 부분이 있습니다.
>첨부한 파일은 게시물을 보는 화면인데 보는거 까지는 되고,
아래에 관련글을 출력하는데 가상게시물 번호 처리를 못하고
있습니다.
>책에는 원래 가상 게시물까지는 없는데 여기저기 뒤져가며
리스트, 검색화면 까지는 성공 했습니다.
>근데 보는 화면에서는 도무지 안되는군요.
>
>$count=$total-$total+1;
>for($i=$count; $i<=$total; $i++){
>
>}
>
>이것을 따로 빼서 하면 1, 2, 3 이렇되는데 답변글 호출하는
함수내에서 같이 쓰려니까 1, 2, 2 이렇게 되거든요?
>
>하나의 게시물에 답변이 3개 있다면 총 게시물은 4개이므로 1,
2, 3, 4까지가 되어야 할것 같은데...
>우째서 2에서 스톱을 하냐.. 이겁니다.으으으으...
>
>아침에 자취방 청소하자마자 붙들고 앉아서 지금까지 이러고
있슴다..ㅎㅎ
>
>어디가 잘못 되었는지..좀 봐주시면 감사하겠습니다.
========================================
답변이 늦었습니다.
어느 하나의 특정 게시물의 다음/이전글을 가져오는
알고리듬은
조금 복잡합니다.
특히 검색모드에서는
더욱이 그렇습니다.
...
검색모드에서
어느 특정 게시물(이하 'A')의 다음글(A+1)과 이전글(A-1)을
구할려면
현재 보는 게시물 A에서 검색 list 모드와 똑같이 검색 SQL 문을
사용해야 합니다.
그런데 현재 보고 있는 A 게시물이 현재 어느 위치(가상의 index)
에 있는지 모르기 때문에 이것도 list 모드에서 가상의 index를
만들어
넘겨주든지 아니면 while() 문이나 for() 문으로 일일이 검사해서
현재 A 게시물의 index 를 구해야 합니다.
이렇게 A 게시물의 index를 구하고 나면 A+1, A-1은
구하기 쉽겠죠..
예전 Crazy 보드가 이와 같은 알고리듬이고
요즘은 코멘트로 관련 답변글을 대신합니다.
관련 답변글은 처음 테이블을 만들때 상당히 신중하게
구성해야합니다.
솔직히 SQL 문보다는 DB 설계가 제일 어렵고 시간도 많이
걸립니다.
첨부한 코드에서는
db_connect();
...
$query = ".... WHERE id = '$id'";
...
## 게시물 출력
...
db_close();
...
db_connect();
...
reply(0,$row[egroup]);
...
이렇게 코딩되어 있는데 DB 커넥션이 두번 발생하여 상당히
비효율적입니다.
db_connect();
...
$query = ".... WHERE id = '$id'";
...
## 게시물 출력
...
reply(0,$row[egroup]);
...
db_close();
이런식으로 한번만 커넥션이 되도록 수정하세요.
그리고 관련 답변글 게시물 출력에서
reply(0,$row[egroup]);
이렇게 되어 있는데
reply($id,$row[egroup]);
로 고쳐보세요.
그리고
// 조회수 업데이트
$count_query = mysql_query("select count from $db_table where id='$id'");
$count_row = mysql_fetch_array($count_query);
$count_up = $count_row[count]+1;
$count_result = mysql_query("update $db_table set count=$count_up where
id='$id'");
이렇게 4줄이나 코딩했는데 이것을
@mysql_query("UPDATE $db_table SET count=count+1 WHERE id='$id'");
이렇게 한줄만 써도 됩니다.
그리고 또,
$row = mysql_fetch_array($result);
이것은
$row[0] , $row[id]
$row[1] , $row[xxx]
...
이런식으로 숫자형 배열과 associative 배열 모두를 가져옵니다.
현재 associative 배열만 사용하므로 속도면에서
$row = mysql_fetch_assoc($result);
이것도 더 낫습니다.
그외에도 손볼것은 더 있지만 하나하나씩 배워가면서
수정해 보세요.
|