Sửa dữ liệu trong mẩu tin

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

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

6.5. Sửa dữ liệu trong mẩu tin

Có dữ liệu trong cơ sở dữ liệu là một việc tốt, nhưng dữ liệu có khả năng nhận rõ chính nó và có khuynh hướng cập nhật. Để cập nhật dữ liệu bạn cần nhận biết dữ liệu cập nhật và hệ thống người sử dụng hiện tại với giao diện tốt. Việc sử dụng giao diện tương tự như việc tạo dữ liệu thường là một thực tiễn tốt.

Ví dụ:Sửa đổi một Movie

Trong ví dụ này, bạn tạo ra một tập lệnh mà có thể sửa đổi một bộ phim. Bạn sẽ xây dụng trên movie.php .

1.Mở movie.php và nhập mã lệnh

<?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’];

}

switch ($_GET[‘action’]) {

case “edit”:

$moviesql = “SELECT * FROM movie

WHERE movie_id = ‘“ . $_GET[‘id’] . “‘“;

$result = mysql_query($moviesql)

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

$row = mysql_fetch_array($result);

$movie_name = $row[‘movie_name’];

$movie_type = $row[‘movie_type’];

$movie_year = $row[‘movie_year’];

$movie_leadactor = $row[‘movie_leadactor’];

$movie_director = $row[‘movie_director’];

break;

default:

$movie_name = “”;

$movie_type = “”;

$movie_year = “”;

$movie_leadactor = “”;

$movie_director = “”;

break;

}

?>

<html>

<head>

<title><?php echo $_GET[‘action’]; ?> 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=<?php

echo $_GET[‘action’]; ?>&type=movie&id=<?php echo $_GET[‘id’]; ?>” 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”

value=”<?php echo $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)) {

if ($row[‘movietype_id’] == $movie_type) {

$selected = “ selected”;

} else {

$selected = “”;

}

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

$selected.’>’ . $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--) {

if ($year == $movie_year) {

$selected = “ selected”;

} else {

$selected = “”;

}

?>

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

echo $selected; ?>><?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) { if ($people_id == $movie_leadactor)

{

$selected = “ selected”;

} else {

$selected = “”;

}

?>

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

echo $selected; ?>><?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) { if ($people_id == $movie_director) {

$selected = “ selected”;

} else {

$selected = “”;

}

?>

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

echo $selected; ?>><?php echo $people_fullname;

?></option>

<?php }

?>

</select>

</td>

</tr>

<tr>

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

<input type=”submit” name=”SUBMIT” value=”<?php echo $_GET[‘action’]; ?>”>

</td>

</tr>

</table>

</form>

</body>

</html>

2. Mở tập lệnh commit.php và thay đổi nội dung như sau:

<?php

// COMMIT ADD AND EDITS

$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 “edit”:

switch ($_GET[‘type’]) {

case “movie”:

$sql = “UPDATE movie SET

movie_name = ‘“ . $_POST[‘movie_name’] . “‘, movie_year = ‘“ . $_POST[‘movie_year’] . “‘, movie_type = ‘“ . $_POST[‘movie_type’] . “‘,

movie_leadactor = ‘“ .$_POST[‘movie_leadactor’].”’, movie_director = ‘“ . $_POST[‘movie_director’] . “‘

WHERE movie_id = ‘“ . $_GET[‘id’] . “‘“;

break;

} break;

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 }

?>

3. Bây giờ mở http://localhost/chapter6/index.php hiển thị như Hình 6.6.1

Hình 6.6.1

4. Thử click liên kết EDIT ở “Bruce Almighty” movie, thay đổi một vài thứ trong hộp và tên film, ấn nút “edit” sẽ hiển thị như Hình 6.6.2

Hình 6.6.2

5. Edit “Bruce Almighty” nhận lại với thủ tục trong bước 4, và ấn định lại như cũ.

Bây giờ liên kết EDIT cho film, bạn thấy rằng tập lệnh lưu trữ giá trị và cho phép sửa đổi dữ liệu dễ dàng

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

Đoạn mã commit.php giống với những gì bạn thấy. Nhưng có một phát triển cần quan tâm trong movie.php. Chúng ta hãy nhìn vào một vài chi tiết

Đầu tiên hãy nhìn vào switch ở phần đầu của tập lệnh. Bạn định nghĩa một switch trên một chuổi truy vấn tham số tên action. Nếu action là edit, bạn truy vấn cơ sở dữ liệu cho một mẩu tin tương ứng đến id lý thuyết trong chuổi truy vấn tham số id và đặt một vài biến. Những biến này được đặt để tránh action không là edit..

switch ($_GET[‘action’]) {

case “edit”:

$moviesql = “SELECT * FROM movie WHERE movie_id = ‘“ . $_GET[‘id’] . “‘“;

$result = mysql_query($moviesql)

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

$row = mysql_fetch_array($result);

$movie_name = $row[‘movie_name’];

$movie_type = $row[‘movie_type’];

$movie_year = $row[‘movie_year’];

$movie_leadactor = $row[‘movie_leadactor’];

$movie_director = $row[‘movie_director’];

break;

default:

$movie_name = “”;

$movie_type = “”;

$movie_year = “”;

$movie_leadactor = “”;

$movie_director = “”;

break;

}

?>

Những biến đặt trong đoạn mã trước thường đặt giá trị mặc định của vùng form.

Mỗi vùng có một giá trị nếu như bạn chỉnh sửa một mẩu tin và có một giá trị trống nếu như bạn tạo một mẩu tin.

<tr>

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

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

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

value=”<?php echo $movie_name; ?>”>

</td>

</tr>

Trong ví dụ này, vùng movie_name lấy nội dung biến $movie_name như một giá trị mặc. Điều này cho phép bạn nạp lại với mẩu tin đã được chỉnh sửa.

Việc sửa đổi văn bản thì dễ dàng. Sửa đổi giá trị trong một danh sách là một chuyện khác. Bạn không thể hiển thị danh sách và hi vọng người dùng sẽ đặt lại giá trị gốc khi anh ta hoặc cô ta sửa mẩu tin.

Bạn cần phải nạp lại hoàn toàn danh sách và đặt giá trị trước như mặc định trong danh sách, vì vậy người dùng có thể bỏ qua nó nếu không muốn thay đổi nó.

Làm điều này như thế nào?

<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)) {

if ($row[‘movietype_id’] == $movie_type) {

$selected = “ selected”;

} else {

$selected = “”;

}

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

$selected . ‘>’ . $row[‘movietype_label’] . ‘</option>’ .

“\r\n”;

}

?>

</select>

</td>

</tr>

Bạn nạp vào danh sách như bạn sẽ làm nếu bạn thêm một mẩu tin, nhưng bạn so sánh giá trị hiện hành với giá trị mặc định. Nếu chúng đúng thì thêm cờ đơn giản SELECTED để lựa chọn. Việc này đặt danh sách giá trị mặc định đến giá trị hiện hành trong bảng.

if ($row[‘movietype_id’] == $movie_type) {

$selected = “ selected”;

} else {

$selected = “”;

}

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

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

(256 trang)
w