본문 바로가기
프로젝트/php 미니 프로젝트

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

by 꽁이꽁설꽁돌 2024. 5. 25.
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>

     

     

     

    반응형