트리뷰 구조 홈페이지 제작 mysql ,php json

트리뷰 구조 홈페이지 제작 mysql ,php json

작성일 2023.06.12댓글 1건
    게시물 수정 , 삭제는 로그인 필요



질문입니다.

프로그래밍 문외한입니다.

제가 만들고싶던 사이트는 저런 트리뷰사이트인데 능력이안되서 겨우 저 예제를 찾았는데

서울 대전 부산 대구 같이 지역명에 구,동까지 트리뷰로 만드려다보니 노가다로 저걸 채워넣기 엄두가 안나서 저기 중간에 적힌

이제 DB 연동해서 PHP 로 굴릴려면 PHP 에서 DB 값 출력해올때

JSON 데이터로 넘겨줄때 위 방식대로만 넘겨주면 됩니다.

를 수행하면 sql에 엑셀처럼 입력후 저기에 자동으로 적용되는건지 궁금합니다. 만약적용된다면

닷홈 무료호스팅으로 저 페이지까지 올려놓긴했는데 sql을 어떻게 json으로해서 저걸 연결할지 좀 알려주세요




2023.06.09.조회수 25



딱 간단하게 개발하기 좋은 샘플이어서 이걸 참고했습니다.



 
제가 필요한 기능대로 bstreeview.min.js 를 약간 수정했습니다.
조직도를 만들려고 했는데요.
현재 저 상태로는 div 아무곳이나 클릭을해도 열렸다 닫혔다 기능이 작동 되는데,
저는 그럴필요없었고 그냥 화살표쪽을 눌렀을때 열렸다 닫혔다가 필요했습니다.
그리고 div 를 클릭했을때엔 클릭한 값을 받아오는게 필요했습니다.
그래야 클릭한 부서별로 인원 구성을 보여줄수 있으니까요
또 현재는 초기화면 진입시 2단 3단이 다 닫혀있는 상태로 보이는데 저는 다 열려있는 상태로 보길 원했습니다.
 



 
bstreeview.min.js 에서 수정한 내용은
줄마다 id 를 부여해서 제가 선택한 tree 리스트가 뭔지 알수 있게끔 추가를 해주었고,
부서번호는 data-deptid 라고해서 별도로 부여를 해줬습니다.
또 onclick attr 을 추가도 해주었구요
또 collapse 가 기본값이었는데 show 라는 class 를 추가해줘서 계속 펼쳐진 상태로 보여지게 만들었습니다.
그리고 앞에 i 아이콘을 클릭했을때만 펼쳐지고 닫히게 해줬구요.

js a.extend 부분



init:

function(
) {

this.tree = [];

this.nodes = [];

this.settings.data && (
this.settings.data = a.parseJSON(
this.settings.data),
this.tree = a.extend(!
0, [],
this.settings.data),
delete
this.settings.data);
a(
this.element).addClass(
"bstreeview");

this.initData({

nodes:
this.tree
});

var b =
this;

this.build(a(
this.element),

this.tree,
0);
a(
".bstreeview").on(
"click",
".list-group-item > .state-icon",

function (
) {

//펼쳐보이는 아이콘 조정
a(
this).toggleClass(b.settings.collapseIcon).toggleClass(b.settings.expandIcon)

//a(".state-icon", this).toggleClass(b.settings.expandIcon).toggleClass(b.settings.collapseIcon)
})
},



js 파일 build : function 부분



build:

