php

블로그 사이트 만들기

Kim do hyun 2023. 5. 18. 14:11
728x90
반응형

블로그 사이트 만들기

 

 

메인 블로그 페이지

<?php
    include "../connect/connect.php";
    include "../connect/session.php";
?>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>게시판</title>

    <?php include "../include/head.php" ?>
</head>
<body class="gray">
    
    <?php include "../include/skip.php" ?>
    <!-- //skip -->

    <?php include "../include/header.php" ?>
    <!-- //header -->

    <main id="main" class="container">
        <div class="blog__search bmStyle">
            <h2>개발자 블로그 입니다.</h2>
            <p>개발과 관련된 글입니다.</p>
            <div class="search">
                <form action="#" name="#" method="POST">
                    <legend class="blind">블로그 검색</legend>
                    <input type="search" class="inputStyle2" name="searchKeyword" aria-label="검색" placeholder="검색어를 입력하세요!">
                    <button type="submit" class="btnStyle4 ml20">검색하기</button>
                    <?php if(isset($_SESSION['memberID'])){ ?>
                        <div class="mt20"><a href="blogWrite.php" class="btnStyle4 white">글쓰기</a></div>
                    <?php } ?>
                        
                </form>
            </div>
        </div>
        <div class="blog__inner">
            <div class="left">
                <div class="blog__wrap">
                    <h2>All Posts</h2>
                    <div class="cards__inner col3 line3">
                        <!-- <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog01.jpg, ../assets/img/blog01@2x.jpg 2x, ../assets/img/blog01@3x.jpg 3x" />
                                <img src="../assets/img/blog01.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>코딩 기초</h3>
                                <p>이것은 코딩을 처음 접하는 사람들을 위한 기본적인 코딩 주제에 대한 기사일 수 있습니다. 여기에는 변수, 조건문, 반복문과 같은 주제가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more" class="more">더보기</span>
                            </div>
                        </div> -->
<?php
    $sql = "SELECT * FROM blog WHERE blogDelete = 0 ORDER BY blogID DESC";
    $result = $connect -> query($sql);
