채택완료

게시판 글쓰기 행추가 기능 질문

2023-06-02 (금) 11:37:59 2,060

어떤 분이 올리신 글을 참고해서

글쓰기 부분에 추가 버튼을 누르면 행이 추가되는 기능을 넣었습니다.

write.skin.php

Copy
<?php 
            if ($w == "u") {
            $wr_6x = explode("|",substr($write['wr_6'],1));
            }
?>

<table id="table1" cellspacing="0" cellpadding="0">
            <tr class="sound_only">
                <th>구분</th>
            </tr>
            <?php 
                $wr6_cnt = count($wr_6x);
                    if(!$wr6_cnt){
                    $wr6_cnt = 1;
                    }
                for ($i = 0;  $i < $wr6_cnt; $i++) {
            ?>
            <tr>
                <td>
                    <textarea name="wr_6x[]"><?php echo $wr_6x[$i];?></textarea>
                    <input type="button" value="삭제" class="tabledel_btn" onclick="ob_adRows.delRow(this)"/>
                    <input type="button" value="추가" class="tableadd_btn" onclick="ob_adRows.addRow(this)"/>
                </td>
            </tr>
            <?php } ?>
<table id="dyntbl1" cellspacing="0" cellpadding="0"></table>
<script>
            function adRowsTable(id){
                var table = document.getElementById(id);
                var me = this;
                    if(document.getElementById(id)){
                        var row1 = table.rows[1].outerHTML;
                        function setIds(){
                        var tbl_id = document.querySelectorAll('#'+ id +' .tbl_id');
                        for(var i=0; i<tbl_id.length; i++) tbl_id[i].innerHTML = i+1;
                    }
                    me.addRow = function(btn){
                    btn ? btn.parentNode.parentNode.insertAdjacentHTML('afterend', row1): table.insertAdjacentHTML('beforeend',row1);
                    setIds();
                    }
                    me.delRow = function(btn){
                    btn.parentNode.parentNode.outerHTML ='';
                    setIds();
                    }
                    }
                }
            var ob_adRows = new adRowsTable('table1');
</script>


write_update.skin.php

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

for ($i = 0;  $i < count($wr_6x); $i++)
{
    $wr_6 = $wr_6."|".$wr_6x[$i];
}
$sql678 = "update $write_table set
    wr_6  = '$wr_6'                     
    where wr_id = '$wr_id' ";
sql_query($sql678);
?>

입니다.
보기 페이지에
<?php echo get_view_thumbnail($view['wr_6']); ?>
로 불러오고 있는데

|행추가내용|행추가내용|행추가내용|행추가내용
위와 같이 불러와 집니다.

추가한 행에 입력한 내용이 위아래로 줄바꿈되게 보이게 하고 싶은데
어느 부분을 수정해야 할까요..

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

write_update.skin.php
부분에서 
for ($i = 0;  $i < count($wr_6x); $i++)
{
    $wr_6 = $wr_6."|".$wr_6x[$i];
}

이 부분을 

if(is_array($wr_6x)) $wr_6=implode("|", $wr_6x);

이렇게 바꾸시고 

출력할때 

echo str_replace("|", "<br />", $view['wr_6']);

이렇게 하시면 될듯 하네요. 

답변에 대한 댓글 1개

너무 잘됩니다.
근데..수정을 누르면 첫 행에 작성한 글 앞글자가 �� 이걸로 바뀌어요. ㅠ
이것만 해결하면 될거 같은데..

혹시 이런걸 원하시는 건지요?

<table id="table1" cellspacing="0" cellpadding="0">
    <tr class="sound_only">
        <th>구분</th>
    </tr>
    <?php 
    $wr6_cnt = count($wr_6x);
    if(!$wr6_cnt){
        $wr6_cnt = 1;
    }
    for ($i = 0; $i < $wr6_cnt; $i++) {
        ?>
        <tr>
            <td>
                <?php
                // 개행된 텍스트를 배열로 분할하여 출력
                $wr_6_text = explode("\n", $wr_6x[$i]);
                foreach ($wr_6_text as $line) {
                    echo $line . "<br>";
                }
                ?>
                <input type="button" value="삭제" class="tabledel_btn" onclick="ob_adRows.delRow(this)"/>
                <input type="button" value="추가" class="tableadd_btn" onclick="ob_adRows.addRow(this)"/>
            </td>
        </tr>
        <?php
    }
    ?>
</table>
 

답변에 대한 댓글 1개

잘안되네요;; 본문 작업대로 했을때 출력되는 부분에...추가된 행 내용들이 줄빠꿈 방식으로 보이게 하고 싶어서요..

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