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 요구하는건 좀 과하죠.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
133685 [질문] 을왕리쪽에 뭐 먹을만한 데 있을까요? [8] 저글링앞다리3161 19/05/23 3161
133684 [질문] 차량 계약 취소 및 리스 승계 관련 질문 [5] 회색사과4905 19/05/23 4905
133683 [질문] 노래방에서 부를만한 남자노래 추천해주세요. [11] Judith Hopps6153 19/05/23 6153
133682 [질문] 제주도 숙소 예약 [1] 영혼의공원3599 19/05/23 3599
133681 [질문] 7월 중순 셋째가 태어납니다. 지금부터 50일간 뭐할까요? [19] 파란무테4149 19/05/23 4149
133680 [질문] 고깃집에서 사용하는 철근불판 문제 없나요? [15] 나를찾아서6031 19/05/23 6031
133679 [질문] 삼탈워 구매했는데 언제부터 시작가능한지와 멀티질문입니다. [6] 제드4794 19/05/23 4794
133678 [질문] 삼탈워 할 수 있는 PC방이라는 게 있을까요? [3] 카버4513 19/05/23 4513
133677 [질문] 자동차 수리방법 및 비용 문의 [2] 희망고문2911 19/05/23 2911
133676 [질문]  특정회원분들 아이디앞에 생긴 아이콘?이모티콘? 뭔가요? [15] Lahmpard2836 19/05/23 2836
133675 [질문] 애플워치 신제품 9월에 출시가 될까요?? [5] 삭제됨2435 19/05/23 2435
133674 [질문] 버거킹 어니언링같은 제품 냉동으로 파나요? [4] 카루오스4544 19/05/23 4544
133673 [질문] 휴가때 갈만한 고급 피시방 찾습니다 [3] 풀빛3126 19/05/23 3126
133672 [질문] 북미권에서 BTS인기에 대한 질문. [4] AKbizs3298 19/05/23 3298
133671 [질문] 아기가 밥을 잘 먹는지 응가양으로 가늠할 수 있나요? [7] 비싼치킨3078 19/05/23 3078
133670 [질문] 작별 서프라이즈 파티 아이디어 있을까요? [8] 엔지니어2933 19/05/23 2933
133669 [질문] 용량 20000이상~30000미만 보조배터리 추천 부탁드립니다. [2] 안초비3959 19/05/23 3959
133668 [질문] 요즘 버거 어느집이 괜찬나요? [29] 키토4730 19/05/23 4730
133667 [질문] 삼탈워 컴퓨터 사양 질문 [15] Imhuman5678 19/05/22 5678
133666 [질문] 프라다폰1 기본벨소리를 구하고 있습니다. [3] 별빛정원2488 19/05/22 2488
133665 [질문] 올해 코파아메리카는 왜 개최되는건가요? [11] GRIT3888 19/05/22 3888
133664 [질문] 러닝 시에 발이 너무 뜨겁습니다 [24] 타케우치 미유6940 19/05/22 6940
133663 [질문] LED마스크 질문입니다. [8] 범고래2385 19/05/22 2385
목록 이전 다음
댓글

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