테스트 사이트 - 개발 중인 베타 버전입니다

글 작성시 본문 내 엘리먼트 수를 여분 필드로 전달/입력 방법을 문의드립니다. 채택완료

크리스휘 4년 전 조회 5,443

 

아래와 같이 게시판 본문에 입력한 li 개수를 파악해서 여분 필드(예.wr_1)로 가져와 사용하려고 합니다.

분문안에 li개수가 수정될때 마다 변경된 li 개수가 여분필드에 업데이트 되어야 할거 같은데 한참을 찾아보고 개수까지는 얻겠는데 여분필드로 전달이 쉽지가 않네요.;; 어떻게 접근해야 할지. 가르침을 부탁 드리겠습니다.

 

</p>

<p><ul>

    <li>1</li>

    <li>2</li>

    <li>3</li>

    <li>4</li>

    <li>5</li>

</ul></p>

<p> </p>

<p><?php

$html=$view['content'];

$dom = new DOMDocument;

$dom->loadHTML($html);

$result = $dom->getElementsByTagName('li')->length;// "prints" 5

$view['wr_1'] = $result;

echo $view['wr_1'];

?></p>

<p>

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

답변 8개

채택된 답변
+20 포인트
$html=$view['content'];
$dom = new DOMDocument;
$dom->loadHTML($html);
$result = $dom->getElementsByTagName('li')->length;// "prints" 5
$view['wr_1'] = $result;
echo $view['wr_1'];

뷰페이지라면 저부분 하단에 아래와 같이 하시면 될거 같습니다.

$sql = "update ".$write_table." set wr_1 = '".$view['wr_1']."' where wr_id = '".$wr_id."'";

sql_query($sql);

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

답변에 대한 댓글 2개

크리스휘
4년 전
비슷한 글들을 봤는데 역시 이 방향으로 가야 하나보네요.
주신 코드를 가지고 좀 더 연구해 보겠습니다.
답변 주셔서 감사합니다.
크리스휘
4년 전
한참을 해매다가 방법을 찾았습니다.
큰 도움이 되었습니다.
감사 드립니다.

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

