이런 경우 어떻게 하시나요?

이런 경우 어떻게 하시나요?

QA

이런 경우 어떻게 하시나요?

본문

리스트에서 모달을 띄웠습니다.

리스트가 항목이 많아 필드를 배열로 했습니다, 

모달코드를 각각넣으려면 너무 무식해서 배열이 50개면 모달코드를

리스트에 50개 넣어놓으면 개욱기겠죠? ㅋ 그래서

리스트에서 버튼을 누르면 ajax .load방식으로 모달을 불러오고

모달창에는 해당 배열값만 표시되도록 했습니다.

 

여기서 부터 문제입니다.ㅜㅜ

 

모달창에서 수정값을 배열로 보내야 하는데

<input type="text" name="recived" id="recived"  value="<?php echo $write['recived'] ?>" >

문제는 recived 이게 배열이라 모달창에 띄우면서 배열이 아닌거처럼 

그냥 name="recived" 이렇게 했는데....

디비에는 배열로 집어넣어야 해서

 

고수님이 알려준대로 

<input type="text" name="change_value" id="change_value" class="num" value="<?php echo $write['change_value'] ?>">

이걸 하나 만들어 숫자를 보내게 하였습니다. 예를들어 ,,,,예를들어 이 값이 3이면 

3번째 배열이란 것을 구분할 수 있게요,,,

이제 name="recived"에 값 '받음'이 넘어왔습니다.

 

디비에 있던

||여기에|||받음|

여기에 자리에 받음을 끼워넣어야 하는데 그걸 모르겠습니다.

name="change_value"값이 7이면 배열 7번째 자리에 '받음'을 낑겨넣어야 하는 상황입니다.ㅋ

힌트나 방법 좀 알려주시면 고맙겠습니다. 

 


업데이트 구문은
$wr_1 = $write['wr_1'].'\n'. $member['mb_name']."".date('Y-m-d H:i:s').'

$arr = implode('|', $_POST['total_price']);  
$recived = implode('|', $_POST['recived']);
for($k = 0; $k < count($arr) ; $k++) {
   if ($k > 0) $recived .= "|";
   $recived .= $_POST['recived'][$k].'|';
}
$sql = " UPDATE  `g5_write_".$bo_table."` SET  `wr_1` =  '".$wr_1."', `recived` =  '".$recived."',   WHERE  `wr_id` =".$wr_id." LIMIT 1 ;";
$row = sql_fetch($sql);
 
 
//ajax 변경
$(document).on('click', '#button_<?php echo $write[wr_id]; ?>', function(){
        var bo_table = $('#bo_table').val();
        var wr_id = $('#wr_id').val();
        var recived = $('#recived').val();
        var change_value = $('#change_value').val();

        console.log(recived);
        console.log(change_value);

        $.ajax({
            url: "<?php echo $board_skin_url?>/ajax.update.recived.php",
            type: "POST",
            data: {
                "bo_table": bo_table,
                "wr_id": wr_id,
                "recived": recived,
 
            },
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                sql = data.sql;
            }
        });

});

 

이 질문에 댓글 쓰기 :

답변 2

$recived  의 값을 쪼개서 원하는 값을 넣고 다시 합치는 작업을 합니다
$recived = "값1|값2|값3|값4|값5|값6|값7|값8|값9|값10|";

위의 것을 예시로 값7번이 들어간 곳에 

recived 로 받은 새로운 값77 을 넣는다고 가정하겠습니다

먼저 들어가기 전에 implode는 구분자를 기준으로 하나의 문자열 배열을 만드는 것이구

explode는 구분자를 기준으로 문자열을 쪼개는 역활을 합니다

그러기에 원하는 동작을 위해서는 $recived의 받아진 값을 쪼개서 원하는 부분을 대체 시켜야 합니다

물론 문자열에 관련된 php 내장함수를 활용하거나 혹은 문자열 치환등을 통한 작업을 통해서도 

가능하지만 explode 같은 경우 배열이나 배열과 같은 형태를 담은 문자열을 조작하기에 편합니다


$recived_exp = explode("|", $recived); // 파이프 라인을 기준으로 값을 쪼갠다
$recived_cnt = count($recived_exp);   // 쪼개진 갯수가 얼마인지 담는다 ( 11개가 담깁니다 )
$new_recived = ""; // 최종 담을 값
for( $i=0; $i < $recived_cnt; $i++){
      if( $i ==6 ){ // 바꾸고자 하는 곳 7번째 배열은 0부터 시작  6이 됩니다 $new_recived 안에 누적 시킵니다
         $new_recived  .= $_POST['recived']."|";  // 아작스로 넘겨 받은 값
      }
      else{
     $new_recived  .= $recived_exp[$i]."|";  // 기존값 $new_recived 안에 값과 파이프라인을 누적해서 담습니다
     }
}

위와 같이 작성하면 됩니다

하나 더 추가하자면 바꾸고자 하는 곳의 

if( $i ==6 ){ 에서 6이 항상 고정되어 있진 않을듯 싶습니다

그러니 아작스 부분에 

     

       data: {
                "bo_table": bo_table,
                "wr_id": wr_id,
                "chg_field_num" : "바뀌어야할 배열의 번호",
                "recived": recived,
 
       },

위와 같이 어느 곳을 어떠한 값으로 대체 시켜야 할지를 알수 있도록 같이 넘겨야 할거 같습니다

같이 넘긴 후에는


      if( $i ==6 ){ // 바꾸고자 하는 곳 7번째 배열은 0부터 시작  6이 됩니다 $new_recived 안에 누적 시킵니다
위의 부분을

      if( $i ==$_POST['chg_field_num'] ){ // 바꾸고자 하는 곳 7번째 배열은 0부터 시작  6이 됩니다 $new_recived 안에 누적 시킵니다

위와 같이 고치면 되겠죠

 

너무 감사합니다. 1년전에 ajax헤매고 있을 때 도와주셔서 많이 배웠는데...이건 굉장히 난이도가 높더군요, if( $i ==$_POST['chg_field_num'] ){  맞습니다. 이런걸 몰라서,,, 친절한 설명 감사드립니다. 성공해보겠습니다. 잘 안될까봐 걱정이 앞서는군요,,ㅎㅎ

감사합니다. 제가 적용하긴 너무 어려워서 ㅎㅎ
생각끝에
$ori = array('a','b','c','d','e');
$num = 2;
array_splice( $ori, $num, 1, '받음' ); //교체하기
print_r($ori );
echo "<br>";
이런 방식을 처리하겠습니다. 될거같긴한데 모르겠네요,

최종 저장 필드 값이 

$recived =||여기에 받음을 넣음|||

위에 것이 맞나요

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

회원로그인

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