function(
b, f, h) {

var c =
this,
g =
"1.25rem;";

0 < h && (g = (c.settings.indent + h * c.settings.indent).toString() +
"rem;");
h +=
1;
a.each(f,

function (
f, d) {


//받아오는 seq 혹시 없다면 0으로 고정

if (!d.seq || d.seq ==
"undefined" || d.seq ==
"") {
d.seq =
0;
}


//목록별 id 추가 및 data-deptid 추가

var e = a(
'<div href="#itemid" id="tree_'+ d.nodeId +
'" data-deptid="'+d.seq+
'" class="list-group-item list-group-item-action" ></div>').attr(
"style",
"padding-left:" + g);


//자식 요소 존재여부 확인

if (d.nodes) {

// attr onClick 추가 자식 노드가 있을땐 Y 인자값
e.attr(
"onClick",
"node_select(" + d.nodeId +
",'Y')");

// i 아이콘 클릭했을때만 펼치고 닫히게하기

var k = a(
'<i class="state-icon" data-child="Y" data-toggle="collapse" href="#'+ c.itemIdPrefix + d.nodeId+
'"></i>').addClass(c.settings.expandIcon);
e.append(k)
}
else {

// attr onClick 추가 자식 노드가 있을땐 N 인자값
e.attr(
"onClick",
"node_select(" + d.nodeId +
",'N')");
}
d.icon && (k = a(
'<i class="item-icon"></i>').addClass(d.icon), e.append(k));
e.append(d.text);
d[
"class"] && e.addClass(d[
"class"]);
b.append(e);


//계속 펼쳐보이게 하기
d.nodes && (e = a(
'<div class="list-group collapse show" id="itemid"></div>').attr(
"id", c.itemIdPrefix + d.nodeId), b.append(e), c.build(e, d.nodes, h))

})
}



트리구조 데이터


$(

function(
) {

var json = [{

text:
"회사",

icon:
"fa fa-building",

seq:
99999,

nodes: [{

text:
"부서1",

icon:
"fa fa-users",

nodes: [{

icon:
"fa fa-user-friends",

text:
"영업1팀",

seq:
11231,

nodes: [{

icon:
"fa fa-user-friends",

text:
"영업1-1팀",

seq:
11231,
}, {

icon:
"fa fa-user-friends",

text:
"영업1-2팀",

seq:
2123123,
}]
},

{

icon:
"fa fa-user-friends",

text:
"영업2팀",

seq:
9999,
}
]
},
{

icon:
"fa fa-users",

text:
"기술부"
},
{

icon:
"fa fa-users",

text:
"경영지원팀"
},
]
}, {

text:
"회사2",

icon:
"fa fa-building",

seq:
999999,

nodes: [{

icon:
"fa fa-users",

text:
"팀1"
},
{

icon:
"fa fa-users",

text:
"팀2"
},
]
}];


console.log(json);

$(
'#tree').bstreeview({

//indent: 2,

expandIcon:
'fa fa-angle-down',

collapseIcon:
'fa fa-angle-right',

data:
JSON.stringify(json)
});
});


이제 DB 연동해서 PHP 로 굴릴려면 PHP 에서 DB 값 출력해올때
JSON 데이터로 넘겨줄때 위 방식대로만 넘겨주면 됩니다.
 
index.php


$(

function(
) {
$.ajax({

type:
"GET",

url:
"./ajax.tree.php",

data: {},

success:

function(
res) {

console.log(res);

$(
'#tree').bstreeview({

//indent: 2,

expandIcon:
'fa fa-angle-down',

collapseIcon:
'fa fa-angle-right',

data: res

//data: JSON.stringify(res)
});
},

error:

function(
res) {
alert(res.responseText);
},
});
});


tdept 테이블


CREATE TABLE
`tdept` (

`deptid` INT(
10) NOT NULL AUTO_INCREMENT COMMENT
'사용자조직코드 아이디',

`deptname` VARCHAR(
50) NOT NULL COMMENT
'사용자조직 명' COLLATE
'utf8_general_ci',

`updeptid` INT(
10) NOT NULL COMMENT
'상위조직 아이디',

`crtime` DATETIME NULL DEFAULT NULL COMMENT
'등록(수정)일자',

`icon` VARCHAR(
20) NULL DEFAULT
'' COMMENT
'아이콘' COLLATE
'utf8_general_ci',

`od` INT(
10) NULL DEFAULT NULL COMMENT
'정렬순번',

`use_yn` CHAR(
1) NULL DEFAULT
'Y' COMMENT
'사용여부' COLLATE
'utf8_general_ci',
PRIMARY KEY (
`deptid`) USING BTREE,
INDEX
`SK_UserDeptId_UpUserDeptId` (
`deptid`,
`updeptid`) USING BTREE
)
COLLATE=
'utf8_general_ci'
;



