리스트에서

리스트에서

QA

리스트에서

본문

리스트에서 항목이 많다보니

1.배열로 했습니다.

2.이걸  $num = $(this).attr('data-num'); 이런식으로 해당 배열값만 모달로 넘겼습니다. 해당 배열값만 잘 나옵니다.

3.이제 이 해당 배열값만 모달에서 수정하여 저장하려는데 여기서 막막합니다.

 

<span id="num"></span>번 

예를 들어 이 span id값이 3이면

ajax로

배열 3번째에 업데이트하고 싶은데 어떻게 처리할 수 있을까요?

 

<script>
// 변경
$(document).on('click', '#button_<?php echo $write[wr_id]; ?>', function(){

 

        var wr_id = $(this).data("wr_id");
        var bo_table = $(this).data("bo_table");
 ----------------       

        var num= $(this).data("num"); 

----------------       

요부분이 문제 같습니다. 3이면 배열 3번째에 넣어야 하는데....

        
        $.ajax({
            url: "<?php echo $board_skin_url?>/ajax.update.php",
            type: "POST",
            data: {
                "wr_id": wr_id,
                "bo_table": bo_table,

                "num": num

              },
            dataType: "text",
            async: false,
            cache: false,
            success: function(data, textStatus) {

                sql = data.sql;


            }
        });

});


</script>

 

 

이 질문에 댓글 쓰기 :

답변 2

 name='rec[]'  이게 디비에 전달되는 최종 배열값인것 같은데 맞나요

 

( 이해하기 쉽게 <?php echo $write['wr_id'] ?> => wr_id숫자 로 표기했습니다 )

( 이해하기 쉽게 <?php echo write['rec'] ?> = > rec숫자 로 표기했습니다 )

<input type='text' name='rec[]' id='rec_wr_id1'  value='rec1' >

<input type='text' name='rec[]' id='rec_wr_id2'  value='rec2' >

<input type='text' name='rec[]' id='rec_wr_id3'  value='rec3 >

<input type='text' name='rec[]' id='rec_wr_id4'  value='rec4' >

<input type='text' name='rec[]' id='rec_wr_id5'  value='rec5' >

위와 같은 폼데이터 구성인거 같은데...

 

제 경험으로는 두가지가 있습니다

하나는 로컬에서 변경된 값을 따로 지정해서 넘기는 방법과

다른 하나는 로컬에서 모든 값을 넘긴후 서버에서 기존 저자오딘 값과 넘겨준 값을 비교해서 바뀐 부분을

업데이트 하는 방법입니다

 

첫번째 방법은

<input type="hidden" name="chg_value" id="chg_value"> 와 같이 폼안에 바뀐 데이터를 저장할

인풋을 하나 추가하는 겁니다

 

그리고 자바스크립트에서 모달로 전달 받은 data-num 값을 이곳의 value 값에 넣고

디비에서 chg_value 값에 해당하는 필드를 업데이트 합니다

 

두번째 방법은

모든 값을 정상적으로 넘깁니다

 

<input type='text' name='rec[]' id='rec_wr_id5'  value='rec5' >

위의 값이 value값이 rec5가 아닌 rec100 처럼 바뀌었다면

서버에서 

이중 for문 등을 이용해서 값을 비교합니다

$data 는 입력된 디비값입니다 

 

방법1.

$data_rec  = $data['rec'];  // rec란 필드에 구분자를 이용해서 저장했다면

$data_exp = explode("|", $data_rec);  // 파이프라인을 이용한 구분자 형태일 경우

$data_len  =  count($data_exp);

$update_len = count($_POST['rec']);

$data_yes  = "";// 저장될 값을 담음

for($i=0; $i < $data_len; $i++){

     for($j=0; $j < $update_len; $j++){

         if( $data_exp[$i] !== $update_data[$j]){  // 입력된 데이터와 업데이트된 데이터가 틀리다면

              $data_yes  = $update_data[$j];   // 디비에 저장될 값

              break;

        }

     }

}

위의 형태는 $data_yes 라는 변수에 바뀐 부분이 있을 경우 담게 됩니다 다만 한개 이상의 바뀐 값이 

있다면 내용은 조금 달라져야 합니다 

 

 

방법2.

저장 필드가 

$data['rec1']  $data['rec2']   $data['rec3']   $data['rec4']   $data['rec5']  와 같이

즉 rec1 ~  rec5와 같이 여러개의 필드를 가진 디비 테이블이면

 

$data_yes  = "";// 저장될 값을 담음

$update_len = count($_POST['rec']);

for($i=0; $i < $update_len; $i++){ 

          $field = "rec".($i+1); // 루프를 돌면서 rec1 ~ rec5까지 쓰이게 됨

           if( $rec[$i] !== $data[$field]){        // 업데이트 데이터와 입력된 데이터가 틀리다면

              $data_yes  = $update_data[$j];   // 디비에 저장될 값

              break;

          } 

}

$data_yes 를 업데이트 값에 사용하면 됩니다

 

복잡하죠 ...

그래서 첫번째 방법인 로컬에서 인풋하나 추가하고 바뀐 부분을 그곳에 넣어서 디비  저장하는걸 추천합니다

 

이렇게 상세하게 시간을 내주셔서 감사합니다.
제 수준에는 1번이 적합할거 같습니다.ㅋ
hidden으로 해볼까도 하다가 막막해서,,해보겠습니다..이제 주무셔야죠,,편히 쉬세요

배열 3번째라 함은 로컬을 의미합니까 ( 자바스크립트 ) 아니면 서버의 저장 데이터인 php 저장 배열을 의미합니까

 

서버의 배열에 저장을 원하시면

 

사용하는 배열이름이 $data 일 경우  $data[2] = isset($_POST['num']) ? $_POST['num'] : ""; 

위와 같이 하면 될거 같은데요  

배열이 세번째라 했으니  중괄호 안에 2라고 적었습니다  배열은 0부터 시작하니 세번째는 2가 됩니다

감사합니다. 3번째가 정해진건 아니고 리스트에서 모달 띄울때 해당 배열값만
<a id="modal_<?php echo $list[$i]['wr_id'] ?>_<?=$k?>" data-bo_table="<?php echo $bo_table?>" data-wr_id="<?php echo $list[$i]['wr_id']; ?>" data-rec="<?php echo $rec[$k]?>" data-num="<?php echo $k?>" > </a> 이렇게 data값을 모달로 넘기고
모달에서는

    $("#num").text($num);
    $("#rec_<?php echo $write['wr_id'] ?>").attr("value", $rec);
이렇게 해서 해당 배열값만 받아와서

문제는 이제 이 해당배열값만 없데이트 해야 하는데

즉 컴퓨터는 <input type='text' name='rec[]' id='rec_<?php echo $write['wr_id'] ?>'  value='<?php echo $write['rec'] ?>' >이게 5번째 값인지는 모른다는 것입니다.

data-num="<?php echo $k?>"는 배열순서와 같으니 이걸 이용해서

data-num이 5이면 <?php echo $write['rec'] ?>이걸 5번째 배열에 넣을 수 없을까해서요
6이면 6번째 배열에 이런식으로요...

답변을 작성하시기 전에 로그인 해주세요.
전체 123,641 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT