C-log

⚡PHP select_id : DATABASE 본문

Server/⚡ver0

⚡PHP select_id : DATABASE

4:Bee 2023. 10. 22. 00:28
728x90

우리가 제작한 형태의 작업물의 전체적 흐름의 모양은 아래 이미지와 같다.

id값의 의미

id값은 단순히 정보를 URL에 특정 값으로 지정해주는 것이다. 한마디로 특정 페이지에 속성 값을 부여해서 구분짓기 위함이다. 즉, 이것이 데이터베이스와 연동을 했을 때 값을 주고 받을 때 또는 특정 값을 찾을 때 식별하기 위함이다.

이제 우리는 id값을 활용해야 하기 때문에 DATABASE를 연결해보자 우리가 선택한 DATABASE는 MySQL이다. 우리가 구성해 놓은 GET과 POST의 페이지를 구별해야한다. 우리가 구성해 놓은 GET과 POST 모두다. input 태그를 이용하게 되어 있다. 이를 구별하기 위해서 GET페이지에서는 정말 데이터를 가져오는 역할로만으로 CRUD 중 Read의 역할을 할 수 있다. 여기서는 페이지를 접속 또는 클릭했을 시에만 로그의 데이터를 보여주는 페이지로 구성 할 것이다. 그리고 POST페이지에선 Create역할을 하는 데이터 입력 페이지로 구상 할 것이다. 

첫번째로 Read 페이지를 생성해야 한다. 그래서 우리는 아래 표와 같은 스키마를 php파일에 연동할 것이다. 해당 스키마를 코딩해보자. (아래 이미지는 스키마의 표 구성이다.)

사용자 이름 접속 날짜 접속 위치
$user $contact_date $location_data

데이터베이스의 이름은 ver0php라고 작성했다.

MariaDB [ver_0]> CREATE TABLE contactlog (
    ->   id INT(11) NOT NULL AUTO_INCREMENT,
    ->   사용자_이름 VARCHAR(100) NULL,
    ->   접속_날짜 DATETIME NOT NULL,
    ->   접속_위치 VARCHAR(100) NULL,
    ->   PRIMARY KEY(id)
    -> );
Query OK, 0 rows affected (0.592 sec)

이제 기본 적으로 값을 보여줄 INSERT문을 따로 작성해 줄 것이다.

MariaDB [ver_0]> INSERT INTO contactlog (사용자_이름,접속_날짜,접속_위치)VALUES('user1',NOW(),'Seoul');
Query OK, 1 row affected (0.005 sec)

MariaDB [ver_0]> SELECT * FROM contactlog;
+----+-------------+---------------------+-----------+
| id | 사용자_이름 | 접속_날짜           | 접속_위치 |
+----+-------------+---------------------+-----------+
|  1 | user1       | 2023-10-21 21:58:50 | Seoul     |
+----+-------------+---------------------+-----------+
1 row in set (0.000 sec)

이렇게 만들어주고 페이지에 우리의 데이터를 접속할 수 있게 아래 코드를 추가해주자.

<!-- PHP_zone -->
<?php
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect(
  'localhost',
  'root',
  '******',
  'ver_0'
);

$sql = "SELECT * FROM contactlog";
$result = mysqli_query($conn, $sql);

$check = "";


if ($conn) {
  $check = "CONTACT DATA!<br>";
} else {
  $check = "<h1>CAN'T LOAD DATA</h1><br>Check this your DATABASE!!";
}

?>

php에서 sql이 연동이 되면 연동이 되었다고 웹브라우저에서 표기되게 코드를 작성했다. 이제 우리가 기존에 있는 GET과 POST페이지 외에 버튼을 하나 생성해서 그 버튼을 누르면 해당 데이터 값이 적용이 되게 작성을 할 것이다.

<!-- HTML_zone -->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Link_A</title>
</head>

<body>
  <script>
    ...
  </script>

  <h2>Select type</h2>
  <?= $check ?>
  <?= $title ?> <br>

  <a href="Link_get.php?id=get_type">GET</a>
  <a href="Link_post.php?id=post_type">POST</a>
  <form action="process_create.php" method="POST" onsubmit="alert('Check your Click!');">
    <p><input type="submit"></p>
  </form>

  <br><br>
  <a href="../contact_URL.php">BACK</a>
</body>

</html>

이렇게 HTML코드를 작성해서 process_create.php파일로 넘어가서 원하는 데이터를 전송하게 할 것이다. HTML코드에 조금 더 코드를 변경해야 하는 부분이 있어서 아래 코드로 수정해주자.

<a href="Link_get.php?id=get_type">GET</a>
  <a href="Link_post.php?id=post_type">POST</a>
  <form action="./process_create.php" method="POST" onsubmit="alert('Check your Click! : ');">
    <input type="hidden" id="input_location" name="location" value="Tokyo">
    <p><input type="submit"></p>
  </form>

우선은 value 값을 "Tokyo"라고 해놓기는 했지다. 나중에는 실시간으로  value값을 변경을 해서 각 사용자들의 위치로 저장될 수 있게 할 것이다. 아래 process_create.php파일을 참고하자.

<?php
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect(
  'localhost',
  'root',
  '*****',
  'ver_0'
);

$filtered = array(
  'location' => mysqli_real_escape_string($conn, $_POST['location'])
);

$sql = "
INSERT INTO contactlog (사용자_이름, 접속_날짜, 접속_위치)
VALUES(
  'user1',
  NOW(),
  '{$filtered['location']}'
  )
";

$result = mysqli_query($conn, $sql);

if ($result === false) {
  echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요.<br> check your DATABASE!';
  echo mysqli_error($conn);
  error_log(mysqli_error($conn));
} else {
  echo '성공했습니다.<a href="Link_A.php">돌아가기</a>';
}

이와 같이 코드를 작성해야하는데 여기서 문제는 우리가 실시간으로 변경되는 위치의 값을 js에서 html로 php로 sql로 넘겨야하는데 아직 이부분을 구현하기 어렵다. 다른 sql의 저장을 한 부분들을 sql을 통해서 확인 할 수 있다. .어쩌면 create를 하는 영역은 아니지만 작은 부분의 create를 연습해보고 실험 해보는 것이다. 위의 과정을 간단하게 그림으로 정리해 볼 것이다. 이렇게 구현을 하면 실시간으로 출석을 하는 기능을 만들어 낼 수 있는 것이다.

728x90

'Server > ⚡ver0' 카테고리의 다른 글

⚡PHP API : 날짜 그리고 나의 위치  (0) 2023.10.30
⚡PHP select_id : JS&PHP&MySQL  (0) 2023.10.23
⚡PHP change_id : Ajax  (0) 2023.10.21
⚡PHP change_id  (0) 2023.10.21
⚡PHP로 URL의 id값 가져오기 : GET/POST  (0) 2023.10.18
Comments