행 추가하고 나서 db에는 왜 하나만 저장이 될까요..

행 추가하고 나서 db에는 왜 하나만 저장이 될까요..

QA

행 추가하고 나서 db에는 왜 하나만 저장이 될까요..

본문

<script type="text/javascript">

    $(function() {

        $("#add-obj").click(function() {

            var obj = $("#tbl").find("input.ed");

            obj.last().clone().insertAfter(obj.last());

        });

        $("#remove-obj").click(function() {

            var obj = $("#tbl").find("input.ed");

            var len = obj.length;

            if(len == 1) {

                alert("더이상 삭제 안 됨");

            } else {

                $("#tbl").find("input.ed").last().remove();

            }

        });

    });

</script>

 

<table id='tbl' border="0" cellspacing="0" cellpadding="0" background="#ddd" width="100%"> 

        <tbody>

        <tr>

            <td class=write_head style="width:85px">학력<br>

                <span id="add-obj" style="cursor:pointer;"><img src="<?=$board_skin_path?>/img/btn_file_add.gif"></span> 

                <span id="remove-obj" style="cursor:pointer;"><img src="<?=$board_skin_path?>/img/btn_file_minus.gif"></span>

             </td>

 

            <td>

                <input class='ed' style="width:99%;" name="wr_1" itemname="학력" required value="<?=$write['wr_1']?>">

            </td>

            <tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>

        </tr>

        </tbody>

    </table>

 

 

왕계란님의 도움으로 제이쿼리를 이용해 버튼을 누르면 행이 추가되게끔 완성하였습니다.

 

제가 이해가 안되는 부분이

 

name값을 wr_1로 주면 잘 저장이 되고 나타나지만

 

행을 추가했을때에는 최근에 추가된 행에만 값이 저장이 되어 

 

list화면에 하나의 글만 나타나고 있습니다.

 

for으로 돌려보니 그냥 한번에 다 나와버리고..

 

행 추가하여 내용을 입력할때 보통 어떻게 name값을 주어서 저장을 시키나요?

 

저는 가장 최근의 글 하나만 저장되어 출력이 됩니다. 

 

그리고 수정을 누르면 역시 최신에 추가했던 행만 나타나있고 기존의 행은 삭제되어있습니다. ㅜㅜ

이 질문에 댓글 쓰기 :

답변 3

name="wr_1[]"

 

위와같이 배열로 하시고  

 

db 입력 부분도 배열로 받은 부분을

 

 

$wr_1 = implode('|', $_POST['wr_1']); 각 배열을 하나로 묶어주시고

 

출력부분에서

 

$wr_1 = explode('|', $_WRITE['wr_1']);

 

다시 나누어서 출력해주셔야 합니다.

 

단지 입력단을 늘렷다고 해서 그대로 다 들어가지는 않습니다.  

 

지금 하시고 싶은 작업은 하셔야 할 총 작업 중 25% 쯤 하신 것으로 보입니다. 화이팅!!! 

 

 

잉끼다님 말씀대로 wirte_update.skin.php 페이지에

$wr_1 = implode("|",$_POST['wr_1']);를 입력해주고

echo $wr_1; 해보니 입력한대로 array1|array2 가 잘나옵니다.

근데 리스트에서

<?php if($list[$i]['wr_1']){?><li><?=explode("|",$list[$i]['wr_1'])?></li><?php } ?>

이렇게 써주어봤는데 출력은 역시 하나만 나오는데요ㅜㅜ

뭘 잘못썻을깡..

리스트에서도


<?php 
$wr_1 = explode('|', $_WRITE['wr_1']);
for($i=0;$i<count($wr_1);$i++)
echo "<li>{$wr_1[$i]}</li>";
?> 

 

이렇게 주셔야죠.  

implode(). explode()

이런 함수를 알게 되면 검색해서 찾아보세요. 무슨 용도로 쓰이는지.. 

<?php if($list[$i]['wr_1']){
                        $wr_1 = explode("|", $list[$i]['wr_1']);
                            echo "· 학 력 <br />";
                        for($j=0; $j<count($wr_1); $j++) {
                            echo "&nbsp;&nbsp;&nbsp;- ".$wr_1[$j]."<br />";
                        }
                }
                ?>

이렇게 해서 완성하였습니다.

배열에 대한 개념이 부족하여 다 알려주신건데도 헤맸네요..감사합니다 ㅜㅜ

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

회원로그인

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