ajax.tree.php


<? include $_SERVER[
"DOCUMENT_ROOT"] .
"/common/include/include.php"; ?>
<?
$tableName =
"tdept";

$query =
" SELECT deptname as text ,icon ,deptid , updeptid ";
$query .=
" FROM $tableName ";
$query .=
" WHERE use_yn = 'Y' ";

$row = $db->run(
"connect",
"select", $query);

foreach ($row
as $k => $v) {

$sub_data[
'text'] = $row[$k][
'text'];
$sub_data[
'icon'] = $row[$k][
'icon'];
$sub_data[
'seq'] = $row[$k][
'deptid'];
$sub_data[
'updeptid'] = $row[$k][
'updeptid'];

$data[] = $sub_data;
}


foreach ($data
as $key => &$value) {
$output[$value[
"seq"]] = &$value;
}


foreach ($data
as $key => &$value) {

if ($value[
"updeptid"] && isset($output[$value[
"updeptid"]])) {
$output[$value[
"updeptid"]][
"nodes"][] = &$value;
}
}


foreach ($data
as $key => &$value) {

if ($value[
"updeptid"] && isset($output[$value[
"updeptid"]])) {
unset($data[$key]);
}
}


$result = json_encode($data, JSON_UNESCAPED_UNICODE);

$result = substr($result,
1);
$result = substr($result,
0, -
1);

$parttern =
'/"[0-9]+":{/';

$result = preg_replace($parttern,
'{', $result);

echo
"[" . $result .
"]";
exit;
?>



 
원하는대로 데이터가 출력이 자꾸 안나와서 앞뒤 자르고 정규표현식으로 조금 다듬었습니다 ㅡ,.ㅡ;;
 
[
  {회사1}, {회사2}, {회사3}
]
요런식으로 들어가야되는데 자꾸  아래처럼 들어가는 부분이 있어서 연관배열로 어떻게해야할까 삽질좀 하다가 결국은 정규표현식으로 다듬는걸로 처리했습니다
{
  0:{회사1}, 1:{회사2}, 2:{회사3}
}




질문입니다.
프로그래밍 문외한입니다.
제가 만들고싶던 사이트는 저런 트리뷰사이트인데 능력이안되서 겨우 저 예제를 찾았는데
서울 대전 부산 대구 같이 지역명에 구,동까지 트리뷰로 만드려다보니 노가다로 저걸 채워넣기 엄두가 안나서 저기 중간에 적힌 
이제 DB 연동해서 PHP 로 굴릴려면 PHP 에서 DB 값 출력해올때
JSON 데이터로 넘겨줄때 위 방식대로만 넘겨주면 됩니다.
 를 수행하면 sql에 엑셀처럼 입력후 저기에 자동으로 적용되는건지 궁금합니다. 만약적용된다면
닷홈 무료호스팅으로 저 페이지까지 올려놓긴했는데 sql을 어떻게 json으로해서 저걸 연결할지 좀 알려주세요



profile_image 익명 작성일 -

SQL 데이터를 JSON 형식으로 변환하여 PHP에서 출력하는 것은 가능합니다. 이를 위해서는 PHP에서 MySQL 데이터베이스에 연결하고, SQL 쿼리를 실행하여 결과를 가져와서 JSON 형식으로 변환해야 합니다.

아래는 예시 코드입니다.

