๋ฃจ์  ์†Œํ”„ํŠธ ๋กœ๊ณ 

216.73.216.248 TODAY : 58

PHP ๊ฐ•์˜

 > 

PHP - ์ค‘๊ธ‰

๐Ÿ“š PHP ์ค‘๊ธ‰ - 3์ฃผ์ฐจ: ๊ฒŒ์‹œํŒ CRUD ๊ตฌํ˜„ (๊ธฐ๋ณธ) - 02 ๊ธ€ ๋ชฉ๋ก, ๊ธ€ ์ž‘์„ฑ, ๊ธ€ ๋ณด๊ธฐ, ๊ธ€ ์ˆ˜์ •, ๊ธ€ ์‚ญ์ œ

๐Ÿ“š PHP ์ค‘๊ธ‰ - 3์ฃผ์ฐจ: ๊ฒŒ์‹œํŒ CRUD ๊ตฌํ˜„ (๊ธฐ๋ณธ) - 02 ๊ธ€ ๋ชฉ๋ก, ๊ธ€ ์ž‘์„ฑ, ๊ธ€ ๋ณด๊ธฐ, ๊ธ€ ์ˆ˜์ •, ๊ธ€ ์‚ญ์ œ
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-07-22 10:28:44
์กฐํšŒ์ˆ˜ 20
- ์„ค๋ช…

๐Ÿ“š PHP ์ค‘๊ธ‰ - 3์ฃผ์ฐจ: ๊ฒŒ์‹œํŒ CRUD ๊ตฌํ˜„ (๊ธฐ๋ณธ) - 02 ๊ธ€ ๋ชฉ๋ก, ๊ธ€ ์ž‘์„ฑ, ๊ธ€ ๋ณด๊ธฐ, ๊ธ€ ์ˆ˜์ •, ๊ธ€ ์‚ญ์ œ





์•ˆ๋…•ํ•˜์„ธ์š”! ์ง€๋‚œ์ฃผ์— ์ด์–ด ์ด๋ฒˆ ์ฃผ์—๋Š” #PHP #๊ฒŒ์‹œํŒ ๊ตฌํ˜„์˜ ํ•ต์‹ฌ์ธ #CRUD ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด ๋ณผ ๊ฑฐ์˜ˆ์š”. #CRUD๋Š” Create(์ƒ์„ฑ), Read(์ฝ๊ธฐ), Update(์ˆ˜์ •), Delete(์‚ญ์ œ)์˜ ์•ฝ์ž๋กœ, ๋Œ€๋ถ€๋ถ„์˜ #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์—์„œ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ธฐ๋Šฅ์ด์ฃ .





1. ๊ฐœ์š” ๋ฐ ๋ชฉํ‘œ




์ด๋ฒˆ ์ฃผ์ฐจ์—์„œ๋Š” ๊ฐ„๋‹จํ•œ #๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค์–ด์„œ #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— #๊ธ€์„ ์ €์žฅํ•˜๊ณ , ์ฝ๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ์‚ญ์ œํ•˜๋Š” ๊ณผ์ •์„ #PHP ์ฝ”๋“œ๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณผ ๊ฑฐ์˜ˆ์š”. #ํ”„๋ก ํŠธ์—”๋“œ ๋””์ž์ธ๋ณด๋‹ค๋Š” #๋ฐฑ์—”๋“œ #๋กœ์ง ๊ตฌํ˜„์— ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค.



์ฃผ์š” ๋ชฉํ‘œ:

  • #๊ธ€ ๋ชฉ๋ก(#Read ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€) ํ‘œ์‹œ

  • #๊ธ€ ์ž‘์„ฑ(#Create ๊ธฐ๋Šฅ) ํผ ๋ฐ ์ฒ˜๋ฆฌ

  • #๊ธ€ ๋ณด๊ธฐ(#Read ๊ธฐ๋Šฅ) ์ƒ์„ธ ํŽ˜์ด์ง€

  • #๊ธ€ ์ˆ˜์ •(#Update ๊ธฐ๋Šฅ) ํผ ๋ฐ ์ฒ˜๋ฆฌ

  • #๊ธ€ ์‚ญ์ œ(#Delete ๊ธฐ๋Šฅ) ์ฒ˜๋ฆฌ





