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

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

QA

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

답변 8

본문

 

아래와 같이 게시판 본문에 입력한 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);

알려주신 부분을 어디에 적용해 보면 될까요?
다른 분 질문에 답글 주신것처럼 write_update.skin.php 에 저장해야 할까요?
요렇게 저렇게 적용해 보는데 여분필드에 들어가지 않아서;;;
조금 더 길을 안내 부탁 드려도 될까요?
답변 주셔서 감사합니다.

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


<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의 개수를 가져와서
여분필드에 담기고 또 이미 작성된 게시물이 수정되어 개수가 변할 경우에도
반영이 되었으면 하는건데.다른 방법이 있을까요?

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

==

아래와 같이 게시판 본문에 입력한 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 에서 계산하는게 더 이득이다.

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

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' ");
이렇게 하면 되겠네요.

여전히 앞뒤 내용을 모르니 엉뚱한 답이 될 수 있습니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 2,662
© SIRSOFT
현재 페이지 제일 처음으로