글 작성시 본문 내 엘리먼트 수를 여분 필드로 전달/입력 방법을 문의드립니다.
본문
아래와 같이 게시판 본문에 입력한 li 개수를 파악해서 여분 필드(예.wr_1)로 가져와 사용하려고 합니다.
분문안에 li개수가 수정될때 마다 변경된 li 개수가 여분필드에 업데이트 되어야 할거 같은데 한참을 찾아보고 개수까지는 얻겠는데 여분필드로 전달이 쉽지가 않네요.;; 어떻게 접근해야 할지. 가르침을 부탁 드리겠습니다.
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<?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'];
?>
답변 8
$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);
특정 부모 태그를 explode 로 추출한 다음에 preg_match_all 정규식으로 수집한다음 집어넣는게 낫지 않을까요?
$write_table=$g5['write_prefix'].$bo_table;
$upsql = "UPDATE {$write_table} set wr_1 = '{$dom->getElementsByTagName('li')->length}' where wr_id = '{$wr_id}' ";
sql_query($upsql);
만약 제이쿼리 사용이 가능하다면
<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>
이런식으로 간단하게 표현 가능합니다.
만약 ul 이 다수라면 해당 ul 에 클래스를 부여하시고
lilength = $('.ul클래스').find('li').length;
이런식으로도 가능합니다.
!-->view 단에서 어떤 과정에 의하여 li 개수가 변경된다면
ajax 호출로 제어가 가능합니다.
헌데 질문글 자체가 view 단에서 li 가 변경될때 어떤 액티비티 요소가 있는지 설명이 안되어있군요...
앞뒤 내용을 모르니 엉뚱한 답을 드릴 수 있겠습니다.
==
아래와 같이 게시판 본문에 입력한 li 개수를 파악해서 여분 필드(예.wr_1)로 가져와 사용하려고 합니다.
분문안에 li개수가 수정될때 마다
==
변경 된다는 것이
게시물(글)을 수정한다는 뜻인지 -- A
아니면 view 페이지에서 마우스 클릭을 해서 변경된다는 것인 -- B
지에 따라 방법이 다릅니다.
A라면 write_update.tail.skin.php 등에서 li 갯수를 세면 될 것이고
B라면 마우스 클릭 같은 event에서 ajax로 DB update하시면 되겠네요.
제가 질문을 정확하게 드리지 못한거 같습니다.
게시물 작성되면서 게시물에 포함된 li의 개수를 가져와서
여분필드에 담기고 또 이미 작성된 게시물이 수정되어 개수가 변할 경우에도
반영이 되었으면 하는건데.다른 방법이 있을까요?
최초 제이쿼리로 제안해드린 방법이 위와 같을경우를 산정해서 말씀드린거에요.
어차피 최초 글작성이랑 이후 글 수정모두 write.php 를 거치게됩니다.
굳이 매번 view 페이지에 들어올때마다 쿼리를 날려 채크할 필요가 없습니다.
li 변화는 wirte 에서만 적용되니까요
여전히 write 에서 li 개수가 어떤식으로 계산되고 변화하는지 알려주시지 않으셨지만
해당 li 를 추가하거나 감소 시킬때 위 스크립트를 사용하면 되는겁니다.
굳이 저장 이후에 해도 되는걸
수정이나 글작성시 쓸데없는 쿼리를 날리는 의도를 정확하게 모르겠습니다.
어떤 요소에 의하여 li 개체수가 변화한다면
제가 제안해드린 스크립트를 onload 가 아닌 해당 스크립트 호출시 함께 넣어주셔도 되는거구요
요약.
li 개체수가 wirte 에서 정의/변경 된다면 view 단이 아닌 write 에서 계산하는게 더 이득이다.
substr_count() 이 함수를 이용해서
https://www.php.net/manual/en/function.substr-count.php
write_update.tail.skin.php 등에서
$li_count= substr_count( $wr_content, '<li>');
sql_query( "update {$write_table} set wr_1='$li_count' where wr_id='$wr_id' ");
이렇게 하면 되겠네요.
여전히 앞뒤 내용을 모르니 엉뚱한 답이 될 수 있습니다.