채택완료

write.skin.php에서 버튼으로 다른 지정 게시글의 여분필드 변경하고 싶습니다. (ajax)

공지사항 글이 1개 있구요, 거기에서 여분필드 1개를 숫자배열로 받아서 쓰려고 합니다.

그런데 write.skin.php 페이지에서 <글을 굳이 쓰지 않더라도> 이 배열 내의 숫자를 증가, 감소시킨 걸 저장해 접속자들의 전체적인 항목 선호도를 좀 알아보고 싶어요.

ajax라는 걸 알았고, 어느정도 코드도 짜봤습니다만 공부가 부족해서인지 한참 더 가야할 것 같습니다..

배열을 변경할 때 ajax로 통신해야 하는데 그걸 어찌해야할 줄 몰라서 안절부절하고 있습니다

혹시 도움을 받을 수 있을까요?

Copy
$totalLike = "select count(*) cnt from 게시판이름 where wr_id = '공지사항글아이디' and wr_7 = 'wr_7'";
$row = sql_fetch($totalHeart);
$like = @explode("|",$row);

이렇게 쿼리로 다른 게시글의 여분필드 받아와서 배열로 만드는 것까진 했습니다.

Copy
<div class='likes'>

<input id='like1' type='button'>1번 좋아요</input>

<input id='like2' type='button'>2번 좋아요</input>

<input id='like3' type='button'>3번 좋아요</input>

</div>

항목들의 좋아요 버튼은 이렇게 만들었고요

Copy
$(document).on('click', 'input[id*=like]', function(){
$.ajax({
  type: 'post',
  url: '무슨 주소를 넣어야할지 모르겠습니다...',
  data: {
   데이터는 이미 위에서 array로 받아왔는데 어떻게 해야하나요?
  },
  success: function (펑션 이름) 
  {
     여기에서 array의 해당 번째의 항목을 +1해주면 될 것 같습니다...
  }
  });
});

혹시 이렇게 진행해나가면 가능할까요?ㅠㅠ

답변 2개 / 댓글 3개

채택된 답변
+20 포인트
2019-10-07 (월) 03:25:09

내용은 복잡해서 잘이해가 가지 않지만

$(document).on('click', 'input[id*=like]', function(){
$.ajax({
  type: 'post',
param:'send=mbid&like=1',
  url: '받는쪽.php?param 도 같이 보내요',
  data: {
   php 에서 처리된 내용을 
if(data) {
    값이 있으면 처리
    여기서 array +1 해주세요.
}else{
    없으면 처리 못함
}
  },
  success: function (펑션 이름) 
  {
     여기에서 array의 해당 번째의 항목을 +1해주면 될 것 같습니다...
  }
  });
});

위 흐름처럼 작업하시면 됩니다.

한번 해보시면 쉽게 이해하실것 같습니다.

답변에 대한 댓글 1개

다른 게시글의 여분필드를 다른 파일에서 바로바로 수정할 수 있도록 하는 겁니다.. 제가 잘 이해 안 되게 썼나보군요 ㅠㅠ

param은 제 임의대로 설정해도 되는 건가요?

그리고 받는 쪽 url은 뭔가요? 그러니까 제가 설정한 php가 돌아갈 파일을 새로 생성해 파라미터를 전송하라는 건가요?ㅠ 새로운 파일을 생성해야하는지..

새벽 늦게까지... 감사합니다 ㅠㅠ
2019-10-07 (월) 09:09:07

혹시 내놓고자 하는 결과물이 어떻게 되시나요??? 죄송하지만 저도 이해가 잘 안가네요 ㅠㅠ

답변에 대한 댓글 2개

공지사항에 투표 목록이 몇 개 있습니다. 그걸 여분필드 배열로 받아서 <input type=number readonly>로 꾸렸어요!

그 투표를 회원들이 해당 게시판에 글쓰러 들어갔을 때에만(write.skin.php 파일) 투표할 수 있게 하려고 합니다ㅠㅠ

클릭 한 번으로 공지사항 여분필드 해당 투표 항목(해당 여분필드 배열 : <input type=number readonly>)을 value+1로 수정해주는 시스템을 구상했습니다.

복잡하죠...ㅠㅠ 단순하게 글쓰기 창에서만 투표할 수 있는 것, 페**북의 '좋아요' 개념이라고 생각하시면 될 듯해요ㅠㅠ
2019-10-07 (월) 17:13:36
일단 1번 2번 3번 좋아요 갯수를 DB에 저장해야하니 테이블을 만들거나 기존의 테이블중에 컬럼을 추가하시고

$(document).on('click', 'input[id*=like]', function(){
$.ajax({
type: 'post',
url: '쿼리문이 실행될 ajax.php 파일의 주소 (update문)',
data: { like : (좋아요값)
},
success: function (data){
//ajax에 접속 후 성공하면 실행시킬 구문 예를들어 ajax에서 insert 후 select문으로 결과를 조회해온다면
$('.likes').append(data);
}
});
});

ajax.php 에서는
$like = $_POST[like];
$sql = "update set ...."
sql_query($sql); //업데이트문 실행

//업데이트 실행 후 결과값 조회해서 echo로 결과값 뿌려줌

저라면 이렇게 만들것 같은데 참고하시면 될것 같습니다.

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