PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2019/05/22 17:27:28
Name Albert Camus
Subject [질문] PHP, mySQL 관련 질문드립니다. (수정됨)
Tree 구조를 가진 데이터베이스를 만들고,

이를 웹에서 조회할 수 있도록 PHP, mySQL 을 이용해서 구현하려고 합니다.

두 언어 모두 초보적인 수준이라 찾아찾아 가면서 조금씩 해나가고 있는데 항목하나가 아무리 검색해도 찾기가 어려워서 질문드려봅니다.

현재 하고싶은건 상위 카테고리의 항목을 클릭하면, 거기에 속하는 하위 카테고리 목록이 나오고, 그 목록에서 또 한 항목을 클릭하면 다시 그 하위 항목이 조회되도록 하고 싶습니다.

ex) 전자제품 클릭 > 그 하위에 속하는 냉장고 휴대폰 청소기가 출력 (동시에 해당 글자들에는 다시 그 하위로 가는 링크가 걸려있음)> 냉장고 클릭 > 냉장고 하위 항목인 4문 / 3문 출력 > 최하위 항목까지 반복.

여기서 잘 안되는 부분이, DB를 조회한 결과에 하이퍼링크를 거는 부분이네요.

출력까지는 문제가 없는데, 출력 결과에 다시 링크를 걸려면 어떤 기능을 써야하는지 모르겠습니다.

PHP변수인 $row와 echo 함수,  HTML의 a herf tag 로 해보려했는데 잘 안되네요.

혹시 어떤 키워드로 검색하면 될지 알려주시면 감사하겠습니다.

하려는게 대략 다음 같은 거긴 합니다.

while($row = mysqli_fetch_array($result))
echo “ tr”;
echo “td”  a href = "??.php" [  $row[‘필드1’]   ]  /a /td

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
달고나
19/05/22 17:42
수정 아이콘
(수정됨) echo "<td><a href=".$링크값.">".$row['필드1']."</a></td>";
이게 아니라면 다른 고수분께서...
Albert Camus
19/05/22 17:47
수정 아이콘
이렇게 되는거였나요? row 쪽에 (html 출력부) 대괄호를 할 필요가 없는거였군요?
달고나
19/05/22 17:47
수정 아이콘
저방식보다
<? while($row = mysqli_fetch_array($result)){ ?>
<tr>
<td><a href="<?=$링크값?>"><?=$row['필드1']?></a></td>
</tr>
<? } ?>
이런식으로 더 많이 쓰입니다.
Albert Camus
19/05/22 20:10
수정 아이콘
내일 해볼게요. 감사합니다.
Albert Camus
19/05/23 14:04
수정 아이콘
(수정됨) 쉬운거부터 해보는 중인데, 이렇게 하니 Undefined variable: row 에러가 뜨네요.

link 대상엔 변수 대신 그냥 naver.com 넣었고 나머지는 구문 그대로거든요.

<? while($row = mysqli_fetch_array($result)){ ?>
<a href ="http://naver.com"><?=$row['name']?></a>

<? } ?>
이렇게요.

왜 define이 안되었다고 뜰까요? 흐음


(추가) 일단 php설정 때문인지 <? 코드는 안되서 <?php로 교체하였는데 아직 안되네요.

<?php while($row = mysqli_fetch_array($result)){ ?>
<a href ="http://naver.com"><?php =$row['name']?></a>

<?php } ?>

이상태입니다.


(추가2)
=$row 앞에 한칸을 띄우니 Undefined error가 뜨고, 혹시나해서 여백을 지우고 붙였더니 Error는 없는데 해당부분에 출력이 없습니다.


(추가3)
<?php while($row = mysqli_fetch_array($result)){ ?>
<a href ="http://naver.com"><?=$row['name']?></a>

<?php } ?>

