프로젝트/php 미니 프로젝트

[php] 공부 정리 게시물 올리기

꽁이꽁설꽁돌 2024. 5. 25. 16:39
728x90
반응형

목차

     

    완성한 모습

    공부 정리 올리는 페이지(이미지 첨부가 가능하다)

     

    정리한 페이지에 들어간 모습(댓글 작성도 가능하다)

     

    주석을 달아서 주요 로직은 설명했다

    코드가 너무 길어서 필요한 부분만 따로 뺸 것이므로 참고하고 수정하면 좋을 것 같다.

     

    html폼 작성 코드

      <form method="post" enctype="multipart/form-data" action="">  //이미지 삽입을 해서 enctype써야함
    
                    <div class="form-group">
                        <label for="userCategory">User Category</label>
                        <input type="text" class="form-control" id="userCategory" name="user_category" required>
                    </div>
                    <div class="form-group">
                        <label for="userContent">User Content</label>
                        <textarea class="field-control" id="userContent" name="user_content" required></textarea>
                    </div>
                    <div class="form-group">
                        <label for="userSummary">User Summary</label>
                        <textarea class="field-control" id="userSummary" name="user_summary" required></textarea>
                    </div>
                    <div class="form-group">
                        <label for="image">Image</label>
                        <input type="file" class="form-control-file" id="image" name="image" required>
                    </div>
                    <button type="submit" class="btn btn-custom btn-block" name="submit">추가</button>
                </form>

     

    php데이터 등록 코드

    <?php
    session_unset(); //세션 변수 초기화
    session_start();   //세션 시작
    // 데이터베이스 연결
    $db = mysqli_connect('localhost', 'root', '', 'userdata') or die ('Unable to connect. Check your connection parameters.');
    
    // 추가 버튼이 클릭되었을 때
    if(isset($_POST['submit'])){
    
        $id = $_SESSION['Login_id'];  //세션에서 아이디를 가져온다
        $category = $_POST['user_category'];  //버튼을 누렀을 시 post data를 가져온다
        $content =  $_POST['user_content'];
        $summary =  $_POST['user_summary'];
        $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));  //php로 이미지 가져오는 코드
        $time = date("Y-m-d H:i:s");  //현재 시간 데이터로 저장
        
    	//cehck_query로 내가 원하는 곳에 데이터를 넣어준다
        $check_query = "SELECT Study_id FROM tostudytable WHERE Login_study_id = '$id' ORDER BY SID DESC LIMIT 1";
        $result = mysqli_query($db, $check_query);
        $row = mysqli_fetch_assoc($result);
        $user_id = $row['Study_id'] ?? 0;
        $user_id++; // Increment the User_id
        
        //데이터를 나의 테이블에 넣어준디
        $query = "INSERT INTO tostudytable (Login_study_id, Study_id, User_category, User_content, User_summary, Image, Create_date) VALUES ('$id','$user_id','$category', '$content','$summary', '$image','$time')";
        mysqli_query($db, $query) or die(mysqli_error($db));  //console.log와 같은 역할
        header("Location:../board/TodoBoardPage.php");
        exit;  //세션에서 나가준다
    }
    
    ?>

     

    php로 데이터 표시 코드

          <div class="container">
                    <?php
                      $login_board_id = $_GET['Login_board_id'];  //그 유저의 아이디
                      $User_id = $_GET['User_id'];  //게시물 번호
                      
                  	//게시판에서 링크를 눌렀을 떄 카테고리와 아이디가 일치하는 게시물을 가져온다
                      $query = "SELECT * FROM tostudytable WHERE Login_study_id = '$login_board_id' AND Study_id = '$User_id'";
                      $result = mysqli_query($db, $query) or die(mysqli_error($db));
                     while ($row = mysqli_fetch_assoc($result)): ?>
                    <div class="card">
                        <img src="data:image/jpeg;base64,<?php echo base64_encode($row['Image']); ?>" alt="User Image">
                        <h1>-<?php echo htmlspecialchars($row['User_category']); ?>-</h1>
                        <p></p>
                        <h1>내용</h1>
                        <div class="card-content"><?php echo htmlspecialchars($row['User_content']); ?></div>
                        <h1>요약</h1>
                        <div class="card-content"><?php echo htmlspecialchars($row['User_summary']); ?></div>
                        <p class="date"><?php echo htmlspecialchars($row['Create_date']); ?></p>
                    </div>
                    <?php endwhile; ?>
    
        </div>

     

     

     

    반응형