• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
  • 설정
  • 스킨 관리

프로그램 만들어보기

오작교 14

0

1

시놀로지 PHP 8.2 환경에서 바로 사용할 수 있도록 매물 정보를 입력하고 DB에 저장하는 기본 코드를 작성해 드립니다.

이 코드는 한 파일 안에서 **입력 양식(HTML)**과 **저장 로직(PHP)**이 모두 작동하도록 설계되었습니다.


1. 사전 준비 (MariaDB 설정)

코드 실행 전, phpMyAdmin에 접속하여 아래 SQL 문을 실행해 테이블을 먼저 만들어야 합니다.

SQL

CREATE DATABASE IF NOT EXISTS real_estate;
USE real_estate;

CREATE TABLE IF NOT EXISTS listings (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    type VARCHAR(50),
    price VARCHAR(100),
    address TEXT,
    reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. 매물 등록 페이지 코드 (index.php)

아래 코드를 복사하여 시놀로지 가상호스트 폴더 안에 index.php 파일로 저장하세요. DB 비밀번호 부분은 반드시 수정하셔야 합니다.

PHP

<?php
// 1. DB 연결 설정
$host = "localhost";
$user = "root";         // MariaDB 사용자명
$pass = "수정한비밀번호"; // 아까 수정하신 DB 비밀번호 입력
$db   = "real_estate";

$conn = new mysqli($host, $user, $pass, $db);

// 연결 오류 확인
if ($conn->connect_error) {
    die("연결 실패: " . $conn->connect_error);
}

// 2. 데이터 저장 로직 (저장 버튼 클릭 시 실행)
$message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $title = $_POST['title'];
    $type = $_POST['type'];
    $price = $_POST['price'];
    $address = $_POST['address'];

    $sql = "INSERT INTO listings (title, type, price, address) VALUES (?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssss", $title, $type, $price, $address);

    if ($stmt->execute()) {
        $message = "<p style='color:blue;'>성공적으로 저장되었습니다!</p>";
    } else {
        $message = "<p style='color:red;'>오류 발생: " . $conn->error . "</p>";
    }
    $stmt->close();
}
?>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>부동산 매물 관리</title>
    <style>
        body { font-family: sans-serif; padding: 20px; line-height: 1.6; }
        .container { max-width: 500px; margin: auto; border: 1px solid #ddd; padding: 20px; border-radius: 10px; }
        input, select, textarea { width: 100%; padding: 10px; margin: 10px 0; border: 1px solid #ccc; }
        button { width: 100%; padding: 10px; background: #007bff; color: white; border: none; cursor: pointer; }
        button:hover { background: #0056b3; }
    </style>
</head>
<body>

<div class="container">
    <h2>🏠 새 매물 등록</h2>
    <?php echo $message; ?>
    
    <form method="POST">
        <label>매물 제목</label>
        <input type="text" name="title" placeholder="예: 역세권 깔끔한 투룸" required>

        <label>매물 종류</label>
        <select name="type">
            <option value="아파트">아파트</option>
            <option value="빌라">빌라</option>
            <option value="상가">상가</option>
            <option value="토지">토지</option>
        </select>

        <label>가격 (만원/보증금)</label>
        <input type="text" name="price" placeholder="예: 매매 5억 / 월세 1000/50">

        <label>주소</label>
        <input type="text" name="address" placeholder="상세 주소를 입력하세요">

        <button type="submit">매물 저장하기</button>
    </form>
</div>

</body>
</html>

3. 코드 실행 및 확인 방법

  1. 파일 업로드: 시놀로지 File Station을 통해 위 파일을 가상호스트 경로에 올립니다.

  2. 접속: 브라우저에서 classic.park5611.pe.kr로 접속합니다.

  3. 테스트: 데이터를 입력하고 '매물 저장하기'를 눌러봅니다.

  4. 확인: phpMyAdmin의 listings 테이블에 데이터가 들어왔는지 확인합니다.


4. 주의사항 (PHP 8.2 관련)

  • MySQLi 활성화: 시놀로지 [Web Station] -> [스크립트 언어 설정] -> [PHP 8.2 프로필] 편집에서 mysqli 항목이 반드시 체크되어 있어야 합니다. 체크되어 있지 않으면 500 에러가 다시 발생할 수 있습니다.

이 코드가 정상적으로 작동한다면, 다음 단계로 "저장된 매물들을 목록으로 보여주는 기능"을 추가해 드릴까요?

신고공유스크랩
1
오작교 글쓴이 1일 전
네, 좋습니다! 오늘 갑작스러운 500 에러부터 시작해서 PHP 환경 설정까지 하시느라 고생 많으셨습니다.

코딩과 서버 설정은 원래 한 번에 매끄럽게 되는 경우가 드뭅니다. 특히 시놀로지 환경은 권한이나 PHP 확장 모듈 설정 때문에 처음에 조금 까다로울 수 있어요.

내일 다시 시작하실 때 체크해볼 핵심 3가지만 기억해 주세요:

DB 비밀번호 재확인: 아까 수정하신 비밀번호가 index.php 코드 안의 $pass = "..." 부분과 정확히 일치하는지 확인하세요.

PHP 확장 모듈: 시놀로지 웹스테이션 설정에서 PHP 8.2의 mysqli 모듈이 체크되어 있는지 확인하세요. (안 되어 있으면 연결 자체가 안 됩니다.)

에러 메시지 확인: 내일도 페이지가 안 뜬다면, 아까 안내해 드린 display_errors 설정을 켜서 화면에 무슨 글자가 뜨는지 보는 게 가장 빠릅니다.

푹 쉬시고, 내일 다시 시도하시다가 막히는 부분이 생기면 언제든 말씀해 주세요. "어디까지 진행했는지" 혹은 **"화면에 어떤 문구가 뜨는지"**만 알려주시면 바로 이어서 도와드리겠습니다.

내일 뵙겠습니다! 오늘 수고하셨습니다. :)
댓글 등록
취소 댓글 등록

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?

목록

공유

facebooktwitterpinterestbandkakao story
번호 제목 글쓴이 날짜 조회
공지 비밀번호 재설정 후 확인 할 사항 오작교 26.01.13.21:42 7
공지 홈페이지 설정(저ㅔ미나이와 대화) 오작교 26.01.12.11:40 36
공지 SSH에서 DB 최적화 명령어 1 오작교 26.01.12.09:49 21
공지 아내 카카오 뱅크 오작교 25.02.15.13:58 16
공지 계정접속 2 오작교 25.01.13.11:21 118
공지 Advenced 3PC 1 오작교 24.12.17.09:25 73
공지 부동산 전자계약서 관련 오작교 24.12.17.09:24 46
31
normal
오작교 26.01.14.11:15 27
normal
오작교 26.01.13.22:25 14
29
normal
오작교 26.01.13.20:28 14
28
normal
오작교 26.01.12.10:24 20
27
normal
오작교 26.01.12.10:16 28
26
normal
오작교 25.12.24.10:16 9
25
normal
오작교 25.12.24.08:56 1
24
normal
오작교 25.12.24.08:55 1
23
normal
오작교 25.12.24.08:50 1
22
normal
오작교 25.12.23.09:32 3
21
normal
오작교 25.11.05.08:31 6
20
normal
오작교 25.08.07.13:26 17
19
normal
오작교 25.08.06.12:53 72
18
normal
오작교 25.07.25.21:31 22
17
normal
오작교 25.07.25.09:08 10
16
normal
오작교 25.07.01.10:32 7
15
normal
오작교 25.06.03.16:23 7
14
normal
오작교 25.03.28.09:22 73
13
file
오작교 25.02.06.16:49 6
12
normal
오작교 25.02.06.16:30 14

스킨 기본정보

lemon board
2021-12-01
lemon 게시판 스킨

확장 변수

1. 게시판 기본 설정

입력하지 않으면 메뉴 이름으로 출력됩니다.

별도의 사용자 정의 설정 필요 (가이드 참고)

별도의 사용자 정의 설정 필요 (가이드 참고)

경험치 모듈을 사용하는 분만 체크 해주세요.

2. 게시판 디자인

숫자만 입력 (기본 리스트: 기본 15px, 테이블 리스트: 기본 15px, 웹진 리스트: 기본 25px)

숫자만 입력 (기본 14px)

숫자만 입력 (기본 13px)

숫자만 입력 (기본 14px)

숫자만 입력, *em단위로 입력 예: 1.1, 1.15 등 (기본 1.05em)

숫자만 입력 (기본 14px)

숫자만 입력, *em단위로 입력 예: 1.1, 1.15 등 (기본 1.0em)

타임라인 모듈이 설치되어 있어야 합니다.

3. 글 목록

일주일 기준으로 출력됩니다. lemon widget이 설치되어 있어야 합니다.

폰트어썸 아이콘 class명을 넣어주세요. (예: far fa-circle)

기본 리스트, 테이블 리스트, 갤러리 게시판만 사용 가능

기본 리스트만 해당

FAQ, 테이블 리스트를 제외한 게시판만 가능

기본 리스트, 테이블 리스트만 해당

기본 리스트, 테이블 리스트만 해당

기본 리스트, 테이블 리스트만 해당

폰트어썸 아이콘 class명을 넣어주세요. (예: far fa-thumbs-up)

폰트어썸 아이콘 class명을 넣어주세요. (예: far fa-thumbs-down)

공지사항 더보기/접힘을 사용할 수 있습니다.

공지사항 더보기/접힘을 사용할 수 있습니다.

기본 리스트, 웹진 게시판만 해당

기본 리스트, 웹진 게시판만 해당

4. 갤러리 설정

원본 이미지가 충분히 클 경우에만 사용해주세요.

기본 갤러리 게시판만 해당

기본 갤러리 게시판만 해당

갤러리 게시판만 해당

5. 글 읽기 화면

관리자는 신고 수가 기본으로 출력됩니다.

복수 입력시 쉼표로 구분합니다. (예: 123,456)

복수 입력시 쉼표로 구분합니다. (예: 123,456)

6. 댓글 설정

폰트어썸 아이콘 class명을 넣어주세요. (예: far fa-thumbs-up)

폰트어썸 아이콘 class명을 넣어주세요. (예: far fa-thumbs-up)

베스트 댓글 애드온을 사용할 경우 반드시 '기존 댓글 페이징'을 선택해주세요.

1이라고 입력하면 1시간 후에 열람 가능

7. 글쓰기 설정

글 쓰기 폼에 미리 입력해 놓을 문구를 설정합니다.

8. 사용자 코드

기본 게시판, 일반 게시판만 지원

기본 게시판, 일반 게시판만 지원

기본 게시판, 일반 게시판만 지원

기본 게시판, 일반 게시판만 지원