๐ก Oracle DB๋ฅผ ์ฐ๋ํ์ฌ PHP๋ฅผ ํ์ฉํ ๋๋ก๋ช ์ฃผ์ ๊ฒ์ ์ฌ์ดํธ ๊ตฌํ
โค๏ธ OS : Rocky Linux
โค๏ธ WAS : Apache
โค๏ธ DB : Oracle
โค๏ธ LANGUAGE : html, php
โค๏ธ TOOL : intelliJ IDEA, XShell, Toad for Oracle
↓↓↓ ๋ฏธ๋ฆฌ ๋ณด๊ณ ์ค๋ฉด ์ข์ ๊ธ ↓↓↓
- APM ๊ตฌ๋์๋ฆฌ
- ๊ฑด๋ฌผ DB ์ด๊ธฐ ์ธํ
↓↓↓ ์ค๋ผํด ์ฐ๋ ์๋ฆฌ์ฆ 1~4ํ ↓↓↓
- 1ํ
- 2ํ
- 3ํ
โ ์ด๊ธฐ ์ค๊ณ
1. ์๋๋ช , ์๊ตฐ๊ตฌ๋ช , ์๋ฉด๋๋ช ์ selectBox๋ก ๊ตฌํํ๋ค.
๋ฐ๋ผ์ DB์์ ๊ฐ์ ธ์จ ์ ๋ณด๋ฅผ 'โฝ' ๋ฒํผ์ ๋๋ ์ ๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ผ ์ ์๋๋ก ํ๋ค.
2. ์ ํํ ๊ฐ์ ๋ง์ถฐ์ filtering ๋๊ฒ ๊ตฌํํ๋ค.
๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ์๋๋ช ์์ '๊ฒฝ๊ธฐ๋'๋ฅผ ์ ํํ๋ค๋ฉด, ๊ฒฝ๊ธฐ๋์ ํด๋นํ๋ ์์์, ์์์, ์ฑ๋จ์ ๋ฑ๋ฑ์ ๊ฒ๋ค๋ง ์๊ตฐ๊ตฌ๋ช ์ ์ถ๋ ฅ์ด ๋ ์ ์๋๋ก ํ๋ค.
3. ์๋ฉด๋๋ช ์ ์ ํ์ฌ๋ถ๋ ์ฌ์ฉ์์๊ฒ ์์ ๋กญ๊ฒ ๋งก๊ธด๋ค.
์๋ํ๋ฉด, ์๋ฉด๋๋ช ์ด null๊ฐ์ธ data๋ค๋ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
4. ์๋๋ช , ์๊ตฐ๊ตฌ๋ช ๊น์ง ์ ํ์ ํ ํ์๋ ์๋ฉด๋๋ช ์ ์ ํํ ํ ๊ฒ์์ด๋ฅผ ์ ๋ ฅ or ๊ทธ๋ฅ ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ์ฌ ์กฐํํ ์ ์๋๋ก ๊ตฌํํ๋ค.
5. ๋ชจ๋ ๊ฒ์ ๊ฒฐ๊ณผ ๋ฐ ์นดํ ๊ณ ๋ฆฌ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
6. ์๋๋ช , ์๊ตฐ๊ตฌ๋ช , ์๋ฉด๋๋ช ๊น์ง ์ ํํ์ ๋๋, ๋ฐ๋ก ๊ฒ์ ๋ฒํผ์ ๋๋ฅด์ง ์์๋ filtering๋ ํด๋น ์ ๋ณด๋ฅผ ์ถ๋ ฅํ ์ ์๋๋ก ํ๋ค.
โ ๊ตฌํ
โฌ๏ธ db ์ ๋ณด๊ฐ ๋ค์ด์๋ php ํ์ผ -> ๊ฐ ์ ๋ณด๋ค์ ์์ ์ด ์ค์ ํ ๊ฐ์ ๋ง์ถฐ์ ์จ์ฃผ๋ฉด ๋๋ค! โฌ๏ธ
<?php
/*
+-------------------------------------------------------------------------+
| Copyright (C) 2022 ye5ni |
+-------------------------------------------------------------------------+
ํ๋ก์ ํธ : 2022 ๊ฑด๋ฌผ DB ํ๋ก์ ํธ
์ ์ฑ ์: ๊น์์
ํ๋ก๊ทธ๋จ๋ช
: ๋๋ก๋ช
์ฃผ์ ๊ฒ์ ํ์ด์ง
๋ชจ ๋ ๋ช
: roadCode.php
์ ์ฑ ์ผ: 2022.05.18
์ต์ข
์์ ์ผ:
์ต์ข
์์ ์:
์์ ์ด๋ ฅ:
*/
$dbServer = " ";
$dbUser = " ";
$dbPassword = " ";
$dbSid = " ";
//putenv("NLS_LANG=KOREAN_KOREA.KO16MlsSWIN949");
putenv("NLS_LANG=KOREAN_KOREA.UTF8");
putenv("NLS_LANG=KOREAN_KOREA.AL32UTF8");
$conn = oci_connect ( $dbUser, $dbPassword, "$dbServer/$dbSid" );
if (!$conn) {
$e = oci_error ();
trigger_error ( htmlentities ( $e ['message'], ENT_QUOTES ), E_USER_ERROR );
}
function getConnection() {
global $dbServer, $dbUser, $dbPassword, $dbSid;
$conn = oci_connect ( $dbUser, $dbPassword, "$dbServer/$dbSid" );
if (! $conn) {
$e = oci_error ();
trigger_error ( htmlentities ( $e ['message'], ENT_QUOTES ), E_USER_ERROR );
}
return $conn;
}
function runParse($query){
global $conn;
$stid = oci_parse($conn, $query);
if (!$stid) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
return $stid;
}
function oparse($query){
global $conn;
$stid = oci_parse($conn, $query);
if (!$stid) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
return $stid;
}
function checkConnection() {
global $conn;
if ($conn) {
return true;
} else {
return false;
}
}
function closeConnection(){
global $conn;
oci_close($conn);
}
?>
โฌ๏ธ ์ค์ ๋๋ก๋ช ์ฃผ์๋ฅผ ๊ฒ์ํ ์ ์๋ ํ์ด์ง์ ์ฝ๋ โฌ๏ธ
<?php
/*
+-------------------------------------------------------------------------+
| Copyright (C) 2022 ye5ni |
+-------------------------------------------------------------------------+
ํ๋ก์ ํธ : 2022 ๊ฑด๋ฌผ DB ํ๋ก์ ํธ
์ ์ฑ ์: ๊น์์
ํ๋ก๊ทธ๋จ๋ช
: ๋๋ก๋ช
์ฃผ์ ๊ฒ์ ํ์ด์ง
๋ชจ ๋ ๋ช
: roadCode.php
์ ์ฑ ์ผ: 2022.05.18
์ต์ข
์์ ์ผ:
์ต์ข
์์ ์:
์์ ์ด๋ ฅ:
*/
//include_once("/var/www/html/juso/cfg/config.php");
include_once("/var/www/html/juso/cfg/db.php"); // ์์ db ์ ๋ณด๊ฐ ๋ด๊ธด ํ์ผ์ด ์์นํ ๊ฒฝ๋ก
?>
<html>
<head>
<title>๋๋ก๋ช
์ฃผ์ ๊ฒ์ํ๊ธฐ</title>
</head>
<body>
<br/>
<table width="750">
<tr>
<th><h2>๋๋ก๋ช
์ฃผ์ ๊ฒ์ํ๊ธฐ</h2>
</th>
</tr>
</table>
<table width="750">
<form id="frmRoadCode" name="frmRoadCode" action="roadCode.php" method="POST">
<tr>
<td>
<hr><br>
<table style="border: 1px dashed black; border-collapse: collapse;">
<td style="border:1px dashed black; padding:10px;">
<!-- * SIDO *-->
<?php
// ์๋๋ช
์ฟผ๋ฆฌ
$query = "SELECT DISTINCT(sido) AS sido, SUBSTR(scd, 1, 2) AS sdid
FROM road_code
ORDER BY sdid, sido";
$stid = oparse($query);
oci_execute($stid) ;
// ์๋ ID ๊ฐ ์ ์ฅ
if(isset($_POST['sidoID'])){
$sdid = $_POST['sidoID'];
}
?>
<select id="sidoID" name="sidoID" width="10%" onchange="frmRoadCode.submit()">
<option value="-1">์๋๋ช
</option>
// ์๋ ID๋ก ๊ฐ์ ๋ถ๋ฌ์ค๊ธฐ
<?php
while($row = oci_fetch_assoc($stid)){
?>
<option value="<?php echo $row['SDID'] ?>"
<?php
if($sdid == $row['SDID']) echo "selected='selected'";
?>>
<?php echo $row['SIDO'] ?>
</option>
<?php
}
?>
</select>
</td>
<!-- * SIGUNGU *-->
<td style="border:1px dashed black; padding:10px;">
<?php
// ์๊ตฐ๊ตฌ๋ช
์ฟผ๋ฆฌ
$query = "SELECT DISTINCT(gugun) as gugun, scd
FROM road_code
WHERE scd LIKE '$sdid%'
ORDER BY gugun";
$stid = oparse($query);
oci_execute($stid) ;
// ์๊ตฐ๊ตฌ ID ๊ฐ ์ ์ฅ
if(isset($_POST['gugunID'])){
$sgid = $_POST['gugunID'];
}
?>
<select id="gugunID" name="gugunID" width="10%" onchange="frmRoadCode.submit()">
<option value="-1">์๊ตฐ๊ตฌ๋ช
</option>
// ์๊ตฐ๊ตฌ๋ช
select Box ์ถ๋ ฅ
<?php
while($row = oci_fetch_assoc($stid)){
?>
<option value="<?php echo $row['SCD'] ?>"
<?php
if($sgid == $row['SCD']) echo "selected='selected'";
?>>
<?php echo $row['GUGUN'] ?>
</option>
<?php
}
?>
</select>
</td>
<!-- * DONG *-->
<td style="border:1px dashed black; padding:10px;">
<?php
// ์๋ฉด๋๋ช
์ฟผ๋ฆฌ(์กด์ฌํ ๋)
$query = "SELECT DISTINCT(dong) as dong, dongcd, scd
FROM road_code
WHERE scd='$sgid' AND dong IS NOT NULL
ORDER BY dong";
$stid = oparse($query);
oci_execute($stid) ;
// ์๋ฉด๋ ID ๊ฐ ์ ์ฅ
if(isset($_POST['dongID'])){
$did = $_POST['dongID'];
}
?>
<select id="dongID" name="dongID" width="10%" onchange="frmRoadCode.submit()">
<option value="-1">์๋ฉด๋๋ช
</option>
// ์๋ฉด๋๋ช
select Box ์ถ๋ ฅ
<?php
while($row = oci_fetch_assoc($stid)){
?>
<option value="<?php echo $row['DONGCD'] ?>"
<?php
if($did == $row['DONGCD']) echo "selected='selected'";
?>>
<?php echo $row['DONG'] ?>
</option>
<?php
}
?>
</select>
</td>
<!-- * DORO *-->
<td style="border:1px dashed black; padding:10px;">
<input type="text" name="doroID" id="doroID" size="20">
</td>
<td>
// ๋๋ก๋ช
์ฃผ์ ๊ฒ์
<?php
// ๋๋ก๋ช
ID ๊ฐ ์ ์ฅ
if(isset($_POST['doroID'])){
$doro = $_POST['doroID'];
}
// ์๋ฉด๋๋ช
์ ๊ฐ์ ๋ฃ์์ ๋์ ์ฟผ๋ฆฌ(๊ฒ์ ๋ฐ์ค์๋ ์
๋ ฅ๋ ์ํ-๋๋ก๋ช
)
if($did != -1) {
$query = "SELECT road, rno
FROM road_code
WHERE scd='$sgid' AND dongcd='$did' AND road LIKE '%$doro%'
ORDER BY road";
}
// ๊ฒ์๋ฐ์ค์ ๊ฐ์ ๋ฃ์ง ์๊ณ '๊ฒ์' ๋ฒํผ์ ๋๋ ์ ๋์ ์ฟผ๋ฆฌ
else if ($doro == null) {
$query = "SELECT distinct(road)
FROM road_code
WHERE scd='$sgid' and dongcd='$did'
ORDER BY road";
}
// ์๋ฉด๋๋ช
์ ๊ฐ์ด ์กด์ฌํ์ง ์์ ๋์ ์ฟผ๋ฆฌ(๊ฒ์ ๋ฐ์ค์๋ ์
๋ ฅ๋ ์ํ-๋๋ก๋ช
)
else if ($did == -1) {
$query = "SELECT distinct (road)
FROM road_code
WHERE scd='$sgid' and road LIKE '%$doro%'
ORDER BY road";
}
$stid = oparse($query);
oci_execute($stid) ;
?>
// ๊ฒ์ ๋ฒํผ์ ๋๋ฅธ ํ(or ๋๋ฆ๊ณผ ๋์์) ์ ์ฉ ๋๋ ๊ฒฐ๊ณผ
<input type="submit" value="๊ฒ ์" onchange="frmRoadCode.submit()">
<?php
if ($doro!=null){
while($row = oci_fetch_assoc($stid)){
?>
<tr><td>
<?php
echo $row['ROAD'] ?>
</td></tr>
<?php
}
}
else {
while($row = oci_fetch_assoc($stid)) {
?>
<tr><td>
<?php
echo $row['ROAD'];
?>
</td></tr>
<?php
}
}
?>
</td>
</form>
</table>
<br/>
<br/>
<br/>
<table>
<a href="/juso/juso.html" alt='๋ฉ์ธ'>๋ฉ์ธ์ผ๋ก ์ด๋</a>
</table>
</td>
</tr>
</form>
</body>
<?PHP
//echo "sdid:". $sdid;
//echo "sgid:". $sgid;
//echo "did:". $did;
//echo "doro:". $doro;
//?>
</html>
โ ๊ฒฐ๊ณผ ๋ฐ ํ ์คํธ
โ๏ธ ์ด๊ธฐ ํ๋ฉด
โ๏ธ ์ฌ์ฉ์๊ฐ ์๋๋ช ๋ฐ ์๊ตฐ๊ตฌ๋ช , ์๋ฉด๋๋ช ์ ์ ํํ ์ ์๋๋ก dropdown ํ์์ selectBox ์ฌ์ฉ
โ๏ธ ์ฌ์ฉ์๊ฐ ์ ํํ ์๋๋ช ์ ์ํ๋ ์๊ตฐ๊ตฌ๋ช ๋ง ์ถ๋ ฅ
โ๏ธ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
โ๏ธ ์๋ฉด๋๋ช ์ ์ ํ์ฌ๋ถ๋ ์ฌ์ฉ์์๊ฒ ์์ ๋กญ๊ฒ ๋งก๊น์ผ๋ก์จ, ์ ํํ์ง ์๊ณ ๋ ๊ฒ์์ด๋ฅผ ์ ๋ ฅํด์ ์กฐํํ ์ ์๋๋ก ๊ตฌํ
โ๏ธ ํด๋นํ๋ ๊ธ์(๊ฒ์์ด)๊ฐ ํฌํจ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ
โ๏ธ ์๋๋ช , ์๊ตฐ๊ตฌ๋ช , ์๋ฉด๋๋ช ์์ผ๋ก ์ ํํ ๊ฐ์ ๋ง์ถฐ์ ๊ฐ ์์ ์นดํ ๊ณ ๋ฆฌ์ ํฌํจ๋๋ ํญ๋ชฉ๋ง ์ถ๋ ฅ๋๋๋ก ๊ตฌํ
โ๏ธ ์๋ฉด๋๋ช ๊น์ง๋ง ์ ํํด๋ ํด๋นํ๋ data ์ถ๋ ฅ
โ๏ธ ์๋๋ช , ์๊ตฐ๊ตฌ๋ช , ์๋ฉด๋๋ช ์ ๋ชจ๋ ์ ํํ ํ, ์์ ์ด ์ํ๋ ํน์ ๊ฐ๋ง ๊ฒ์ํด์ ์ถ๋ ฅํ ์ ์๋๋ก ๊ตฌํ
* ๋ฌด๋จ ๋ณต์ ๊ธ์ง *
ํ์ฉํ๊ณ ์ถ์ผ์๋ฉด ๋๊ธ ๋ฐ ์ถ์ฒ ํ๊ธฐ ๋ถํ๋๋ฆฝ๋๋ค:)