Chèn một mẩu tin trong cơ sở dữ liệu quan hệ

Một phần của tài liệu tài liệu php5 tiếng việt khá đầy đủ (Trang 139 - 147)

Chương 6: CHO PHÉP NGƯỜI SỬ DỤNG SOẠN THẢO CƠ SỞ DỮ LIỆU

6.3. Chèn một mẩu tin trong cơ sở dữ liệu quan hệ

Trong cơ sở dữ liệu thường có nhiều bảng. Tất cả các bảng này có thể hoàn toàn độc lập, nhưng sẽ giống như việc sử dụng xe hơi của bạn để lưu trữ một vài thứ trong thùng xe nhưng không bao giờ lái xe.

Trong hệ thống cũ của cơ sở dữ liệu quan hệ không tồn tại, mỗi dòng chứa tất cả các thông tin. Hệ thống đang chạy chỉ với một bảng chứa tất cả các thông tin. Bảng movie sẽ chứa tất cả các dữ liệu về diễn viên và đạo diễn và những loại khác trong phim.

Giả sử rằng một ngày nào đó bạn quyết định một loại film nào đó sẽ được chuyển từ hành động sang thám hiểm (thay đổi mọi thứ). Bạn sẽ thông qua tất cả mẩu tin để thay đổi các nhãn film.

Trong hệ quản trị cơ sở dữ liệu mới(RDBMS), nó không hơn trường hợp nào, bạn sẽ tạo ra một bảng movietype lưu trữ tất cả các loại film được chuyển đến và bạn sẽ liên kết những loại film đó với loại film có liên quan.

Để liên kết những bảng đó, bạn sử dụng một loại khóa chính/khóa ngoại. Khóa chính của bảng movietype là một số xác định cho mỗi loại film. Ví dụ trong cơ sở dữ liệu của bạn id 1 có liên quan đến film hài. Khóa ngoại là quan hệ giữa bảng movie đến khóa chính của movietype.

Trong bài tập sau bạn sử dụng PHP và MySQL để chèn một bộ film vào cơ sở dữ liệu . Film này là một loại film từ bảng movietype.

Ví dụ : Chèn một bộ film với người và loại film đã biết.

Trong thời gian này chúng ta sẽ làm một vài thứ phức tạp hơn. Bạn sẽ thêm một bộ film vào hệ thống, trong khi ghi rõ có sẵn loại film, diễn viên và đạo díễn.

1. Tạo một file mới tên movie.php và nhập đoạn mã sau:

<?php

$link = mysql_connect(“localhost”, “bp5am”, “bp5ampass”) or die(“Could not connect: “ . mysql_error());

mysql_select_db(‘moviesite’, $link) or die ( mysql_error());

$peoplesql = “SELECT * FROM people”;

$result = mysql_query($peoplesql) or die(“Invalid query: “ . mysql_error());

while ($row = mysql_fetch_array($result)) {

$people[$row[‘people_id’]] = $row[‘people_fullname’];

}

?>

<html>

<head>

<title>Add movie</title>

<style type=”text/css”>

