오늘도 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="조회하기"> 조회하기 연속 두 번 누르면 처음으로 돌아갑니다.<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 |
---|