?>
    <?php foreach($result as $blog){ ?>
        <div class="card">
            <figure class="card__img">
                <a href="blogView.php?blogID=<?=$blog['blogID']?>">
                    <img src="../assets/blog/<?=$blog['blogImgFile']?>" alt="<?=$blog['blogTitle']?>">
            </a>
            </figure>
            <div class="card__title">
                <h3><?=$blog['blogTitle']?></h3>
                <p><?=$blog['blogContents']?></p>
            </div>
            <div class="card__info">
                <a href="#" class="more">더보기</a>
            </div>
        </div>
    <?php } ?>
                        <!-- <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog02.jpg, ../assets/img/blog02@2x.jpg 2x, ../assets/img/blog02@3x.jpg 3x" />
                                <img src="../assets/img/blog02.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>특정 프로그래밍 언어에 대한 기사</h3>
                                <p>이것은 특정 프로그래밍 언어에 대한 기사일 수 있습니다. 여기에는 언어의 문법, 기능 및 프레임워크에 대한 정보가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more">더보기</span>
                            </div>
                        </div>
                        <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog03.jpg, ../assets/img/blog03@2x.jpg 2x, ../assets/img/blog03@3x.jpg 3x" />
                                <img src="../assets/img/blog03.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>코딩 프로젝트</h3>
                                <p>이것은 코딩에 대한 지식을 적용하는 코딩 프로젝트에 대한 기사일 수 있습니다. 여기에는 게임, 웹사이트 또는 앱 구축과 같은 프로젝트가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more">더보기</span>
                            </div>
                        </div>
                        <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog04.jpg, ../assets/img/blog04@2x.jpg 2x, ../assets/img/blog04@3x.jpg 3x" />
                                <img src="../assets/img/blog04.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>코딩 팁과 요령</h3>
                                <p>이것은 코딩을 더 잘하는 데 도움이 되는 팁과 요령에 대한 기사일 수 있습니다. 여기에는 프로그래밍에서 시간을 절약하는 방법, 버그를 디버깅하는 방법 또는 코드를 더 효율적으로 작성하는 방법에 대한 정보가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more">더보기</span>
                            </div>
                        </div>
                        <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog01.jpg, ../assets/img/blog01@2x.jpg 2x, ../assets/img/blog01@3x.jpg 3x" />
                                <img src="../assets/img/blog01.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>코딩 기초</h3>
                                <p>이것은 코딩을 처음 접하는 사람들을 위한 기본적인 코딩 주제에 대한 기사일 수 있습니다. 여기에는 변수, 조건문, 반복문과 같은 주제가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more" class="more">더보기</span>
                            </div>
                        </div>
                        <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog02.jpg, ../assets/img/blog02@2x.jpg 2x, ../assets/img/blog02@3x.jpg 3x" />
                                <img src="../assets/img/blog02.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>특정 프로그래밍 언어에 대한 기사</h3>
                                <p>이것은 특정 프로그래밍 언어에 대한 기사일 수 있습니다. 여기에는 언어의 문법, 기능 및 프레임워크에 대한 정보가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more">더보기</span>
                            </div>
                        </div>
                        <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog03.jpg, ../assets/img/blog03@2x.jpg 2x, ../assets/img/blog03@3x.jpg 3x" />
                                <img src="../assets/img/blog03.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>코딩 프로젝트</h3>
                                <p>이것은 코딩에 대한 지식을 적용하는 코딩 프로젝트에 대한 기사일 수 있습니다. 여기에는 게임, 웹사이트 또는 앱 구축과 같은 프로젝트가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more">더보기</span>
                            </div>
                        </div>
                        <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog04.jpg, ../assets/img/blog04@2x.jpg 2x, ../assets/img/blog04@3x.jpg 3x" />
                                <img src="../assets/img/blog04.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>코딩 팁과 요령</h3>
                                <p>이것은 코딩을 더 잘하는 데 도움이 되는 팁과 요령에 대한 기사일 수 있습니다. 여기에는 프로그래밍에서 시간을 절약하는 방법, 버그를 디버깅하는 방법 또는 코드를 더 효율적으로 작성하는 방법에 대한 정보가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more">더보기</span>
                            </div>
                        </div>
                        <div class="card">
                            <figure class="card__img">
                                <source srcset="../assets/img/blog04.jpg, ../assets/img/blog04@2x.jpg 2x, ../assets/img/blog04@3x.jpg 3x" />
                                <img src="../assets/img/blog04.jpg" alt="소개이미지">
                            </figure>
                            <div class="card__title">
                                <h3>코딩 팁과 요령</h3>
                                <p>이것은 코딩을 더 잘하는 데 도움이 되는 팁과 요령에 대한 기사일 수 있습니다. 여기에는 프로그래밍에서 시간을 절약하는 방법, 버그를 디버깅하는 방법 또는 코드를 더 효율적으로 작성하는 방법에 대한 정보가 포함될 수 있습니다.</p>
                            </div>
                            <div class="card__info">
                                <span class="more">더보기</span>
                            </div>
                        </div> -->
                    </div>
                </div>
            </div>
            <div class="right">
                <div class="blog__aside">
                    <div class="intro">
                        <picture class="img">
                            <source srcset="../assets/img/join02.png, ../assets/img/join02@2x.png 2x, ../assets/img/join02@3x.png 3x" />
                            <img src="../assets/img/join02.png" alt="소개이미지">
                        </picture> 
                        <p class="text">
                            어떤 일이라도 노력하고 즐기면 그 결과는 빛을 바란다고 생각합니다.
                        </p>
                    </div>
                    <?php include "../include/blogCate.php" ?>

                    <?php include "../include/blogLatest.php" ?>

                    <?php include "../include/blogPopular.php" ?>

                    <?php include "../include/blogComment.php" ?>
                    </div>
                </div>
            </div>
        </div>
        <!-- blog__inner -->
    </main>
    <!-- //main -->
        
    <?php include "../include/footer.php" ?>
    <!-- //footer -->