위 코드로 해결했습니다.
row앞에 붙은 ?는 대체 왜 ?php로 쓰면 안되고 ? 만 써야할까요? 그러면서 다른 곳에서는 반드시 ?php로 써야하고... 이유를 아실까요?
네파리안
19/05/22 17:48
수정 아이콘
(수정됨) 저는 주로 스프링만 해서 php는 잘 모르는데 저라면 javascript나 jquery로 처리할것 같은데 마지막 링크가 들어갈 td에 클래스를 넣고 해당 클래스 클릭시 이벤트를 만들어 들어오는 값을 if-else로 구분하여 매핑되는 php로 window.location처리해서 리다이렉트 해줄것 같내요.
만약 php파일명이 필드1하고 일치한다면 어떻게 a태그로 해볼법도 할 수 있을지도 모르겠는데 아니라면 이 방법 뿐이 생각 안나내요.
구조가 어떻게 생긴건지 잘모르겠는데 최하위 카테고리를 클릭하면 해당 카테고리 정보로 간다면 seqno만 전달시켜 해당 seqno상세페이지를 호출하는 함수를 만들어서 처리할것 같고 아예 외부에 정보가 있다거나 하면 아예 최하위 카테고리의 DB에 매칭되는 링크 페이지를 같이 저장시켜 for문돌릴때 출력시키면 되지 않을까요?
Albert Camus
19/05/22 20:11
수정 아이콘
jquery나 javascript도 전혀 몰라서 대충 하는거 내에서 해보려고 했습니다.

저 둘도 오픈소스로 활용할 수 있는건가요?
네파리안
19/05/22 22:03
수정 아이콘
(수정됨) 일단 html, css, javascript는 웹개발시 기본적으로 사용하는 부분입니다.
jquery같은경우는 javascript를 조금 더 편하게 사용하기 위한 라이브러리 개념으로 보시면 되는데 이것도 요즘 유행이 좀 지나긴했는데 워낙 사용법이 간단해서 아마 javascript만 배우시면 사용하는 방법은 정말 쉽습니다.
웹개발하신다면 javascript는 기본이라 선택사항이 아니라 무조건 배우셔야해요.
https://youtu.be/wUHncG3VwPw 여기 들어가면 javascript 기본을 무료로 알려주는 인강있으니 참고하시기 바랍니다.
https://www.w3schools.com/ 워낙 유명해서 아실것 같은데 여기서 기본적인 사항들 찾아보시던가 공부해도 됩니다.
그리고 php도 제가 알기로는 라라벨이라는 프레임워크를 사용한다고 들었는데 언어배우실때 프레임워크까지 하시는게 좋지 않을까 싶내요.
19/05/22 20:22
수정 아이콘
보통 달고나 님이 말씀해주신 방법으로 많이 씁니다. 아니 많이..가 아니고 그냥 다 저렇게 쓴다고 보시면 되요.
음 근데 보통 while 보다는 foreach를 많이 쓰긴 합니다.

쿼리해 온 정보를 $data 라고 칠때

<table id="블라블라">
<? foreach ($data as $key => $value) { ?>
<tr>
<td><a href="<?=$링크값?>"><?=$value ?></a></td>
</tr>
<? } ?>
</table>

