jineecode

nl2br로 줄바꿈을 한 textarea의 수정? 본문

php

nl2br로 줄바꿈을 한 textarea의 수정?

지니코딩 2021. 3. 29. 17:11

textarea에 있는 text를 데이터에 저장할 때 nl2br을 써서 저장하는데,

이 게시글을 수정하려고 하였을 때 <br />이 딸려오는 문제.

 

대략 이런 느낌이다.

 


qna_insert.php 코드

'$qna_desc' 가 'textarea' 자리이다.

<meta charset="UTF-8" />
<?php
  $qna_id = $_GET['id'];
  $qna_title = nl2br($_REQUEST['qna_title']);
  $qna_title = addslashes($qna_title);
  $qna_desc = nl2br($_REQUEST['qna_desc']);
  $qna_desc = addslashes($qna_desc);
  $regist_day = date("Y-m-d");
  $qna_hit = 0;

    //database connect
    include $_SERVER['DOCUMENT_ROOT'].'/openconcert/process/connect/db_connect.php';
    $sql="insert into opc_qna(
    OPC_QNA_name,
    OPC_qna_tit,
    OPC_QNA_desc, 
    OPC_qna_reg,
    OPC_qna_hit) values(
      '$qna_id',
      '$qna_title',
      '$qna_desc',
      '$regist_day',
      '$qna_hit')";

  mysqli_query($dbConn, $sql);


  echo "
    <script>
      alert('등록되었습니다.');
      location.href='/openconcert/page/qna/qna.php';
    </script>
    ";
?>

 

 

웹사이트 textarea 등록

 

 

MariaDB 

(불길함의 시작)

 

 

게시글 업로드 확인

게시글 자체는 잘 나오는 것 같지만...

 

 

수정버튼을 눌렀을 시

 

 

^^.... <br />을 다 지워줘야하는 참사...


 

힌트는 아래에서 얻을 수 있었다.

 

 

www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=234453&page=2576

 

WWW.PHPSCHOOL.COM

개발자 커뮤니티 1위 PHPSCHOOL.COM 입니다.

www.phpschool.com

저장시에는 그냥 저장하시고...
출력시에만 nl2br() 처리하세요.
저장사실때 nl2br() 처리하여 저장하니까 발생하는 문제점입니다.

 

즉, 저장할 때는 nl2br 을 쓰지 말고, 출력시에 nl2br을 쓰는 것!!

 

코드를 아래처럼 바꿔준다.

 

 

qna_insert.php

<meta charset="UTF-8" />
<?php
  $qna_id = $_GET['id'];
  $qna_title = $_REQUEST['qna_title'];
  $qna_title = addslashes($qna_title);
  $qna_desc = $_REQUEST['qna_desc'];
  $qna_desc = addslashes($qna_desc);
  $regist_day = date("Y-m-d");
  $qna_hit = 0;

    //database connect
    include $_SERVER['DOCUMENT_ROOT'].'/openconcert/process/connect/db_connect.php';
    $sql="insert into opc_qna(
    OPC_QNA_name,
    OPC_qna_tit,
    OPC_QNA_desc, 
    OPC_qna_reg,
    OPC_qna_hit) values(
      '$qna_id',
      '$qna_title',
      '$qna_desc',
      '$regist_day',
      '$qna_hit')";

  mysqli_query($dbConn, $sql);


  echo "
    <script>
      alert('등록되었습니다.');
      location.href='/openconcert/page/qna/qna.php';
    </script>
    ";
?>

등록 시 nl2br을 싹 빼주고 그냥 DB에 저장한다.

 

 

웹사이트 textarea 등록

 

 

MariaDB

mariadb에 <br />이 없어진 것을 확인할 수 있다.

 

 

 

게시글 업로드 확인

 

 

아니 엔터가 적용이 안 됐는데요? 

당연하다. <br/>이 없는 db를 그대로 가져와서 붙혔으니까.

 

이제 '출력'할 때 nl2br을 적용해주면 된다!!

 

 

 

qna_view.php

(front 부분이다)

      <?php
        $qna_detail_num=$_GET['num'];
        include $_SERVER['DOCUMENT_ROOT'].'/openconcert/process/connect/db_connect.php';
        $sql="select * from opc_qna where OPC_QNA_num=$qna_detail_num";
        $result=mysqli_query($dbConn, $sql);
        $row=mysqli_fetch_array($result);
        $qna_detail_tit=$row['OPC_QNA_tit'];
        $qna_detail_name=$row['OPC_QNA_name'];
        $qna_detail_des=$row['OPC_QNA_desc'];
        $qna_detail_new_des=nl2br($qna_detail_des);
        $qna_detail_hit=$row['OPC_QNA_hit'];
        $qna_detail_reg=$row['OPC_QNA_reg'];
      ?>
      <section class="view__section">
        <div class="sub-title">
          <h2><a href="/openconcert/page/qna/qna.php">Q&A</a></h2>
        </div>
        <div class="view__container center">
          <div class="view-title">
            <h4><?=$qna_detail_tit?></h4>
          </div>
          <div class="view-reg">
            <p>등록일: <?=$qna_detail_reg?></p><p>조회수: <?=$qna_detail_hit?></p>
          </div>
          <div class="view-des">
            <p><?=$qna_detail_new_des?></p>
          </div>
       $qna_detail_des=$row['OPC_QNA_desc'];
       $qna_detail_new_des=nl2br($qna_detail_des);

 

qna_detail_des를 한 번 정제(줄바꿈)해서 보여주면 되는 것이다

 

해결 ^^

 

 

 

이렇게 스스로 해결할 때마다 셀프 쓰다듬해줘야 함 😁

'php' 카테고리의 다른 글

php로 게시판 구체적으로 구현하기 (2)  (0) 2021.04.05
php로 게시판 구체적으로 구현하기 (1)  (0) 2021.04.05
검색 폼 유형  (0) 2021.03.31
다음 글, 이전 글 php로 구현하기  (0) 2021.03.30
Comments