원하는 주소를 저장하는 프로그램 : 북마크 만들기
🗂️ 구상
:리스트 업 화면

<a href="add.php">북마크 추가</a>
-add 로 넘어가게 하면 된다. 북마크 주소를 추가할 수 있도록!
: 입력 창!

-저장하기를 누르면 addProc 으로 넘어가며 입력한 text (주소)가
POST 방식, 폼 방식으로 넘어가게 된다.
print_r($_POST);
=>잘 넘어오는 지 확인

POST 로 넘어온 데이터를 출력할 수있다.
잘출력됨 => 잘넘어옴.
: 데이터 들어가는 저장소 만들기 !!

Text 로 입력된 주소 -> 잘 정리해서 데이터 베이스 url 에 넣어줘야함.

엔터키를 기준으로 세개의 주소를 넣어줬는데, 저장하기를 누른뒤
addProc.php 에 넘어온 값을 확인해보면

\r\n 으로 구분이 되어지는 걸 볼 수있음.
따라서 이걸 기준으로 나누어 정리해본다.
정리할 때 => explode 함수 사용
$list = explode('\r\n', $memo);
print_r($list);

기준에 맞추어 문자열이 나누어져 배열로 잘 나뉘어졌다.
✏️explode() 함수 : 문자열을 특정 문자열로 나누어 배열로 만들어주는 함수
이제 정리를 했으니 저장을 해준다.
✏️ foreach 반복문
- 다른 제어문과 다르게 '배열'에만 동작하는 함수이다.
- 배열의 키와 value 값을 구분하여 사용가능하게 해준다.
- 배열의 데이터를 가져올 때 주로 많이 사용하는 함수.
foreach ($list as $url){
echo "<li>";
echo $url;
} //데이터 가져오기

foreach문을 사용 -> 데이터 분리 -> 리스트 형식으로 정리.
데이터 DB에 삽입 & 연결
$query = "insert into bookmark(url, regedate) values('$url', now())";
mysqli_query($connect, $query);

데이터가 들어감 (DB 에)
: 저장한 북마크 url 불러와서 내역으로 보여주기
✏️ mysqli_fetch_array () 함수 : mysql 에서 데이터를 배열형태로 가져오게 하는 함수.
= mysqli_fetch_assoc() 함수도 거의 동일하게 사용 가능하다.
테이블 내에 정렬해야 되기 때문에 테이블 태그 안에다가 넣어줘야함
while ($row = mysqli_fetch_assoc($result)) {
?>
<tr>
<td><?=$row['idx']?></td>
<td><?=$row['url']?></td>
<td><?=$row['regedate']?></td>
</tr>
<?php }?>
결과 :
저장한 북마크 리스트가 불러와짐
<td>
<a href="<?=$row['url']?>" target="_blank">
<?=$row['url']?></a>
</td>
링크를 누르면 실제 그 사이트로 접속할 수 있게 할 땐
a 태그로 url 데이터를 넣어주면 됨.
target = "_blank" : url 접속시 새창을 띄워줌.
: 저장한 북마크 삭제하기
<td><a href="del.php?idx=<?=$row['idx']?>"
onclick="return confirm('정말 삭제하시겠습니까?')">삭제</a></td>
삭제칸 생성.
onclick = 눌렀을 때 삭제할 지 물어보고 삭제
<?php
include "lib.php";
$idx = $_GET['idx'];
$idx = mysqli_real_escape_string($connect, $idx);
$query = "delete from bookmark where idx='$idx'";
$result = mysqli_query($connect, $query);
?>
<script>
location.href="index.php";
</script>
링크가 중복적으로 들어가는 경우와
공백을 링크로 인식하는 걸 거르기

trim () 함수 : 문자열의 공백을 없애주는 함수
$url = trim($url);
if(!$url) continue;
url 데이터를 받을때 공백을 없애주고,
만약에 url 자체가 없으면 아예 다음으로 넘어가지 않고 다시 반복문으로 돌아감
- continue & break 제어문
continue : 잔여 코드 건너 뛰고 반복문 처음으로 돌아가게 하는 함수
break : 코드 블록 걍 탈주
: 데이터를 DB에 저장하기 전에 싹 불러와서 비교대조한다음
같으면 넣지 않고, 다르면 넣는 방식으로 진행.
$query = "select * from bookmark";
$result = mysqli_query($connect, $query);
$row = mysqli_fetch_array($result);
if($row['idx']){
continue;
}
같은게 있으면 반복문 맨처음으로 돌아가도록 한다. (다음으로 넘어감)
: url 을 방문할 때마다 방문횟수가 증가하도록.
DB에 방문횟수를 넣을 데이터 변수 하나를 추가로만들어준다.
(이번엔 'cnt' 라는 변수로 새로 추가해줌)

대충 구성을 해준다.
방문횟수 추가를 위해서는 url을 눌러서 그 페이지로 넘어가기 전에
작업을 해줘야한다.
기존에 바로 url 주소로 넘어갔던 것을
go.php 로 넘어가도록 설정해준다.
<a href="go.php?idx=<?= $row['idx']?>" target="_blank">
<?=$row['url']?></a>
**
+) GET POST **
폼 액션 태그로 넘어가면 주로 POST 방식,
a 태그를 통해 ?__ 이런식으로 주소로 넘어가는 경우 GET 방식이다.
: 방문횟수 처리
<?php
include "lib.php";
$idx = $_GET['idx'];
$idx = mysqli_real_escape_string($connect, $idx);
$query = "select * from bookmark where idx='$idx'";
$result = mysqli_query($connect, $query);
$row = mysqli_fetch_array($result);
$query ="update bookmark set cnt=cnt+1 where idx='$idx'";
$result = mysqli_query($connect, $query);
?>
<script>
location.href="<?=$row['url']?>";
</script>