TD{color:#353535;font-family:verdana}

TH{color:#FFFFFF;font-family:verdana;background-color:#336699}

</style>

</head>

<body>

<form action=”commit.php?action=add&type=movie” method=”post”>

<table border=”0” width=”750” cellspacing=”1” cellpadding=”3”

bgcolor=”#353535” align=”center”>

<tr>

<td bgcolor=”#FFFFFF” width=”30%”>Movie Name</td>

<td bgcolor=”#FFFFFF” width=”70%”>

<input type=”text” name=”movie_name”>

</td>

</tr>

<tr>

<td bgcolor=”#FFFFFF”>Movie Type</td>

<td bgcolor=”#FFFFFF”>

<select id=”game” name=”movie_type” style=”width:150px”>

<?php

$sql = “SELECT movietype_id, movietype_label “ .

“FROM movietype ORDER BY movietype_label”;

$result = mysql_query($sql)

or die(“<font color=\”#FF0000\”>Query Error</font>” . mysql_error());

while ($row = mysql_fetch_array($result)) {

echo ‘<option value=”’ . $row[‘movietype_id’] . ‘“>’ .

$row[‘movietype_label’] . ‘</option>’ . “\r\n”;

}

?>

</select>

</td>

</tr>

<tr>

<td bgcolor=”#FFFFFF”>Movie Year</td>

<td bgcolor=”#FFFFFF”>

<select name=”movie_year”>

<option value=”” selected>Select a year...</option>

<?php

for ($year = date(“Y”); $year >= 1970; $year--) {

?>

<option value=”<?php echo $year; ?>”><?php echo $year; ?></option>

<?php }

?>

</select>

</td>

</tr>

<tr>

<td bgcolor=”#FFFFFF”>Lead Actor</td>

<td bgcolor=”#FFFFFF”>

<select name=”movie_leadactor”>

<option value=”” selected>Select an actor...</option>

<?php

foreach ($people as $people_id => $people_fullname) {

?>

<option value=”<?php echo $people_id; ?>” >

<?php

echo $people_fullname; ?></option>

<?php }

?>

</select>

</td>

</tr>

<tr>

<td bgcolor=”#FFFFFF”>Director</td>

<td bgcolor=”#FFFFFF”>

<select name=”movie_director”>

<option value=”” selected>Select a director...</option>

<?php

foreach ($people as $people_id => $people_fullname) {

?>

<option value=”<?php echo $people_id; ?>” >

<?php

echo $people_fullname; ?></option>

<?php }

?>

</select>

</td>

</tr>

<tr>

<td bgcolor=”#FFFFFF” colspan=”2” align=”center”>

<input type=”submit” name=”SUBMIT” value=”Add”>

</td>

</tr>

</table>

</form>

</body>

</html>

2. Lưu file và đưa lên server trong thư mục chap6.

3. Tạo một file mới tên commit.php và nhập đoạn mã:

<?php

// COMMIT ADD

$link = mysql_connect(“localhost”, “bp5am”, “bp5ampass”) or die(“Could not connect: “ . mysql_error());

mysql_select_db(‘moviesite’, $link) or die ( mysql_error());

switch ($_GET[‘action’]) {

case “add”:

switch ($_GET[‘type’]) {

case “movie”:

$sql = “INSERT INTO movie (movie_name,

movie_year, movie_type, movie_leadactor, movie_director) VALUES

(‘“ . $_POST[‘movie_name’] . “‘,

‘“ . $_POST[‘movie_year’] . “‘,

‘“ . $_POST[‘movie_type’] . “‘,

‘“ . $_POST[‘movie_leadactor’] . “‘,

‘“ . $_POST[‘movie_director’] . “‘)”;

break;

} break;

}

if (isset($sql) && !empty($sql)) {

echo “<!--” . $sql . “-->”;

$result = mysql_query($sql)

or die(“Invalid query: “ . mysql_error());

?>

<p align=”center” style=”color:#FF0000”>

Done. <a href=”index.php”>Index</a>

</p>

<?php }

?>

4. Lưu file vào thư mục chap6.

5. Mở trình duyệt trang index.php và click ADD tiếp theo phần đầu của bảng movie. Kết quả như Hình 6.3.1

Hình 6.3.1

6. Thêm 1 movie named “Test” với kiểu tự do, diễn viên, và đạo diễn như Hình 6.3.2

Hình 6.3.2

7. Click vào nút “add” bạn sẽ thấy như Hình 6.3.3

Hình 6.3.3

Cách thức làm việc

Form HTML cho phép bạn điều khiển cách người dùng nhập dữ liệu. Một nút submit, form gửi thông tin đến server mà PHP có thể sử dụng chung và chạy câu lệnh SQL INSERT.

Như bạn thấy trong việc chèn film trong movie.php, bạn có 4 combo boxes và một vùng Text. Nội dung vùng text được nhập tự do, nhưng combox thì hoàn toàn theo chỉ dẫn. Chúng ta hãy xem lại nội dung của combox từ nội dung cơ sở dữ liệu.

Trước tiên, chúng ta hãy thử trong combox. Mỗi danh sách combox biểu diễn một người.

<?php

$link = mysql_connect(“localhost”, “root”, “”) or die(“Could not connect: “ . mysql_error());

mysql_select_db(‘moviesite’, $link)

or die ( mysql_error());

$peoplesql = “SELECT * FROM people”;

$result = mysql_query($peoplesql)

or die(“Invalid query: “ . mysql_error());

while ($row = mysql_fetch_array($result)) {

$people[$row[‘people_id’]] = $row[‘people_fullname’];

}

?>

Vào lúc bắt đầu tập lệnh, bạn truy vấn bảng người và đặt nội dung của nó trong mảng. Dữ liệu người lưu trữ trong bảng người. Danh sách chung của người, bạn truy vấn cơ sở dữ liệu đơn giản, lấy lại tất cả những gì liên quan đến người trong hệ thống và hiển thị tên trong combox và chuyển đến khóa chính như giá trị mục.

Mỗi người được biết sẽ có một mục trong combox.

<select name=”movie_director”>

<option value=”” selected>Select a director...</option>

<?php

foreach ($people as $people_id => $people_fullname) {

?>

<option value=”<?php echo $people_id; ?>” ><?php echo $people_fullname; ?></option>

<?php }

?>

</select>

Ở đây bạn sử dụng cú pháp foreach để đi đến tất cả các chọn lựa trong mảng. Loại phim tổng quan trong combobox, điều này thuận tiện hơn cho việc sử dụng nội dung SQL chung. Bạn dùng lại đoạn mã này để tạo ra một form có đặc điểm chung để thêm và chỉnh sửa, vì thế bạn cần phải hiểu chi tiết về việc này.

<select id=”game” name=”movie_type” style=”width:150px”>

<?php

$sql = “SELECT movietype_id, movietype_label “ .

“FROM movietype ORDER BY movietype_label”;

$result = mysql_query($sql)

or die(“<font color=\”#FF0000\”>Query Error</font>” . mysql_error());

while ($row = mysql_fetch_array($result)) {

echo ‘<option value=”’ . $row[‘movietype_id’] . ‘“>’ .

$row[‘movietype_label’] . ‘</option>’ . “\r\n”;

?>

</select>

Đoạn mã này tạo ra những lựa chọn trong combobox bằng bảng truy vấn movietype để trích ra các loại phim có sẵn.

Mỗi lựa chọn sẽ có một kiểu id như một giá trị và loại phim mà tự nó là một nhãn.

Form đã sẳn sàng, bạn cần có một tập lệnh để sử dụng cơ sở dữ liệu tạo ra các mẫu tin. Như bạn có thể thấy switch case on $_GET[‘action’] thì lúc này hoàn toàn không sử dụng. Trong bài tập tiếp theo bạn thêm vào nhiều đoạn mã trong tập lệnh movie.php, vì vậy bạn có thể sử dụng nó để chỉnh sửa phim .

Một phần của tài liệu tài liệu php5 tiếng việt khá đầy đủ (Trang 139 - 147)

Tải bản đầy đủ (DOC)

(256 trang)
w