본문 바로가기
php

php 테이블 조회 search

by 최고집이사 2018. 4. 6.

오늘도 php를 공부하다가 테이블을 조회하는 이른바 search 에 성공해

내 자신의 기록으로 남겨 본다.



php 테이블 조회 search 


본인이 사용하는 mysql 은 버전이 5.1 이다.

이건 테크노트가 5.2 까지만 지원해서 선택한 것으로 

테크노트 공부도 끝났으니 조만간 버전 업을 해야겠다.

fulltext search 방법이 있다고 하던데 이 방법은 나중에 공부하기로 하고

CONCAT에 LIKE 문으로 검색하는 방법에 대해서 쓴다.


search.php : 본문 내 아무 곳에나 삽입해도 되나 form 시작 위 부분에 꼭 들어가야 한다. 


<?php

$search= $_POST['search'];

$how = $_POST['how'];


include("../config.php"); //아래 conn 에 직접 적어도 됨.

$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (mysqli_connect_errno()){

  echo "connect error: " . mysqli_connect_error();

}

//mysql_query(" set names euckr ");

$sql = "SELECT * FROM 테이블명 ORDER BY no DESC"; // no 칼럼 내림차순으로 정렬


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

if(!mysqli_query($conn, $sql)){

echo "";

echo("sql error: " . mysqli_error($conn));

}

?>


search.php 중 form 부분 리스트 출력과 검색


<form action="serach_post.php?how<?=$how?>" method="post">

            <input type="text" name="how" id="how" placeholder="검색어를 입력하세요!" size="70"><br><br>

            <input type="submit" name="search" id="search" value="조회하기">조회하기 연속 두 번 누르면 처음으로 돌아갑니다.<br><br> //두 번 누르면 검색 값이 없어서 리스트가 출력된다.


            <table width="100%" style="margin:auto">

                <tr>

    <th>순서</th>

    <th>1</th>

    <th>2</th>

                    <th>3</th>

    <th>4</th>

                    <th>5</th>

                    <th>6</th>

                    <th>7</th>

   <th>8</th>

                    <th>9</th>

                    <th>10</th>

                    <th>11</th>

   <th>12</th>

                </tr>


      

                <?php while($row = mysqli_fetch_array($result)):?>

                <tr>

                    <td><?php echo $row['no'];?></td> //순서 칼럼명

                    <td><?php echo $row['1'];?></td>

                    <td><?php echo $row['2'];?></td>

                    <td><?php echo $row['3'];?></td>

    <td><?php echo $row['4'];?></td>

                    <td><?php echo $row['5'];?></td>

                    <td><?php echo $row['6'];?></td>

                    <td><?php echo $row['7'];?></td>

   <td><?php echo $row['8'];?></td>

                    <td><?php echo $row['9'];?></td>

                    <td><?php echo $row['10'];?></td>

                    <td><?php echo $row['11'];?></td>

   <td><?php echo $row['12'];?></td>

                </tr>

                <?php endwhile; ?>

            </table>

        </form>

숫자는 검색할 칼럼명.


테이블명 의 리스트가 'no' 의 순서로 출력되고 리스트 위에 조회하기가 나타난다.


위 예제 이미지처럼 나타난다. 


serach_post.php



<?php

$search= $_POST['search'];

$how = $_REQUEST['how'];


include("../config.php");

$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (mysqli_connect_errno()){

  echo "connect error: " . mysqli_connect_error();

}

//mysql_query(" set names euckr ");

//$sql = "SELECT * FROM `테이블명` ORDER BY no DESC";

$sql = "SELECT * FROM  `테이블명` WHERE CONCAT(`1` , `2` , `3` , `4` , `5` , `6` , `7` , `8` , `9` , `10`) LIKE '%".$how."%' ORDER BY no DESC";


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

if(!mysqli_query($conn, $sql)){

echo "";

echo("sql error: " . mysqli_error($conn));

}

?>

$how로 검색해서 아래 form 리스트로 출력


serach_post.php 중 검색된 리스트 출력 부분


<form action="serach_post.php?how<?=$how?>" method="post">

            <input type="text" name="how" id="how" placeholder="검색어를 입력하세요!" size="70"><br><br>

            <input type="submit" id="search" name="search" value="조회하기">&nbsp;&nbsp;조회하기 연속 두 번 누르면 처음으로 돌아갑니다.<br><br>

<table width="100%" style="margin:auto">

                <tr>

    <th>순    서</th>

    <th>1</th>

    <th>2</th>

                    <th>3</th>

    <th>4</th>

                    <th>5</th>

                    <th>6</th>

                    <th>7</th>

   <th>8</th>

                    <th>9</th>

                    <th>10</th>

                    <th>11</th>

   <th>12</th>

                </tr>

      

                <?php while($row = mysqli_fetch_array($result)):?>

                <tr>

                    <td><?php echo $row['no'];?></td> //순서 칼럼명

                    <td><?php echo $row['1'];?></td>

                    <td><?php echo $row['2'];?></td>

                    <td><?php echo $row['3'];?></td>

    <td><?php echo $row['4'];?></td>

                    <td><?php echo $row['5'];?></td>

                    <td><?php echo $row['6'];?></td>

                    <td><?php echo $row['7'];?></td>

   <td><?php echo $row['8'];?></td>

                    <td><?php echo $row['9'];?></td>

                    <td><?php echo $row['10'];?></td>

                    <td><?php echo $row['11'];?></td>

   <td><?php echo $row['12'];?></td>

                </tr>

                <?php endwhile; ?>

            </table>


위 이미지처럼 검색이 되고 계속해서 조회할 수 있도록 조회하기를 삽입해 놓았다.


위에서 이상한 부분이 있다. 

바로 serach_post.php 이 하나만으로도 조회가 가능하다는 것이다.

serach_post.php 에서 두 번 클릭하면 모든 리스트가 출력되고 다시 조회해도 조회결과가

출력이 된다.


이건 본인이 필요에 의해서 두 부분으로 나눈 것이므로 그냥 조회가 목적이라면

serach_post.php 부분만 사용하면 된다.


두 분으로 나눈 이유는 serach_post.php 부분에서 출력된 리스트를 삭제 및 수정하기 위해

나눈 것으로 나중에 출력된 부분을 search_modify.php 와 serach_delete.php로 버튼을 만들어

삭제 및 수정하게 만들 것이다.


참고 위 serach_post.php 부분에서 버튼을 만들어 serach_modify.php로 보내도 인식 못함.

초보자의 애환으로 이 부분에서 참 많이 절망했음. 그러나 어찌해서 찾음.

값을 보내고 받을 무언가가 필요. serach_post.php 부분 아래처럼 수정하면 됨.


serach_post.php



<td><input type="text" name="no" id="no" value="<?php echo $row['no'];?>" readonly></td>

<td><input type="text" name="no" id="no" value="<?php echo $row['1'];?>"></td>

.......





고수들이 보기엔 허접해 보이겠지만 지금 막 성공한 거라 잊어버리기 전에 수정하기 전에

나를 위해 적어 놓는다. php를 배운 지도 이제 한 달이 되어간다.

초보자라 처음 배울 땐 단단하게 얼어버린 땅을 삽 한자루로 파야하는 난감함과 고단함에

많이 지치기도 했었지만 그래도 어찌어찌해서 성공하면 그 고단함은 말로 표현 못할 희열로 다가온다.

 


전문가의 고집으로 서비스하는 포장이사전문업체 최고집이사



 



 

'php' 카테고리의 다른 글

mysql 자동증가값(auto_increment) 초기화  (0) 2018.03.29