2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค€๋น„


uploadImage


๊ฐ€์žฅ ๋จผ์ € #๊ฒŒ์‹œํŒ #๊ธ€์„ ์ €์žฅํ•  #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค #ํ…Œ์ด๋ธ”์ด ํ•„์š”ํ•ด์š”. #MySQL์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ• ๊ฒŒ์š”. board๋ผ๋Š” ์ด๋ฆ„์˜ #ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ์ฒ˜๋Ÿผ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด ๋ณด์„ธ์š”.



SQL

CREATE TABLE board (
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    author VARCHAR(100) NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);



  • id: ๊ฐ #๊ธ€์˜ ๊ณ ์œ  ๋ฒˆํ˜ธ (๊ธฐ๋ณธ ํ‚ค, ์ž๋™ ์ฆ๊ฐ€)

  • title: #๊ธ€์˜ ์ œ๋ชฉ

  • content: #๊ธ€์˜ ๋‚ด์šฉ

  • author: #์ž‘์„ฑ์ž

  • created_at: #๊ธ€์ด ์ž‘์„ฑ๋œ ์‹œ๊ฐ„

  • updated_at: #๊ธ€์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •๋œ ์‹œ๊ฐ„





3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ •




#PHP ์Šคํฌ๋ฆฝํŠธ์—์„œ #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ • ํŒŒ์ผ(db_config.php ๋“ฑ์œผ๋กœ ์ €์žฅ)์„ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.



PHP

<?php
// db_config.php
$servername = "localhost"; // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜ธ์ŠคํŠธ
$username = "your_db_username"; // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž ์ด๋ฆ„
$password = "your_db_password"; // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๋ฐ€๋ฒˆํ˜ธ
$dbname = "your_database_name"; // ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);
    // PDO ์˜ค๋ฅ˜ ๋ชจ๋“œ๋ฅผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋กœ ์„ค์ •
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // ์„ ํƒ์ : PDO ๊ธฐ๋ณธ ํŽ˜์น˜ ๋ชจ๋“œ ์„ค์ • (์—ฐ๊ด€ ๋ฐฐ์—ด)
    $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    // echo "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ฑ๊ณต!"; // ํ…Œ์ŠคํŠธ์šฉ
} catch(PDOException $e) {
    die("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์‹คํŒจ: " . $e->getMessage());
}
?>





4. ๊ธ€ ๋ชฉ๋ก ๋ณด๊ธฐ (list.php)


uploadImage


์ด์ œ #๊ฒŒ์‹œํŒ์˜ #๊ธ€ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๊ฑฐ์˜ˆ์š”.



PHP

<?php
// list.php
include 'db_config.php'; // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ • ํฌํ•จ

// ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ์œ„ํ•œ ์„ค์ •
$posts_per_page = 10; // ํŽ˜์ด์ง€๋‹น ๋ณด์—ฌ์ค„ ๊ธ€ ์ˆ˜
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($current_page - 1) * $posts_per_page;

