json을 이용한 회원명부

회원명단을 json파일로 저장한후에 저장된 회원명단을 웹에서 볼수 있게 만들어 보았습니다.
회원수가 적은 경우에는 데이타베이스를 사용하는 것 보다 간편하게 사용할 수 있는 것 같습니다.
압축을 풀면 test 폴더안에 data.json, images folder, look.php 파일이 나옵니다.
test폴더를 통째로 업로드합니다.
example.com/test/look.php 경로가 됩니다.
json 파일에 회원항목을 추가하거나 변경하고, 이미지를 원하는데로 바꾸면 될 것 같습니다.
look.php에서 테이블을 변경하면 보기좋게 나올 것 같습니다.
chatgpt의 도움을 받았습니다.
data.json
[code][
{
"이름": "John Doe",
"전화번호": "010-1234-5678",
"주소": "New York",
"이메일": "[email protected]",
"소개": "Hello",
"사진": "images/1.png"
},
{
"이름": "Jane Smith",
"전화번호": "010-2345-6789",
"주소": "Los Angeles",
"이메일": "[email protected]",
"소개": "Nice to meet you",
"사진": "images/2.png"
},
{
"이름": "David Brown",
"전화번호": "010-3456-7890",
"주소": "Chicago",
"이메일": "[email protected]",
"소개": "I love coding",
"사진": "images/3.png"
},
{
"이름": "Emily White",
"전화번호": "010-4567-8901",
"주소": "San Francisco",
"이메일": "[email protected]",
"소개": "Passionate about design",
"사진": "images/4.png"
},
{
"이름": "Michael Green",
"전화번호": "010-5678-9012",
"주소": "Miami",
"이메일": "[email protected]",
"소개": "Outdoor enthusiast",
"사진": "images/5.png"
},
{
"이름": "Sophia Taylor",
"전화번호": "010-6789-0123",
"주소": "Houston",
"이메일": "[email protected]",
"소개": "Music lover",
"사진": "images/6.png"
},
{
"이름": "James Johnson",
"전화번호": "010-7890-1234",
"주소": "Boston",
"이메일": "[email protected]",
"소개": "Football fan",
"사진": "images/7.png"
},
{
"이름": "Olivia Martinez",
"전화번호": "010-8901-2345",
"주소": "Seattle",
"이메일": "[email protected]",
"소개": "Art and photography",
"사진": "images/8.png"
},
{
"이름": "Benjamin Harris",
"전화번호": "010-9012-3456",
"주소": "Austin",
"이메일": "[email protected]",
"소개": "Tech geek",
"사진": "images/9.png"
},
{
"이름": "Charlotte Lewis",
"전화번호": "010-0123-4567",
"주소": "Dallas",
"이메일": "[email protected]",
"소개": "Traveler",
"사진": "images/10.png"
},
{
"이름": "Henry Clark",
"전화번호": "010-1234-5678",
"주소": "Phoenix",
"이메일": "[email protected]",
"소개": "Caffeine addict",
"사진": "images/11.png"
},
{
"이름": "Ava Walker",
"전화번호": "010-2345-6789",
"주소": "San Diego",
"이메일": "[email protected]",
"소개": "Fitness enthusiast",
"사진": "images/12.png"
}
][/code]
look.php
[code]
<?php
// data.json 파일에서 JSON 데이터 읽기
$jsonData = file_get_contents('data.json');
$dataArray = json_decode($jsonData, true);
// 데이터가 없으면 빈 배열로 초기화
if ($dataArray === null) {
$dataArray = [];
}
// 검색 기능
$searchName = isset($_GET['search_name']) ? $_GET['search_name'] : '';
// 검색된 결과 필터링
if ($searchName) {
$filteredData = array_filter($dataArray, function($member) use ($searchName) {
return stripos($member['이름'], $searchName) !== false; // 이름을 포함하는 경우
});
} else {
// 검색어가 없으면 모든 데이터 출력
$filteredData = $dataArray;
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>회원 목록</title>
<style>
table {
width: 100%;
border-collapse: collapse;
}
table, th, td {
border: 1px solid black;
}
th, td {
padding: 8px;
text-align: left;
}
img {
width: 50px; /* 이미지 크기 조정 */
height: 50px;
}
</style>
</head>
<body>
<h1>회원 목록</h1>
<!-- 검색 폼 -->
<form method="GET" action="look.php">
<label for="search_name">회원 이름 검색:</label>
<input type="text" id="search_name" name="search_name" value="<?php echo htmlspecialchars($searchName); ?>" placeholder="이름을 입력하세요">
<button type="submit">검색</button>
</form>
<h2>검색 결과</h2>
<table>
<thead>
<tr>
<th>이름</th>
<th>전화번호</th>
<th>주소</th>
<th>이메일</th>
<th>소개</th>
<th>사진</th> <!-- 사진 항목 추가 -->
</tr>
</thead>
<tbody>
<?php
// 필터링된 데이터 배열을 순회하며 테이블 행을 생성
if (count($filteredData) > 0) {
foreach ($filteredData as $member) {
echo "<tr>";
echo "<td>" . htmlspecialchars($member['이름']) . "</td>";
echo "<td>" . htmlspecialchars($member['전화번호']) . "</td>";
echo "<td>" . htmlspecialchars($member['주소']) . "</td>";
echo "<td>" . htmlspecialchars($member['이메일']) . "</td>";
echo "<td>" . htmlspecialchars($member['소개']) . "</td>";
// 이미지 출력
echo "<td><img src='" . htmlspecialchars($member['사진']) . "' alt='사진'></td>";
echo "</tr>";
}
} else {
echo "<tr><td colspan='6'>검색된 회원이 없습니다.</td></tr>";
}
?>
</tbody>
</table>
</body>
</html>
[/code]
첨부파일
그누보드5 스킨
2,751건좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.
아미나 게사판 스킨 Basic-Board에 Plyr을 적용한 게사판 스킨입니다. 업로드 경로 : /skin/board/Basic-Board/list ...
업로드 theme/basic/skin/board/basic_good bbs/good2.php 스킨 적용 후 파일 수정 basic_good/list.skin.php 14~19 라...
트리풀님의 그누보드용 날씨를 해외에 계신 동포를 위해 좀더 수정했어요. 해외에 게신 분들이 한국 정보를 편히 보시게 수정되었습니다. php 초짜가 한 것이니 이해해주세요. 원본은 ...
나리야용(v1.2.19) 갤러리형 게시판입니다. 업로드위치 : /skin/board/BS4-Basic-Plyr-Gallery 나리야(Nariya-0.4b) : https://sir...
챗gpt를 들볶아서 문제풀이를 만들어 보았습니다. 엑셀로 문제를 만든후에 다른 이름으로 저장하기에서 확장자를 콤마로 구분되는 .csv로 저장합니다. 첨부된 tojson.php에서 ...
회원명단을 json파일로 저장한후에 저장된 회원명단을 웹에서 볼수 있게 만들어 보았습니다. 회원수가 적은 경우에는 데이타베이스를 사용하는 것 보다 간편하게 사용할 수 있는 것 같습...
안녕하세요..가입인사로 크리스마스라서 눈내리는 간단한 javascript 올립니다. 동봉하는 화일을 /js/jsized.snow/ 디렉토리를 만들어서 압축풀고 <head>에...
안녕하세요 오랜만에 스킨하나 올려봅니다. https://sir.kr/g5_skin/56381 알림플러그인 설치하신분만 대상입니다. zip 압축파일만 다운받아 적용해보시기 바랍니다...
댓글 6개
오옷!! 멋지십니다! 추천누르고 갑니닷!! 꾹!!
추천합니다.
그런데 제이슨파일을 웝에서 다이렉트로 열거나 다운로드 받으면 비회원도 열람이 가능할텐데...
제이슨파일을 자격있는 사람만 열 수 있게끔 php 처리를 해야 더 안정적일 것 같습니다.
멋진 아이디어라는 데는 공감합니다.
추천 합니다.
멋지네요 멋진만큼 잘 사용해봐야겟네요 .. 감사합니다~~!!
감사합니다.