본문 바로가기
WEB HACKING/웹 해킹[실습]

Php로 웹 개발하기 : 주소 검색(1)

by madevth 2021. 10. 29.
반응형

이번에는 웹 사이트에 주소 검색 기능을 추가해보자.

주소 검색 기능은 크게 세 단계로 나누어 진행할 예정이다.

(1) 테스트 DB 구축 및 화면에 결과 출력, (2) DB 정교히 구축 및 CSS 추가 정도로 생각하고 있다.

 

DB에서 결과를 가져와서 화면에 출력하는 것부터 해보자.

우선 메인 페이지에서 주소 검색 페이지로 향하는 버튼을 넣어준다.

<?php
    session_start();
    if(isset($_GET['session'])){
        session_destroy();
        echo "<script>window.location.href='index.html';</script>";
    }
    else if (isset($_SESSION['id'])){
        echo "<h2>Welcome {$_SESSION['id']}!! This is Main Page.</h2>";
        echo "<button id = 'addr-btn' onclick = \"location.href = 'address.html'\"}>주소 검색</button>";
        echo "<button id = 'signup-btn' onclick = \"location.href = 'board.html'\"}>게시판</button>";
?>

세션 값이 존재하면 Main Page라는 문구를 출력한 후 주소 검색이나 게시판 중에 선택할 수 있는 버튼을 만들어주었다.

따옴표 안에 따옴표가 들어가야 할 때는 하나는 큰 따옴표, 하나는 작은따옴표를 써주곤 했는데, 이번에는 따옴표 안에 따옴표 안에 따옴표를 적어야 해서 \"로 적어주었다.

 

CSS 적용 전의 메인 페이지

 

<body>
    <div>
        <div>
            <form action = "address.php" method = "post">
                <input id = "search_addr" name = "addr" type = "text" placeholder="시, 구를 입력해주세요." />
                <input type = "submit" value = "주소검색" id = "search_btn" />
            </form>
        </div>
        <div></div>
    </div>
</body>

간단하게 form안에 주소 검색하는 칸과 검색 버튼을 만들어주고, post 방식으로 넘겨주었다.

 

 

이제 간단한 테스트용 DB를 만들어보자.

mysql> CREATE table `address` (
    ->     `sigu` varchar(30),
    ->     PRIMARY KEY(sigu)
    -> );
mysql> insert into `address` values ('서울시 송파구');
mysql> insert into `address` values ('서울시 서초구');
mysql> insert into `address` values ('인천시 연수구');

 

이제 address 테이블에는 3개의 데이터가 있다. 이 데이터를 화면에 출력해보자.

<?php
    if(isset($_POST['addr'])){
        $addrs = $_POST['addr'];

        $conn = mysqli_connect('localhost', 'ID', 'PW', 'DBname');
        $sql = "SELECT * FROM address where sigu like '%$addrs%';";
        $result = mysqli_query($conn, $sql);
        
        if(mysqli_num_rows($result) > 0){
            while($row = mysqli_fetch_array($result)){
                echo $row['sigu'];
                echo "<br />";
            }
        } else{
            echo "<script>alert('주소 없음.')</script>";
        }
        mysqli_close($conn);
    } else{
        echo "<script>alert('address 입력해주세요.')</script>";
        echo "<script>window.location.href='address.html';</script>";
    }
?>

우선 $sql의 SQL Query를 살펴보면, 사용자가 입력한 주소값을 포함되는 데이터는 모두 가져오기 위하여 like와 %를 이용했다. 

if문 안에서는 mysqli_num_rows($result)가 0보다 크다면, 즉 Query에 해당하는 Set이 존재한다면, while문을 통해 존재하는 Set들을 가져온다. 그래서 while문 안에서 $row는 첫 번째 set부터 시작해서 마지막 set까지 차례대로 해당된다.

 

결과적으로 서울시를 검색하면 서울시가 들어가는 두 행 서초구와 송파구를 가져온다.

화면에 출력하는 기능을 만들어주었으니, 다음에는 DB의 개수를 늘리고 CSS를 적용해보자.

반응형

댓글