[TIL] APM 환경 게시판 제작

Captainjack·2022년 10월 31일
0

TIL

목록 보기
241/258

딱 원하는 환경에 게시판 제작을 강의한 유튜버 분이 계셔서

시간이없기에 코드를 그대로 가져옴

https://youtu.be/OWKWZhRPWjk


Error debug

디비연결시 발생하는 에러를 표시해 줌.

  if(!$conn) {
    echo 'connect error'. mysqli_connect_error();
  } else {
    echo "connect success<br>";
  }

https://dev.mysql.com/doc/workbench/en/wb-generating-php.html

구문 에러를 표시해 줌

if(something) { 
    echo "Nah";
    error_log(mysqli_error($conn));
  } else {
    echo "OK";
  }

CRUD

데이터 Insert

  $user_name = $_POST['name'];
  $user_msg = $_POST['message'];

  $sql = "insert into msg_board (name, message) values ('$user_name', '$user_msg')";
  // 간단하게 insert문을 사용하여 구현 가능.
  $reuslt = mysqli_query($conn, $sql);

  if($result === false) { // 쿼리응답 불린으로 판독
    echo "fail<br>";
    error_log(mysqli_error($conn));
  } else {
    echo "saved<br>";
  }
  mysqli_close($conn);
  echo "<hr/><a href='index.php'>move to main page</a>;";

CRUD

게시글 View

                   
<?php
      $conn = mysqli_connect("localhost", "admin", "-", "db");
      $view_num = $_GET['number'];
      $sql = "select * from msg_board where number = '$view_num'";
      	//게시글에 해당하는 번호로 매칭되는 값 불러옴
      $result = mysqli_query($conn, $sql);
?>

<!DOCTYPE html>

<html>
  <head></head>
  <body>
    <?php
      if($row = mysqli_fetch_array($result)) {
    ?>
    <h3>board num: <?=$row['number'] ?></h3>
    <h3>name: <?=$row['name'] ?></h3>
    <div>
      <?= $row['message'] ?>
    </div>

    <?php
      }
      mysqli_close($conn);
    ?>

    <p><a href="update.php?number=<?= $row['number'] ?>">EDIT !!</a></p>
     <p><a href="index.php">move to previous page</a></p>
  </body>
</html>

신기했던 부분이 <?php 구문을 괄호를 잘라서 태그안에 넣어서 작성하는 부분 지금보니까 줄 바꿈이 필요할 듯.


CRUD

게시글 수정


<?php
      $conn = mysqli_connect("localhost", "admin", "-", "db");
      $view_num = $_GET['number'];

      $sql = "select * from msg_board where number = '$view_num'";
      $result = mysqli_query($conn, $sql);
?>


<body>
  <h1 style="color: green;">UPDATE</h1>
  <?php
    if($row = mysqli_fetch_array($result)) {

  ?>
  <form action="insert_update.php" method="post">
    <input type="hidden" name="number" value="<?= $view_num ?>">
    <p>
      <label for="name">name: </label>
      <input type="text" id="name" name="name" value="<?= $row['name'] ?>">
    </p>

    <p>
      <label for="message">message: </label>
      <textarea id="message" name="message" cols="30" rows="10"><?= $row['message'] ?></textarea>
    </p>
    <input type="submit" value="write">
  </form>
  <?php
    }
    mysqli_close($conn);
  ?>
</body>

히든을 이용하여 $view_num을 보내줌

받는 쪽은

<?php
  $conn = mysqli_connect("localhost", "admin", "-", "db");

  $number = $_POST['number'];
  $user_name = $_POST['name'];
  $user_msg = $_POST['message'];

  $sql = "update msg_board set name = '$user_name', message = '$user_msg' where number = '$number'";
  $reuslt = mysqli_query($conn, $sql);

  if($result === false) {
    echo "fail<br>";
    error_log(mysqli_error($conn));
  } else {
    echo "updated<br>";
  }
  mysqli_close($conn);
  echo "<hr/><a href='index.php'>move to main page</a>;";
?>

$_POST['number'] 는 태그에

<input type="hidden" name="number" value="<?= $view_num ?>">

매칭되는 값으로 받아짐 POST로받는건 form이 POST로 보내기 때문


CRUD

게시글 삭제

<!DOCTYPE html>

<html>
  <head></head>
  <body>
    <h1>BOARD</h1>
    <h2>Delete result</h2>
    <ul>
    <?php
      $conn = mysqli_connect("localhost", "admin", "-", "db");
      if(!$conn) {
        echo 'fail'. mysqli_connect_error();
      }
      $user_delnum = $_POST['delnum'];

      $sqlDEL = "delete from msg_board where number = '$user_delnum'";
      mysqli_query($conn, $sqlDEL);

      $sql = "select * from msg_board";
      $result = mysqli_query($conn, $sql);
      $list = '';
      while($row = mysqli_fetch_array($result)) {
        $list = $list."<li>{$row['number']}: <a href=\"view.php?number={$row['number']}\">{$row['name']}</a></li>";
      }
      echo $list;
      mysqli_close($conn);
    ?>
    </ul>
    <p>
      <?php
        echo "<h2 style=\"color: red;\">board num of '$user_delnum' is deleted </h2>";
      ?>
    </p>
    <hr>
      <p><a href="index.php"> move to previous page </a></p>
  </body>
</html>

더블 쿼터안에 또 더블 쿼터를 쓸 수가 없기 때문에

 $list = $list. // php에서 점은 문자열 연결(+)
 "<li>
   {$row['number']}: 
     <a href=\"view.php?number= {
       	 $row['number']}\"> {$row['name']}
     </a>
 </li>";

\" 를 이용하여 백슬러쉬를 앞에다가 명시해주면
백슬러쉬 뒤에있는 문자는 그 문자 스트링으로 인식한다.
그래서 다시 선언 가능

<?php
  $test = 3;
?>

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <div>Is it work?</div>
    <?php
      $list = "<li>123123</li>";
      $list2 = "<li>{$test}</li>";
      echo $list;
      echo $list2;
    ?>
  </body>
</html>
~       

php구문 안에 변수는 { }안에 선언 해줘야 함.

profile
til' CTF WIN

0개의 댓글