</body>
</html>

 

카테고리 페이지

<?php
    include "../connect/connect.php";
    include "../connect/session.php";
    
    if(isset ($_GET['category'])){
        $category = $_GET['category'];
    } else {
        Header("Location: blog.php");
    }
    $categorySql = "SELECT * FROM blog WHERE blogDelete = 0 AND blogCategory= '$category' ORDER BY blogID DESC";
    $categoryResult = $connect -> query($categorySql);
    $categoryInfo = $categoryResult -> fetch_array(MYSQLI_ASSOC);
    $categoryCount = $categoryResult -> num_rows;

?>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>게시판</title>

    <?php include "../include/head.php" ?>
</head>
<body class="gray">
    
    <?php include "../include/skip.php" ?>
    <!-- //skip -->

    <?php include "../include/header.php" ?>
    <!-- //header -->

    <main id="main" class="container">
    <div class="blog__search bmStyle">
        <?php
            if ($categoryCount == 0) {?>
                <h2><?= $category ?></h2>
                <p>카테고리와 관련된 게시글이 없습니다.</p>
                <?php
            } else {?>
                <h2><?= $categoryInfo['blogCategory'] ?></h2>
                <p><?= $categoryInfo['blogCategory'] ?>와 관련된 글이 <?= $categoryCount ?>개 있습니다.</p>
                <?php
            }
        ?>
            </div>
        </div>
        <!-- //blog__title -->
        <div class="blog__inner">
            <div class="left mt70">
                <div class="blog__wrap">
                    <div class="cards__inner col3 row line2">
                    <?php foreach($categoryResult as $blog){ ?>
                        <div class="card">
                            <figure class="card__img">
                                <a href="blogView.php?blogID=<?=$blog['blogID']?>">
                                    <img src="../assets/blog/<?=$blog['blogImgFile']?>" alt="<?=$blog['blogTitle']?>">
                                </a>
                            </figure>
                            <div class="card__title">
                                <h3><a href="blogView.php?blogID=<?=$blog['blogID']?>"><?=$blog['blogTitle']?></a></h3>
                                <p><?=$blog['blogContents']?></p>
                            </div>
                        </div>
                    <?php } ?>
                    </div>
                </div>
            </div>
            <div class="right mt70">
                <div class="blog__aside">
                    
                    <?php include "../include/blogtitle.php" ?>
                    
                    <?php include "../include/blogCate.php" ?>

                    <?php include "../include/blogLatest.php" ?>

                    <?php include "../include/blogPopular.php" ?>

                    <?php include "../include/blogComment.php" ?>

                </div>
            </div>
        </div>
        <!-- //blog__inner -->
    </main>
    <!-- //main -->
        
    <?php include "../include/footer.php" ?>
    <!-- //footer -->
</body>
</html>

 

게시글 작성하기

<?php
    include "../connect/connect.php";
    include "../connect/session.php";
?>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>게시판</title>
    <!-- Toast UI Editor -->
    <link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor.min.css" />
    <style>
         :not(.auto-height)>.toastui-editor-defaultUI>.toastui-editor-main {
            background-color: #fff;
        }
    </style>

    <?php include "../include/head.php" ?>
