wr_content 내용저장 방법 채택완료

고수님들,,,안녕하세요ㅠㅠ

새로운 것을 해결하면 계속 새로운 문제들이 발생하는 것 같아요

제가 wr_content의 값을 표로 입력받아서 저장하고 있는데 이제 이 표가 동적으로 작동을 해서 표 개수가 늘어가는데 그에 따라서 write_update.skin.php에서 어떻게 저장할 수 있는지 물어보고 싶어서 질문글 남겼습니다

write_update.skin.php

Copy
<?php

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

 

$wr_content = "$wr_content_name[0] $wr_content_name[1] $wr_content_name[2]";

 

$sql = " update $write_table

            set  wr_content = '$wr_content'

          where wr_id = '$wr_id' ";

sql_query($sql);

?>

현재는 이렇게 세개의 값만 배열로 받아 저장할 수 있는데 저는 이제 동적으로 늘어나는 내용의 값들도 저장을 하고 싶은데 도저히 방도가 생각이 나지 않아 질문드립니다ㅠ

write.skin.php

Copy
<label for="wr_content" style="display:none;">혼합사료</label>

            <div id ="feed_type_box" style=" overflow-y:scroll;" class="wr_content <?php echo $is_dhtml_editor ? $config['cf_editor'] : ''; ?>" placeholder="특이사항">

                <table style="width:100%;">

                    <thead>

                        <tr style="background-color:#eeefff; height:40px; margin-top:10px; padding:18px; border-radius:7px;">

                            <th>사료명</th>

                            <th>투입량입력</th>

                            <th>0.0</th>

                            <th>투입비율</th>

                            <th>선택제거</th>

                        </tr>

                    </thead>

                    <tbody>

                        

                    </tbody>

                </table>

            </div>

여기 테이블을 이렇게 만들었고

Copy
<script>

        function addFeedName(e){

            cnt ++;

            $("#feed_type_box tbody").append("<tr id='redbackground' class='removeButton"+cnt+"'>");

            $("#feed_type_box tbody").append("<td><span class='removeButton"+cnt+"'>"+feedIdRandom+"</span></td>");

            $("#feed_type_box tbody").append("<td><input type='text' name='wr_content_name[0]' class='removeButton"+cnt+"'></td>");

            $("#feed_type_box tbody").append("<td><input type='text' name='wr_content_name[1]' class='removeButton"+cnt+"'></td>");

            $("#feed_type_box tbody").append("<td><input type='text' name='wr_content_name[2]' class='removeButton"+cnt+"'></td>");

            $("#feed_type_box tbody").append("<td><input type='button' id='removeButton' onclick='removeContent(this);' class='removeButton"+cnt+"' value='제거'></td>");

            $("#feed_type_box tbody").append("</tr>");

        }

</script>

아래에 스크립트 코드에는 append함수를 사용해서 버튼이 눌리면 tr td를 추가하도록 만들었습니다!!

너무 바쁘시겠지만 한번만 ㅠㅠㅠ 도와주세요ㅜㅜ

==>wr_content의 테이블 내용을 동적 배열로 받아 저장할 수 있는 방법

답변 1개

채택된 답변
+20 포인트
Copy
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
 
$wr_content = "$wr_content_name[0] $wr_content_name[1] $wr_content_name[2]";

 

// 쿼이 처리
$sql = " update $write_table ";

 

// 동적배열 쿼리 처리

$wr_content_add = '';

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

   if( isset(wr_content_name[$i]) ){

      if($wr_content_add){

         $wr_content_add = '☞'; // 구분자 문자

      }

         $wr_content_add = wr_content_name[$i];

   }

}

$wr_content .= $wr_content_add;

 

$sql .= " set  wr_content = '$wr_content' ";

$sql .= " where wr_id = '$wr_id' ";
sql_query($sql);
?>

간단하게 짜봤는데, 일반적으로 저장만 하면 구분지어두신 내용을 다시 불러오실 때 구분지어 출력되지 않습니다.

하여 구분자를 임의로 정해서 구분자로 나누어주었습니다.

다만 위 방법으로도 항목별 구분은 되지 않고 섹션별 구분만 가능합니다.

이를 해결하기에 가장 좋은 방법은 컬럼을 짜는 것, 직렬화를 사용하는 것 2가지가 있습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

개수가 지금 두개인게 아니라 추가 버튼을 누를때마다 3개씩 입력칸이 증가하는 거여서요!!!
[code]
for($i=0; $i < 2; $i++){
if( isset(wr_content_name[$i]) ){
if($wr_content_add){
$wr_content_add = '☞'; // 구분자 문자
}
$wr_content_add = wr_content_name[$i];
}
}
[/code]
이 방식으로 진행하려면 $i<2 이 부분을 추가된 갯수만큼 가져와야될텐데 추가된 행의 개수를 write_update.skin.php로 가져올 수 있는 방법은 없을까요?
3개씩 입력칸이 증가되는거라면, hidden input으로 몇번 눌렀는지도 보내시면 됩니다.

그게 아니면, wr_content_name을 그냥 []으로 놓으시고 wr_content_name의 length만큼 만복시켜도 되고요.
아 감사합니다!!! 알려주신대로 지금 for로 반복문을 돌리고 전 length 안 쓰고 count를 사용했어요!!

write_update.skin.php(정상작동코드)
[code]
for($i=0; $i < count($wr_content_name); $i++){
if( isset($wr_content_name[$i]) ){
$wr_content .= $wr_content_name[$i] ;

}
}
[/code]

write_update.skin.php(구분문자 넣은 코드)
[code]
$spacing_word = ' ';

for($i=0; $i < count($wr_content_name); $i++){
if( isset($wr_content_name[$i]) ){
$wr_content .= $wr_content_name[$i] ;
$wr_content .= $spacing_word ;
}
}
[/code]

지금 하고 있는데 DB에 저장될 때 wr_content마지막에 저장되는 배열은 뒤 부분이 끊어져서 저장이 되더라구요,,,흑 어떻게 하면 좋을까요??ㅠㅠㅠㅠ
지금 하고 있는데 DB에 저장될 때 wr_content마지막에 저장되는 배열은 뒤 부분이 끊어져서 저장이 되더라구요,,,흑 어떻게 하면 좋을까요??ㅠㅠㅠㅠ

더 상세히... 설명 부탁드려요 무슨 말씀인지 이해가 안갑니다.
예로 데이터도 어떻게 입력했고 어떻게 출력되는지 부탁드립니다.

그렇게 질문하시면 경우의 수가 너무 많아요 ㅠ
답변 달아주셔서 정말 감사합니다!! 제가 오늘 다시 질문글 수정하려고 다시 작동시켜보니 잘 저장이됩니다!! 정말 감사합니다~~

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

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

로그인
🐛 버그신고