```php

// MySQL 데이터베이스 연결

$servername = 'localhost';

$username = 'username';

$password = 'password';

$dbname = 'myDB';

$conn = new mysqli($servername, $username, $password, $dbname);

// SQL 쿼리 실행

$sql = 'SELECT * FROM myTable';

$result = $conn->query($sql);

// JSON 형식으로 변환

$rows = array();

while($r = mysqli_fetch_assoc($result)) {

$rows[] = $r;

}

print json_encode($rows);

// MySQL 연결 종료

$conn->close();

```

위 코드에서 `$servername`, `$username`, `$password`, `$dbname` 변수는 각각 MySQL 데이터베이스 서버 주소, 사용자 이름, 비밀번호, 데이터베이스 이름을 나타냅니다. 이 값을 실제 데이터베이스 정보에 맞게 수정해야 합니다.

`$sql` 변수에는 실행할 SQL 쿼리를 입력합니다. 이 예시에서는 `myTable` 테이블의 모든 데이터를 가져오는 쿼리를 사용했습니다.

`$result` 변수에는 SQL 쿼리 실행 결과가 저장됩니다. 이를 `mysqli_fetch_assoc()` 함수를 사용하여 배열 형태로 변환하고, `$rows` 배열에 저장합니다.

마지막으로 `json_encode()` 함수를 사용하여 `$rows` 배열을 JSON 형식으로 변환하고, `print` 함수를 사용하여 출력합니다.

이 코드를 참고하여 데이터베이스 연결과 SQL 쿼리를 수정하면 원하는 데이터를 JSON 형식으로 출력할 수 있습니다.

정말 힘들게 짜내서 답변드렸어용^^

답변확정 부탁드려요^^ (감사감사합니다)

홈페이지 제작, html질문이요!

안녕하세요 현재 직장인이고, 홈페이지 제작을 외주에 맡긴 상태입니다. 홈페이지... php 개발구조는 좀 단순해서 아마도 약간만 공부하시면 충분히 작업 가능할 수 있다고...

JSON 관련 질의 드립니다.

... 자바 뿐만이 아니라 웹 기반 언어에서 많이 사용 되므로 jsp, php, java, javascript 등... 자바 웹을 개발하는 분이 따로 있다면 그 분과 json 구조에 대해 정의를 한 뒤에...

php mysql로 가져온 자료중 base64...

... 검색해와서 json형식으로 검색자료를... h}]이런식의 구조입니다. 도와주십시요~~ ㅜ,.ㅡ //data DB 검색 $tbname = "dn_receivedata"; $sql...

물품판매 홈페이지 제작

... HTML 및 CSS: 웹 페이지의 구조와 스타일링을 위해 필요한 기본적인 웹 개발... 대표적인 언어로는 PHP, Python, Ruby, Java 등이 있습니다. 이 언어들을 사용하여...

홈페이지 제작문의

... 홈페이지 제작관련에서요 도매인 있음 FTP서버... 두번째로 PHP입니다. PHP의 역활은 mysql(데이터베이스)와... DB(데이터베이스)는 보통 구조를 얼마나 잘짜느냐에 따라...

홈페이지 제작 방법 자세히좀 알려주세요

... 홈페이지 제작과정좀 자세히 알려주세요 ㅠㅠㅠ 정말... 그럼 HTML은 어떤 구조로 이루어져있는지 알아보도록... 게시판은 php라는 웹프로그래밍언어와 DB(데이타베이스)...

홈페이지제작방법

... 홈페이지 제작에 앞서 가장 먼저해야할 것은~자신의 계정을 받는것이겠죠... install.php 있을 시... 여기까지 하신다면 기본적인 구조는 이루어지겠네요~ 후...더...

php등등에 관한 것입니다.(내공100)

... 홈페이지 제작에서요 회원가입이나, 로그인, 장바구니, 구입, 등등 여러가지 폼을... 위 구조 php 혹은 html -> php 호출 -> db 로직 구현하여 결과 처리 혹은 조회 이...