</head>
<body class="gray">
    
    <?php include "../include/skip.php" ?>
    <!-- //skip -->

    <?php include "../include/header.php" ?>
    <!-- //header -->

    <main id="main" class="container">
        <div class="blog__search bmStyle">
            <h2>개발자 블로그 게시글 작성.</h2>
            <p>개발과 관련된 글들만 작성할 수 있습니다.</p>
        </div>
        <div class="blog__inner">
            <div class="blog__write">
                <form action="blogWriteSave.php" name="blogWriteSave" method="post" enctype="multipart/form-data">
                    <fieldset>
                        <legend class="blind">게시글 작성하기</legend>
                        <div>
                            <label for="blogCategory">카테고리</label>
                            <select name="blogCategory" id="blogCategory">
                                <option value="javascript">javascript</option>
                                <option value="jquery">jquery</option>
                                <option value="react">react</option>
                                <option value="html">html</option>
                                <option value="css">css</option>
                            </select>
                        </div>
                        <div>
                            <label for="blogTitle">제목</label>
                            <input type="text" id="blogTitle" name="blogTitle" class="inputStyle" required>
                        </div>
                        <div>
                            <label for="blogContents">내용</label>
                            <textarea name="blogContents" id="blogContents" rows="20"  class="inputStyle" required></textarea>
                            <!-- <div id="editor"></div> -->
                        </div>
                        <div class="mt30">
                            <label for="blogFile">파일</label>
                            <input type="file" name="blogFile" id="blogFile" accept=".jpg, .jpeg, .png, .gir" placeholder="jpg, igf, png 파일만 넣을 수 있습니다. 이미지 용량은 1메가를 넘길 수 없습니다.">
                        </div>
                        <button type="submit" class="btnStyle3">저장하기</button>
                    </fieldset>
                </form>
            </div>
            <div class="right">
            </div>
        </div>
        <!-- blog__inner -->
    </main>
    <!-- //main -->
        
    <?php include "../include/footer.php" ?>
    <!-- //footer -->

    <script src="https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js"></script>
    <script>
        const Editor = toastui.Editor;
 
        const editor = new Editor({
            el: document.querySelector('#editor'),
            height: '1000px',
            initialEditType: 'markdown',
            previewStyle: 'vertical'
        });
    </script>
</body>
</html>

 

게시글 보기

<?php
    include "../connect/connect.php";
    include "../connect/session.php";

    if(isset($_GET['blogID'])){
        $blogID = $_GET['blogID'];
    } else {
        Header("Location: blog.php");
    }


    $blogSql = "SELECT * FROM blog WHERE blogID = '$blogID'";
    $blogResult = $connect -> query($blogSql);
    $blogInfo = $blogResult -> fetch_array(MYSQLI_ASSOC);

    // echo "<pre>";
    // var_dump($blogInfo);
    // echo "</pre>";
?>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>게시판</title>

    <?php include "../include/head.php" ?>
</head>
<body class="gray">
    
    <?php include "../include/skip.php" ?>
    <!-- //skip -->

    <?php include "../include/header.php" ?>
    <!-- //header -->

    <main id="main" class="container">
    <div class="blog__title" style="background-image:url(../assets/blog/<?=$blogInfo['blogImgFile']?>)">
            <span class="cate"><?=$blogInfo['blogCategory']?></span>
            <h2 class="title"><?=$blogInfo['blogTitle']?></h2>
            <div class="info">
                <span class="author"><?=$blogInfo['blogAuthor']?></span>
                <span class="date"><?=date('Y-m-d', $blogInfo['blogRegTime']) ?></span>
                <div class="modify">
                    <a href="#">수정</a>
                    <a href="#">삭제</a>
                </div>
            </div>
        </div>
        <!-- //blog__title -->
        <div class="blog__inner">
            <div class="left mt70">
                <div class="blog__contents">
                    <h3><?=$blogInfo['blogTitle']?></h3>
                    <?=$blogInfo['blogContents']?>
                </div>
            </div>
            <div class="right mt70">
                <div class="blog__aside">
                    
                    <?php include "../include/blogtitle.php" ?>
                    
                    <?php include "../include/blogCate.php" ?>

                    <?php include "../include/blogLatest.php" ?>

                    <?php include "../include/blogPopular.php" ?>

                    <?php include "../include/blogComment.php" ?>

                </div>
            </div>
        </div>
        <!-- //blog__inner -->
        <div class="blog__article">
            <h3>관련글</h3>
            <div class="cards__inner col4 line0">
                <?php include "../include/blogArticle.php" ?>
            </div>
        </div>
        <!-- //blog__article -->
        <div class="blog__comment">
            <h3>댓글쓰기</h3>
            <div></div>
        </div>
        <!-- //blog__comment -->
    </main>
    <!-- //main -->
        
    <?php include "../include/footer.php" ?>
    <!-- //footer -->
</body>
</html>