도와주세요

a태그를 특정 조건에서만 비활성화시키고 싶은데... +사소한 기능 문제

title: 노란 장미왕뚠뚠돈까스라이츄2019.08.08 16:44조회 수 156댓글 6

  • 6
    • 글자 크기


정주행할 때 메인페이지 넘어가는 게 귀찮아서 이전글/다음글 링크를 만들었고 특정 조건 하(글번호가 0이거나 총 게시물일 때)에서 저렇게 링크 글자가 바뀌게끔 했습니다. 다만 a태그는 여전히 작동하기때문에... 


착한 사람만 보이는 일기 아닙니다 이렇게 빈 페이지가 나옵니다... 


<%
String next="";
String prev="";
 
if (idx == 1) {
     next="마지막 글입니다";
}
else {
     next="다음글";
}
 
if (idx == total) {
     prev ="최근 글입니다";
}
else {
    prev="이전글";
}
%>


여기랑 


<td id="prev" align="center"><a href="view.jsp?idx=<%=idx+1%>&pg=<%=pg%>"><%=prev %></a></td>
<td id="next" align="center"><a href="view.jsp?idx=<%=idx-1%>&pg=<%=pg%>"><%=next %></a></td>


여기가 문제가 되는 부분입니다. 

글자는 바꿨는데 링크는 안되더라고요;; 


리절트셋 닫는거 안에 있는데 왜...... 

아니 스크립트는... 리절트셋 닫는거 밖에 있어서 그랬다 칩시다... 

얘는 대체 왜 이럽니까... 


+이전글이나 다음글 작동시 뭔가 좀 이상한데... 

일기가 지금 407개이고 한 페이지당 15개니까 393번까지가 1페이지고 392번 다이어리는 2번 페이지입니다. 


여기까지는 좋았어요. 


선생님 392번 글은 2번 페이지십니다. 


진짜 2번 페이지입니다... 


이걸 어떻게 해야 할 지 모르겠어요. 

페이징이 어떻게 되는거냐면 


<% final int ROWSIZE = 15; // 한페이지에 보일 게시물 수  
final int BLOCK = 10; // 아래에 보일 페이지 최대개수 1~5 / 6~10 / 11~15 식으로 5개로 고정  
int pg = 1; //기본 페이지값  
if(request.getParameter("pg")!=null) { //받아온 pg값이 있을때, 다른페이지일때  
    pg = Integer.parseInt(request.getParameter("pg")); // pg값을 저장  
    }  
int start = (pg*ROWSIZE) - (ROWSIZE-1); // 해당페이지에서 시작번호(step2)  
    int end = (pg*ROWSIZE); // 해당페이지에서 끝번호(step2)  
    int allPage = 0; // 전체 페이지수  
    int startPage = ((pg-1)/BLOCK*BLOCK)+1; // 시작블럭숫자 (1~5페이지일경우 1, 6~10일경우 6)  
    int endPage = ((pg-1)/BLOCK*BLOCK)+BLOCK; // 끝 블럭 숫자 (1~5일 경우 5, 6~10일경우 10)  
    %>

일단 이렇게 들어가고 


            int sort=1;
            String sqlSort = "SELECT NUM from diary order by NUM desc";
            rs = stmt.executeQuery(sqlSort);
            while(rs.next()){
                int stepNum = rs.getInt(1);
                sql = "UPDATE diary SET STEP2=" + sort + " where NUM=" +stepNum;
                 stmt1.executeUpdate(sql);
                 sort++;
            }
            allPage = (int)Math.ceil(total/(double)ROWSIZE);
             
            if(endPage > allPage) {
                endPage = allPage;
            }
            rs.close();
            String sqlList = "SELECT NUM, TITLE, TIME from diary where STEP2 >="+start + " and STEP2 <= "+ end +" order by step2 asc";
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sqlList);