substr_count() 이 함수를 이용해서 https://www.php.net/manual/en/function.substr-count.php" target="_blank">https://www.php.net/manual/en/function.substr-count.php write_update.tail.skin.php 등에서 $li_count= substr_count( $wr_content, '

  • '); sql_query( "update {$write_table} set wr_1='$li_count' where wr_id='$wr_id' "); 이렇게 하면 되겠네요. 여전히 앞뒤 내용을 모르니 엉뚱한 답이 될 수 있습니다.

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

    답변에 대한 댓글 1개

    크리스휘
    4년 전
    정확하게 집어주셨습니다.
    주신 코드로도 적용해 보겠습니다.
    답변 주셔서 감사합니다~

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

    제가 질문을 정확하게 드리지 못한거 같습니다. 게시물 작성되면서 게시물에 포함된 li의 개수를 가져와서 여분필드에 담기고 또 이미 작성된 게시물이 수정되어 개수가 변할 경우에도 반영이 되었으면 하는건데.다른 방법이 있을까요?

     

    최초 제이쿼리로 제안해드린 방법이 위와 같을경우를 산정해서 말씀드린거에요.

    어차피 최초 글작성이랑 이후 글 수정모두 write.php 를 거치게됩니다.

    굳이 매번 view 페이지에 들어올때마다 쿼리를 날려 채크할 필요가 없습니다.

    li 변화는 wirte 에서만 적용되니까요

     

    여전히 write 에서 li 개수가 어떤식으로 계산되고 변화하는지 알려주시지 않으셨지만

    해당 li 를 추가하거나 감소 시킬때 위 스크립트를 사용하면 되는겁니다.

     

    굳이 저장 이후에 해도 되는걸

    수정이나 글작성시 쓸데없는 쿼리를 날리는 의도를 정확하게 모르겠습니다.

     

    어떤 요소에 의하여 li 개체수가 변화한다면

    제가 제안해드린 스크립트를 onload 가 아닌 해당 스크립트 호출시 함께 넣어주셔도 되는거구요

     

    요약.

    li 개체수가 wirte 에서 정의/변경 된다면 view 단이 아닌 write 에서 계산하는게 더 이득이다.

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

    답변에 대한 댓글 1개

    크리스휘
    4년 전
    jquery로는 뭔가 어렵고 복잡해 보이고 php쪽으로 푸는게 나아 보여서 그랬던거 같습니다.
    올려주신 글들을 보고 또 배우게 됩니다. 제 무지함으로 마음 상하지 않으셨으면 합니다.
    관심 가져주셔서 감사합니다.

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

    앞뒤 내용을 모르니 엉뚱한 답을 드릴 수 있겠습니다.

    ==

    아래와 같이 게시판 본문에 입력한 li 개수를 파악해서 여분 필드(예.wr_1)로 가져와 사용하려고 합니다.

    분문안에 li개수가 수정될때 마다 

    ==

    변경 된다는 것이

    게시물(글)을 수정한다는 뜻인지 -- A

    아니면 view 페이지에서 마우스 클릭을 해서 변경된다는 것인 -- B

    지에 따라 방법이 다릅니다.

     

    A라면 write_update.tail.skin.php 등에서 li 갯수를 세면 될 것이고

    B라면 마우스 클릭 같은 event에서 ajax로 DB update하시면 되겠네요.

     

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

    답변에 대한 댓글 1개

    크리스휘
    4년 전
    제가 질문을 헷갈리게 작성한거 같네요 ;;
    말씀해 주신 A가 맞습니다.
    명확하게 구분해 주셔서 감사합니다.

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

    view 단에서 어떤 과정에 의하여 li 개수가 변경된다면

    ajax 호출로 제어가 가능합니다.

    헌데 질문글 자체가 view 단에서 li 가 변경될때 어떤 액티비티 요소가 있는지 설명이 안되어있군요...

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

    답변에 대한 댓글 1개

    크리스휘
    4년 전
    제가 질문을 정확하게 드리지 못한거 같습니다.
    게시물 작성되면서 게시물에 포함된 li의 개수를 가져와서
    여분필드에 담기고 또 이미 작성된 게시물이 수정되어 개수가 변할 경우에도
    반영이 되었으면 하는건데.다른 방법이 있을까요?

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

    만약 제이쿼리 사용이 가능하다면

    </p>
    
    <p><ul>
    
        <li>1</li>
    
        <li>2</li>
    
        <li>3</li>
    
        <li>4</li>
    
        <li>5</li>
    
    </ul>
    
    <script type="text/javascript">
    
        $(document).ready(function(){
    
            lilength = $('ul').find('li').length;
    
            alert(lilength);
    
        });
    
    </script></p>
    
    <p>

     

    이런식으로 간단하게 표현 가능합니다.

    만약 ul 이 다수라면 해당 ul 에 클래스를 부여하시고

    lilength = $('.ul클래스').find('li').length;

     

    이런식으로도 가능합니다.

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

    답변에 대한 댓글 1개

    크리스휘
    4년 전
    네 이방법으로 해보다가 php로 방향을 잡은게
    li 숫자를 가져오는것으로 끝나는게 아니라
    li 수를 여분 필드로 가져가서 저장하는게 중요해서요.
    답변 주셔서 감사 합니다.

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

    플래토
    4년 전

    </p>
    
    <p>$write_table=$g5['write_prefix'].$bo_table;</p>
    
    <p>$upsql = "UPDATE {$write_table} set wr_1 = '{$dom->getElementsByTagName('li')->length}' where wr_id = '{$wr_id}' ";</p>
    
    <p>sql_query($upsql);</p>
    
    <p>

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

    답변에 대한 댓글 2개

    크리스휘
    4년 전
    알려주신 부분을 어디에 적용해 보면 될까요?
    다른 분 질문에 답글 주신것처럼 write_update.skin.php 에 저장해야 할까요?
    요렇게 저렇게 적용해 보는데 여분필드에 들어가지 않아서;;;
    조금 더 길을 안내 부탁 드려도 될까요?
    답변 주셔서 감사합니다.
    크리스휘
    4년 전
    이 방법도 좋을거 같은데.
    제가 활용을 못하는거 같습니다.
    도움 주셔서 감사합니다.

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

    4년 전

    특정 부모 태그를 explode 로 추출한 다음에 preg_match_all 정규식으로 수집한다음 집어넣는게 낫지 않을까요?  

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

    답변에 대한 댓글 1개

    크리스휘
    4년 전
    답변 주셔서 감사합니다.

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

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

    로그인