PHP-데이터베이스에서 선택 메뉴생성
PHP-데이터베이스에서 선택 메뉴생성 요즘 PHP프로그래밍 책을 보고 있다.
챕터 209.
데이터베이스에서 선택 메뉴를 생성하고 싶을 때
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>데이터베이스에서 선택 메뉴를 생성하고 싶을 때</title>
</head>
<body>
<div>
<form method="post" action="database_to_selectmenu.php">
<?php
// 데이터베이스 설정 레시피 257을 불러옵니다 레시피 041.
require_once__DIR__ . '/../../../../conf/database_conf.php';
// h() 함수 레시피 218를 불러옵니다.
require_once '../../../../lib/h.php';
try {
// MySQL 데이터베이스에 접속합니다 레시피 257.
$db = new PDO($dsn, $dbUser, $dbPass);
$db -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// SQL문을 준비합니다.
$sql = 'SELECT * FROM area ORDER BY id ASC';
$prepare = $db->prepare($sql);
// 쿼리를 실행합니다.
$prepare->execute ();
// 쿼리 결과의 경우 칼럼 이름을 키로 한 연관 배열에서 모든 행을 취득합니다 레시피 258.
$result = $prepare->fetchALL(PDO::FETCH_ASSOC);
echo '<select name="area">' . "\n";
// 실행 결과를 연관 배열에서 취득하고 foreach문으로 처리합니다.
foreach ($result as $row) {
echo ' <option value="' . h($row['id']) . '">' . h($row['area'])
. '</option>' . "\n";
}
echo '</select>' . "\n";
// 오류가 발생할 경우 PDOException 예외가 발생하므로 캐치합니다.
}catch (PDOException $e) {
echo '오류가 발생했습니다. 내용: ' . h($e->getMessage ());
}
if (isset($_POST['area'])){
$id = (int) $_POST['area'];
try{
// SQL문을 준비합니다.
$sql = 'SELECT * FROM area WHERE id = :id';
$prepare = $db->prepare($sql);
// SQL문의 플레이스 홀더에 값을 바인딩하고 쿼리를 실행합니다.
$prepare->bindValue(':id', $id, PDO::PARAM_INT);
$prepare->execute();
// 컬럼명을 키로 한 연관 배열에서 쿼리 결과를 1행만 취득합니다 레시피 259.
$row = $prepare->fetch(PDO::FETCH_ASSOC);
// 결과를 표시합니다.
if ($row !== false) {
echo '선택한 지역은: ' . h($row['area']);
}
} catch (PDOException $e) {
echo '오류가 발생했습니다. 내용: ' . h($e->getMessage ());
}
}
?>
<br>
<input type="submit" value="전송">
</form>
</div>
</body>
</html>
출처: 예제가 가득한 PHP프로그래밍