이부분도 페이징에 관여하는 것 같은데 대체 어떻게 도입을 해야 할 지 참 난감하네요.. 


구조가 어떻게 되는거냐면 지금 407페이지니까 407~393 이런 식으로 15개씩 쪼개고 남는 글이 맨 마지막 페이지가 됩니다. 즉 1, 2번 글 두 개가 마지막 페이지입니다. 

라이츄는 뚠뚠 오늘도 뚠뚠 뚠뚠하죠 뚠뚠 

  • 6
    • 글자 크기
imgur 사용하시는분.... 잘아시는분...질문! (by 홀민) 이거 도메인 사용 가능한 거 맞죠? (by 왕뚠뚠돈까스라이츄)
  • 2019.8.8 18:03

    if(idx == total){

    prev = "view.jsp?idx=" + Integer.toString(idx+1) + "&pg=" + pg;

    }

     

    if문이 나온다는건 JSP 안에서 처리하고 있다는 말일텐데

    JSP 문자열 안에서 JSP 시작태그를 사용해봐야 의미가 없죠

  • @네모
    2019.8.9 00:02

    해결봤네요 ㄷㄷ 어제 뭔가 또 잘못 입력됬던 듯 합니다..

    가장 처음 글과 가장 마지막 글에서는 URL 대신 javascript:void(0)을 불렀어요.

     

    이제 페이징만 어떻게 됐으면 좋겠는데 ㅠㅠ

  • @왕뚠뚠돈까스라이츄
    2019.8.9 11:02

    페이징은 무슨 문제가 있는건지 잘 모르겠네요.

    구현방법을 고민하고 계신거라면

     

    SQL의 LIMIT 문을 한번 알아보세요.

     

    간단하게 설명드리자면,

    SELECT * FROM diary ORDER BY step2 ASC LIMIT 15; -> 0~14번 글 (0부터 15개)

    SELECT * FROM diary ORDER BY step2 ASC LIMIT 15, 15; -> 15~29번 글 (15부터 15개)

    SELECT * FROM diary ORDER BY step2 ASC LIMIT 30, 15; -> 30~44번 글 (30부터 15개)

  • @네모
    2019.8.9 11:08

    아 그게 뭐냐면요... 예를 들어서

     

    1) 400번 글이 1페이지에 있고 399번 글이 2페이지에 있어요.

    2) 400번 글 뷰페이지에서 이전글을 누르면 399번으로 넘어가요

    3) URL 구조가 view.jsp?idx=400&pg=1인데 이 pg가 처음 글을 열렀던 페이지로 고정되어 있어요.. (399번 글이 2페이지면 idx=399&pg=2가 나와야 하는데 idx=399&pg=1로 나옴)

    4) 글 열람이나 수정, 삭제에 문제는 없지만 저 상태에서 목록으로 돌아가기를 누르면 399번 글이 있는 2페이지가 아닌 400번 글이 있는 1페이지로 돌아가요.

     

    이 문제예요.. 목록 페이징은 잘 되고 있어요..

  • @왕뚠뚠돈까스라이츄
    2019.8.9 11:53

    아.

     

    총 게시글수가 425개라고 할 때

     

    425 / 15 = 28.3333 ~= 29

    총 29페이지가 나오겠네요.

     

    그리고 400번째 글은

    400 / 15 = 26.66667 ~= 27

    29 - 27 = 2

    2번째 페이지군요

     

    320번째 글은요?

    320 / 15 = 21.3333 ~= 22

    29 - 22 = 7

    7번째 페이지네요.

     

    이전글 다음글 처리시에는 pn을 위와 비슷한 방식으로 계산하여 넘겨줍시다.

    아니면 400번째글이 해당페이지의 첫/마지막 글인지 아닌지 체크해서 pn 넘길때 +-1 해주는 방법도 있겠네요.

  • @네모
    2019.8.9 13:42

    글이 407개고 현재 28페이지입니다.. db에 글 번호의 보수인 step2라는 컬럼이 있어서 최신 글일수록 숫자가 낮아요. (407번 글의 step2가 1) 이걸 기준으로 페이징을 하는건데 그걸 어떻게 해야 할 지가 난감한거예요.. 글 번호를 나누게되면 페이지가 이상하게 될거고 mod는 나누기 시 나머지를 표시해주는거고...

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 [중요] IP 변경이 있습니다.20 마스터 2019.09.20 3029
공지 [중요] 고정 IP에 문제가 발생한 것 같습니다.1 마스터 2019.09.20 2701
공지 회원 전용 페이지가 생겼습니다.15 마스터 2018.03.20 11351
공지 [필독] 질문하는 방법7 마스터 2018.02.23 1536
608 일본어 시험 초급(?)을 따야되는데 조언을 부탁드립니다 ㅠㅠ6 이니스프리 2019.10.04 141
607 리눅스에서.. 무선랜카드 활성화?켜기?3 홀민 2019.09.10 108
606 [미디어위키] 시각편집기 no vrs Estrella3 2019.09.03 86
605 호스팅패널에서 서브도메인 사용하시는 분 계신가요?2 joyfuI 2019.08.28 108
604 스포어에서 허용하는 이미지 업로드 확장자 및 ios에서의 input 태그 줌과 관련하여 여쭤봅니다2 이니스프리 2019.08.27 75
603 Nginx 이미지 외부링크 방지 설정 여부를 확인하는 방법2 이니스프리 2019.08.26 86
602 Beautifulsoup 로그인 문제18 Hanam09 2019.08.24 369
601 부트스트랩 모달의 사이즈를 구해서 사이즈에 맞게 이모지 n개/행을 출력하려고 하는데요.5 이니스프리 2019.08.23 111
600 Jquery 사용 시 $(window).load( function() 를 사용하시나요?5 로우지 2019.08.20 81
599 ftp.studyforus.com은 서비스를 중지하신건가요?2 Estrella3 2019.08.19 83
598 출첵을 했는데 처리가 제대로 안됐어요! title: 노란 장미왕뚠뚠돈까스라이츄 2019.08.19 48
597 imgur 사용하시는분.... 잘아시는분...질문!5 홀민 2019.08.18 86
a태그를 특정 조건에서만 비활성화시키고 싶은데... +사소한 기능 문제6 title: 노란 장미왕뚠뚠돈까스라이츄 2019.08.08 156
595 이거 도메인 사용 가능한 거 맞죠?13 title: 노란 장미왕뚠뚠돈까스라이츄 2019.08.08 107
594 자바스크립트는 왜 이럴까요...5 title: 노란 장미왕뚠뚠돈까스라이츄 2019.08.07 79
593 창 크기에 따라서 표의 크기가 달라지는 태그는 없나요?6 title: 노란 장미왕뚠뚠돈까스라이츄 2019.08.05 120
592 자바스크립트 FormData와 관련된 메서드의 IE 호환성과 관련하여 질문 드립니다 ^^6 이니스프리 2019.08.05 162
591 프로알라 에디터를 사용하면 클라이언트단에서 이미지 리사이징을 할 수 있는가요?6 이니스프리 2019.08.02 113
590 IE11에서 이미지가 깨지는 현상을 해결할 수 있을까요?2 이니스프리 2019.08.02 182
589 야후재팬 메일 이용하시는분 계신가요?2 슬기 2019.07.29 86
이전 1 2 3 4 5 6 7 8 9 10... 33다음
첨부 (6)
2019-08-08 (6).png
3.27MB / Download 4
2019-08-08 (5).png
3.91MB / Download 4
캡처.PNG
5.5KB / Download 4
캡처.PNG
5.0KB / Download 5
캡처.PNG
5.1KB / Download 5
캡처.PNG
1.20MB / Download 4
서버에 요청 중입니다. 잠시만 기다려 주십시오...