뭐 이런식으로요.
db에 key를 링크값으로 쌓는다고 하면 저 링크값을 $key 로 대체해도 되겠죠.
Albert Camus
19/05/22 20:30
수정 아이콘
답변 감사드립니다.
$data as key => $value 이 구문의 의미는 무엇인가요?
그리고 for each 는 개별 row애 대해서 모두 적용한다는 건가요?
19/05/22 20:37
수정 아이콘
foreach 구문을 공부해 보시면 금방 아실겁니다.
보통 쿼리한 array data 불러온걸 key와 value를 분류해서 루프 돌린다고 보시면 됩니다.
Albert Camus
19/05/22 20:40
수정 아이콘
넵 감사합니다!
맥핑키
19/05/22 20:32
수정 아이콘
예전 msdn 같은 스타일을 생각하신 것 같은데
아약스로 하면 됩니다. div로 순차적 padding 이나 margin 주면서요.
Albert Camus
19/05/22 20:36
수정 아이콘
잘 몰라서요 크크. 말씀해주신 키워드로도 찾아볼게요.
맥핑키
19/05/22 20:44
수정 아이콘
제가 좀 예전 표준이라 애매하긴 한데 테이블로 구조를 짜면 엄청 골치아파져요. 그리고 이게 카테고리 하나 클릭할때마다 페이지를 새로고침 하는건 데이터 낭비입니다.
카테고리와 컨텐츠를 프레임으로 나누고요, 카테고리는 확장되면 div로 불러와서 페이지에 추가하면 되고요 (어차피 한단어 혹은 두 단어일 테니)
예전엔 ajax라고 불렀는데 j쿼리에 보면 아마 함수가 있을겁니다. 서버에 쿼리 날려서 단어만 불러오면 나머지는 자바 스크립트나 제이쿼리로 createElement 해서 div 만들고 추가하면 되요. 하위 카테고리가 있는 카테고리나 최하위 카테고리(페이지가 출력되어야 하는) 는 onclick 이벤트로 컨텐츠 프레임에 페이지를 불러오면 되고요.
19/05/22 20:48
수정 아이콘
뭐 말씀하신 방법이 요즘 추세에는 맞는데 js나 jquery를 전혀 못하신다고 하셨으니까요. js도 모르시는데 ajax 요구하는건 좀 과하죠.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
133673 [질문] 휴가때 갈만한 고급 피시방 찾습니다 [3] 풀빛2935 19/05/23 2935
133672 [질문] 북미권에서 BTS인기에 대한 질문. [4] AKbizs3105 19/05/23 3105
133671 [질문] 아기가 밥을 잘 먹는지 응가양으로 가늠할 수 있나요? [7] 비싼치킨2807 19/05/23 2807
133670 [질문] 작별 서프라이즈 파티 아이디어 있을까요? [8] 엔지니어2731 19/05/23 2731
133669 [질문] 용량 20000이상~30000미만 보조배터리 추천 부탁드립니다. [2] 안초비3733 19/05/23 3733
133668 [질문] 요즘 버거 어느집이 괜찬나요? [29] 키토4532 19/05/23 4532
133667 [질문] 삼탈워 컴퓨터 사양 질문 [15] Imhuman5063 19/05/22 5063
133666 [질문] 프라다폰1 기본벨소리를 구하고 있습니다. [3] 별빛정원2316 19/05/22 2316
133665 [질문] 올해 코파아메리카는 왜 개최되는건가요? [11] GRIT3704 19/05/22 3704
133664 [질문] 러닝 시에 발이 너무 뜨겁습니다 [24] 타케우치 미유6101 19/05/22 6101
133663 [질문] LED마스크 질문입니다. [8] 범고래2228 19/05/22 2228
133662 [질문] 삼탈워 예구해야 할까요? [5] 허저비3192 19/05/22 3192
133661 [질문] 영화 망작 추천좀 해주세요 [24] 키류4389 19/05/22 4389
133660 [질문] PHP, mySQL 관련 질문드립니다. [17] Albert Camus2947 19/05/22 2947
133659 [질문] [스포 있습니다]왕좌의 게임 마지막회 존 스노우 설정 [10] 모나크모나크4284 19/05/22 4284
133658 [질문] 이런 케이블 명칭이 어떻게 되나요? [2] 샨티3006 19/05/22 3006
133657 [질문] 국산 차 리스 승계 관련 질문입니다. [1] 회색사과2792 19/05/22 2792
133656 [질문] 고사양 동영상 재생만이 목적이라면 cpu를 뭘로 해야 할까요? [5] wook983840 19/05/22 3840
133655 [질문] 도수치료 실비가 가능한 보험 확인하는 방법이 있을까요 [1] peongun2603 19/05/22 2603
133653 [질문] 이 사양이면 롤 충분히 돌아가나요? [5] 달달합니다2902 19/05/22 2902
133652 [질문] NBA 선수 관련 질문입니다...강백호! [14] 드워프는뚜벅뚜벅3019 19/05/22 3019
133651 [질문] " 100분 토론에 대해 분석한 디시인" [3] Tratoss3381 19/05/22 3381
133650 [질문] 중국의 유튜브는 뭔가요? [6] OrBef3136 19/05/22 3136
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로