try {
    // ์ด ๊ธ€ ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ
    $total_posts_stmt = $conn->query("SELECT COUNT(*) FROM board");
    $total_posts = $total_posts_stmt->fetchColumn();
    $total_pages = ceil($total_posts / $posts_per_page);

    // ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ (์ตœ์‹  ๊ธ€๋ถ€ํ„ฐ, ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ ์šฉ)
    $stmt = $conn->prepare("SELECT id, title, author, created_at FROM board ORDER BY created_at DESC LIMIT :offset, :limit");
    $stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
    $stmt->bindParam(':limit', $posts_per_page, PDO::PARAM_INT);
    $stmt->execute();
    $posts = $stmt->fetchAll();

} catch(PDOException $e) {
    echo "์˜ค๋ฅ˜: " . $e->getMessage();
    $posts = []; // ์˜ค๋ฅ˜ ์‹œ ๋นˆ ๋ฐฐ์—ด๋กœ ์ดˆ๊ธฐํ™”
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>๊ฒŒ์‹œํŒ ๊ธ€ ๋ชฉ๋ก</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        table { width: 80%; border-collapse: collapse; margin: 20px 0; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background-color: #f2f2f2; }
        .pagination a { margin: 0 5px; text-decoration: none; }
    </style>
</head>
<body>
    <h1>๊ฒŒ์‹œํŒ ๊ธ€ ๋ชฉ๋ก</h1>
    <p><a href="write.php">์ƒˆ ๊ธ€ ์ž‘์„ฑ</a></p>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>์ œ๋ชฉ</th>
                <th>์ž‘์„ฑ์ž</th>
                <th>์ž‘์„ฑ์ผ</th>
            </tr>
        </thead>
        <tbody>
            <?php if (count($posts) > 0): ?>
                <?php foreach ($posts as $post): ?>
                    <tr>
                        <td><?php echo htmlspecialchars($post['id']); ?></td>
                        <td><a href="view.php?id=<?php echo htmlspecialchars($post['id']); ?>"><?php echo htmlspecialchars($post['title']); ?></a></td>
                        <td><?php echo htmlspecialchars($post['author']); ?></td>
                        <td><?php echo htmlspecialchars($post['created_at']); ?></td>
                    </tr>
                <?php endforeach; ?>
            <?php else: ?>
                <tr>
                    <td colspan="4">์•„์ง ์ž‘์„ฑ๋œ ๊ธ€์ด ์—†์Šต๋‹ˆ๋‹ค.</td>
                </tr>
            <?php endif; ?>
        </tbody>
    </table>

    <div class="pagination">
        <?php for ($i = 1; $i <= $total_pages; $i++): ?>
            <a href="?page=<?php echo $i; ?>" <?php echo ($i == $current_page) ? 'style="font-weight: bold;"' : ''; ?>><?php echo $i; ?></a>
        <?php endfor; ?>
    </div>
</body>
</html>





5. ๊ธ€ ์ž‘์„ฑ (write.php)

uploadImage



#์ƒˆ๋กœ์šด #๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํผ๊ณผ ์ œ์ถœ ์‹œ #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” #๋กœ์ง์ด์—์š”.



PHP

<?php
// write.php
include 'db_config.php';

$message = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = trim($_POST['title'] ?? '');
    $content = trim($_POST['content'] ?? '');
    $author = trim($_POST['author'] ?? '');

    if (empty($title) || empty($content) || empty($author)) {
        $message = "๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ฑ„์›Œ์ฃผ์„ธ์š”.";
    } else {
        try {
            $stmt = $conn->prepare("INSERT INTO board (title, content, author) VALUES (:title, :content, :author)");
            $stmt->bindParam(':title', $title);
            $stmt->bindParam(':content', $content);
            $stmt->bindParam(':author', $author);
            $stmt->execute();

            $message = "๊ธ€์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!";
            header('Location: list.php'); // ๊ธ€ ๋ชฉ๋ก์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
            exit();
        } catch(PDOException $e) {
            $message = "๊ธ€ ์ž‘์„ฑ ์˜ค๋ฅ˜: " . $e->getMessage();
        }
    }
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>์ƒˆ ๊ธ€ ์ž‘์„ฑ</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        form div { margin-bottom: 10px; }
        label { display: block; margin-bottom: 5px; }
        input[type="text"], textarea { width: 50%; padding: 8px; border: 1px solid #ddd; }
        textarea { height: 150px; resize: vertical; }
        button { padding: 10px 15px; background-color: #007bff; color: white; border: none; cursor: pointer; }
        button:hover { background-color: #0056b3; }
        .message { color: red; margin-bottom: 10px; }
    </style>
</head>
<body>
    <h1>์ƒˆ ๊ธ€ ์ž‘์„ฑ</h1>
    <?php if ($message): ?>
        <p class="message"><?php echo $message; ?></p>
    <?php endif; ?>
    <form action="write.php" method="POST">
        <div>
            <label for="title">์ œ๋ชฉ:</label>
            <input type="text" id="title" name="title" required>
        </div>
        <div>
            <label for="author">์ž‘์„ฑ์ž:</label>
            <input type="text" id="author" name="author" required>
        </div>
        <div>
            <label for="content">๋‚ด์šฉ:</label>
            <textarea id="content" name="content" required></textarea>
        </div>
        <button type="submit">์ž‘์„ฑ ์™„๋ฃŒ</button>
        <button type="button" onclick="location.href='list.php'">๋ชฉ๋ก์œผ๋กœ</button>
    </form>
</body>
</html>





6. ๊ธ€ ๋ณด๊ธฐ (view.php)




ํŠน์ • #๊ธ€์˜ ๋‚ด์šฉ์„ ์ƒ์„ธํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.



PHP

<?php
// view.php
include 'db_config.php';

$post = null;
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

if ($id > 0) {
    try {
        $stmt = $conn->prepare("SELECT id, title, content, author, created_at, updated_at FROM board WHERE id = :id");
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        $stmt->execute();
        $post = $stmt->fetch();

        if (!$post) {
            echo "ํ•ด๋‹น ๊ธ€์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.";
            exit();
        }
    } catch(PDOException $e) {
        echo "์˜ค๋ฅ˜: " . $e->getMessage();
        exit();
    }
} else {
    echo "์ž˜๋ชป๋œ ์ ‘๊ทผ์ž…๋‹ˆ๋‹ค.";
    exit();
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>๊ธ€ ๋ณด๊ธฐ: <?php echo htmlspecialchars($post['title'] ?? '์ œ๋ชฉ ์—†์Œ'); ?></title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        .post-info { margin-bottom: 15px; color: #555; font-size: 0.9em; }
        .post-content { border: 1px solid #eee; padding: 15px; min-height: 150px; line-height: 1.8; }
        .actions { margin-top: 20px; }
        .actions a, .actions button { margin-right: 10px; padding: 8px 12px; text-decoration: none; color: white; border: none; cursor: pointer; }
        .actions .edit { background-color: #28a745; }
        .actions .delete { background-color: #dc3545; }
        .actions .list { background-color: #6c757d; }
    </style>
</head>
<body>
    <h1><?php echo htmlspecialchars($post['title']); ?></h1>
    <div class="post-info">
        ์ž‘์„ฑ์ž: <?php echo htmlspecialchars($post['author']); ?> | 
        ์ž‘์„ฑ์ผ: <?php echo htmlspecialchars($post['created_at']); ?> | 
        ์ˆ˜์ •์ผ: <?php echo htmlspecialchars($post['updated_at']); ?>
    </div>
    <div class="post-content">
        <?php echo nl2br(htmlspecialchars($post['content'])); // ์ค„ ๋ฐ”๊ฟˆ ์ ์šฉ ?>
    </div>

    <div class="actions">
        <a href="edit.php?id=<?php echo htmlspecialchars($post['id']); ?>" class="edit">์ˆ˜์ •</a>
        <form action="delete.php" method="POST" style="display:inline;" onsubmit="return confirm('์ •๋ง๋กœ ์ด ๊ธ€์„ ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?');">
            <input type="hidden" name="id" value="<?php echo htmlspecialchars($post['id']); ?>">
            <button type="submit" class="delete">์‚ญ์ œ</button>
        </form>
        <a href="list.php" class="list">๋ชฉ๋ก</a>
    </div>
</body>
</html>





7. ๊ธ€ ์ˆ˜์ • (edit.php)

uploadImage



๊ธฐ์กด #๊ธ€์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™€์„œ ์ˆ˜์ •ํ•˜๊ณ , #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—…๋ฐ์ดํŠธํ•˜๋Š” #๋กœ์ง์ด์—์š”.



PHP

<?php
// edit.php
include 'db_config.php';

$message = '';
$post = null;
$id = isset($_REQUEST['id']) ? (int)$_REQUEST['id'] : 0; // GET ๋˜๋Š” POST ๋ชจ๋‘ ์ฒ˜๋ฆฌ

if ($id > 0) {
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // POST ์š”์ฒญ (์ˆ˜์ • ์™„๋ฃŒ)
        $title = trim($_POST['title'] ?? '');
        $content = trim($_POST['content'] ?? '');
        $author = trim($_POST['author'] ?? ''); // ์ž‘์„ฑ์ž๋Š” ๋ณดํ†ต ์ˆ˜์ •ํ•˜์ง€ ์•Š์ง€๋งŒ, ์˜ˆ์‹œ๋กœ ํฌํ•จ

        if (empty($title) || empty($content) || empty($author)) {
            $message = "๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ฑ„์›Œ์ฃผ์„ธ์š”.";
        } else {
            try {
                $stmt = $conn->prepare("UPDATE board SET title = :title, content = :content, author = :author, updated_at = NOW() WHERE id = :id");
                $stmt->bindParam(':title', $title);
                $stmt->bindParam(':content', $content);
                $stmt->bindParam(':author', $author);
                $stmt->bindParam(':id', $id, PDO::PARAM_INT);
                $stmt->execute();

                $message = "๊ธ€์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค!";
                header('Location: view.php?id=' . $id); // ์ˆ˜์ •๋œ ๊ธ€ ๋ณด๊ธฐ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
                exit();
            } catch(PDOException $e) {
                $message = "๊ธ€ ์ˆ˜์ • ์˜ค๋ฅ˜: " . $e->getMessage();
            }
        }
    }

    // GET ์š”์ฒญ ๋˜๋Š” POST ์š”์ฒญ ์‹คํŒจ ์‹œ ๊ธฐ์กด ๊ธ€ ๋‚ด์šฉ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    try {
        $stmt = $conn->prepare("SELECT id, title, content, author FROM board WHERE id = :id");
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        $stmt->execute();
        $post = $stmt->fetch();

        if (!$post) {
            echo "ํ•ด๋‹น ๊ธ€์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.";
            exit();
        }
    } catch(PDOException $e) {
        echo "์˜ค๋ฅ˜: " . $e->getMessage();
        exit();
    }
} else {
    echo "์ž˜๋ชป๋œ ์ ‘๊ทผ์ž…๋‹ˆ๋‹ค.";
    exit();
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>๊ธ€ ์ˆ˜์ •: <?php echo htmlspecialchars($post['title'] ?? '์ œ๋ชฉ ์—†์Œ'); ?></title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        form div { margin-bottom: 10px; }
        label { display: block; margin-bottom: 5px; }
        input[type="text"], textarea { width: 50%; padding: 8px; border: 1px solid #ddd; }
        textarea { height: 150px; resize: vertical; }
        button { padding: 10px 15px; background-color: #007bff; color: white; border: none; cursor: pointer; }
        button:hover { background-color: #0056b3; }
        .message { color: red; margin-bottom: 10px; }
    </style>
</head>
<body>
    <h1>๊ธ€ ์ˆ˜์ •</h1>
    <?php if ($message): ?>
        <p class="message"><?php echo $message; ?></p>
    <?php endif; ?>
    <form action="edit.php" method="POST">
        <input type="hidden" name="id" value="<?php echo htmlspecialchars($post['id']); ?>">
        <div>
            <label for="title">์ œ๋ชฉ:</label>
            <input type="text" id="title" name="title" value="<?php echo htmlspecialchars($post['title']); ?>" required>
        </div>
        <div>
            <label for="author">์ž‘์„ฑ์ž:</label>
            <input type="text" id="author" name="author" value="<?php echo htmlspecialchars($post['author']); ?>" required>
        </div>
        <div>
            <label for="content">๋‚ด์šฉ:</label>
            <textarea id="content" name="content" required><?php echo htmlspecialchars($post['content']); ?></textarea>
        </div>
        <button type="submit">์ˆ˜์ • ์™„๋ฃŒ</button>
        <button type="button" onclick="location.href='view.php?id=<?php echo htmlspecialchars($post['id']); ?>'">์ทจ์†Œ</button>
    </form>
</body>
</html>





8. ๊ธ€ ์‚ญ์ œ (delete.php)




#ํŠน์ • #๊ธ€์„ #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ œ๊ฑฐํ•˜๋Š” #๋กœ์ง์ด์—์š”. ๋ณด์•ˆ์„ ์œ„ํ•ด #POST ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ์„ ๋ฐ›๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”.



PHP

<?php
// delete.php
include 'db_config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $id = isset($_POST['id']) ? (int)$_POST['id'] : 0;

    if ($id > 0) {
        try {
            $stmt = $conn->prepare("DELETE FROM board WHERE id = :id");
            $stmt->bindParam(':id', $id, PDO::PARAM_INT);
            $stmt->execute();

            echo "๊ธ€์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.";
            header('Location: list.php'); // ๊ธ€ ๋ชฉ๋ก์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
            exit();
        } catch(PDOException $e) {
            echo "๊ธ€ ์‚ญ์ œ ์˜ค๋ฅ˜: " . $e->getMessage();
            // ์˜ค๋ฅ˜ ์‹œ์—๋„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์ ์ ˆํ•œ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
            echo "<p><a href='list.php'>๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ</a></p>";
            exit();
        }
    } else {
        echo "์ž˜๋ชป๋œ ์ ‘๊ทผ์ž…๋‹ˆ๋‹ค.";
        echo "<p><a href='list.php'>๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ</a></p>";
        exit();
    }
} else {
    echo "์ž˜๋ชป๋œ ์š”์ฒญ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค."; // POST๊ฐ€ ์•„๋‹Œ ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผ ์‹œ
    echo "<p><a href='list.php'>๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ</a></p>";
    exit();
}
?>





9. ๋งˆ์น˜๋ฉฐ




์ด๋ฒˆ ์ฃผ์—๋Š” #PHP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ #๊ฒŒ์‹œํŒ์˜ ๊ธฐ๋ณธ์ ์ธ #CRUD ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•ด ๋ณด์•˜์–ด์š”. #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ๋ถ€ํ„ฐ #๊ธ€ ์ƒ์„ฑ, ์ฝ๊ธฐ, ์ˆ˜์ •, ์‚ญ์ œ๊นŒ์ง€์˜ ์ „์ฒด #๋กœ์ง ํ๋ฆ„์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์…จ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์ฐจ์—๋Š” ์ด ๊ธฐ๋ณธ #๊ฒŒ์‹œํŒ์„ ์ข€ ๋” ๊ฐœ์„ ํ•˜๊ณ  ํŽ˜์ด์ง• ์ ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ˆ ๊ธฐ๋Œ€ํ•ด ์ฃผ์„ธ์š”!




๊ฐ€์„ฑ๋น„ VPN ๋ฃจ์  VPN

VPN์ด ํ•„์š” ํ•˜๋‹ค๋ฉด

LuzenVPN(๋ฃจ์  VPN) #์ฐฉํ•œ๊ฐ€๊ฒฉ, #๋น ๋ฅธ์„œ๋น„์Šค, #์•ˆ์ •์„ฑ ๊นŒ์ง€ ๊ฐ–์ถ˜, #ํด๋ฆฐ์•„์ดํ”ผ ์ œ๊ณต ์œผ๋กœ #๋งˆ์ผ€ํŒ… ๋ถ€ํ„ฐ #๊ฒŒ์ž„ ๊นŒ์ง€! ํ•œ๋ฒˆ์— ํ•ด๊ฒฐ

https://vpn.luzensoft.com