Cơ sở dữ liệu APACHE, PHP, MYSQL - 19

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.

Có thể bạn quan tâm!

Xem toàn bộ 258 trang tài liệu này.

<select name=”movie_director”>

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

<?php


?>


<?php


?>

</select>

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

{


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


}

Ở đâ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


?>

</select>


$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>’ . “rn”;

Đ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.


nhã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

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 .

6.4. Xóa một mẩu tin

Xóa một mẩu tin thì dễ dàng. Như đã đề cập từ trước, luôn phải kiểm tra truy vấn trong cơ sở dữ liệu thử nghiệm. Việc xóa một mẩu tin trong cơ sở dữ liệu thử nghiệm không bao giờ là mối đe dọa cho hệ thống của bạn. Và việc kiểm tra truy vấn giúp bạn tìm ra những lỗi SQL trước khi xóa tất cả các mẩu tin trong cơ sở dữ liệu bởi vì bạn quên một vài thứ như câu lệnh WHERE. MySQL xóa những thứ thỏa câu lệnh SQL.

Xóa có nghĩa là mất dữ liệu. Để xóa một mẩu tin bạn cần biết vị trí của mẩu tin

trong cơ sở dữ liệu thông qua một tập hợp các câu lệnh điều kiện WHERE. Mỗi lần

câu lệnh được thực thi mẩu tin sẽ bị xóa, không thể quay lại. Mẩu tin bị xóa không hy vọng trả lại. Đây là điều cần lưu ý khi sử dụng câu lệnh DELETE.

Ví dụ: Xóa mẩu tin đơn giản

Trước khi bảo PHP xóa mọi thứ, bạn nên thử xóa một mẩu tin từ phpMyAdmin

với câu lệnh DELETE.

1. Mở phpMyAdmin và nhập đoạn mã sau:

DELETE FROM movie WHERE movie_id = 12 LIMIT 1

2. phpMyAdmin trả lại thông báo rằng bạn xóa một mẩu tin từ bảng

Cách thức hoạt động

Câu lệnh DELETE SQL sử dụng rất đơn giản, bạn sử dụng câu lệnh LIMIT 1 để giới hạn xóa một mẩu tin.

Một cơ sở dữ liệu thường chứa những mẫu tin liên quan với nhau trong những bảng khác nhau. Xóa một vài mẫu tin không xem xét quan hệ của chúng, làm cho bạn khó hiểu.

Không may là MySQL không duy trì tính toàn vẹn.

Để tránh vấn đề

này bạn có thể

dùng form phức tạp hơn của câu lệnh

DELETE,Cascade Delete, như đề cập trong phần sau Ví dụ:Cascade Delete

Bây giờ bạn đã biết cách sử dụng DELETE, bạn sẽ thêm nó vào hệ thống để xóa thông tin một người từ hệ thống. Khi bạn lưu trữ quan hệ một người trong bảng movie, bạn cần cập nhật nội dung của bảng, vì vậy bạn không cần xóa những gì liên quan tới người.

Xóa một người giống như cách mở khóa xe và mong đợi bãi giữ xe trống. Bạn cần để chắc chắn không liên quan đến việc xóa các mẩu tin còn lại.

Sau đây là những bước thực thi Cascade Delete:

1. Tạo một file mới với tên delete.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());

// DELETE SCRIPT

if (!isset($_GET[‘do’]) || $_GET[‘do’] != 1) {

?>

<p align=”center” style=”color:#FF0000”> Are you sure you want to delete this

<?php


<?php


}

echo $_GET[‘type’]; ?>?<br>

<a href=”<?php echo $_SERVER[‘REQUEST_URI’];

?>&do=1”>yes</a>

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

</p>


} else

{

if ($_GET[‘type’] == “people”) {

// Xóa những gì liên quan đến người trong bảng movie

// Xóa những gì liên quan đến lãnh đạo diễn viên

$actor = “UPDATE movie SET movie_leadactor = ‘0’

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

$result = mysql_query($actor)

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

// Xóa những gì liên quan đến đạo diễn

$director = “UPDATE movie SET movie_director = ‘0’

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

$result = mysql_query($director)

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


// SQL chung

$sql = “DELETE FROM “ . $_GET[‘type’] . “

WHERE “ . $_GET[‘type’] . “_id = ‘“ . $_GET[‘id’] . “‘


?>


<?php


?>

LIMIT 1”;

// xuất SQL cho mục đích echo “<!--” . $sql . “-->”;

$result = mysql_query($sql)

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


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

Your <?php echo $_GET[‘type’]; ?> has been deleted.

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

</p>


}

2. Lưu delete.php vào thư mục chap6.

3. Mở index.php trên trình duyệt. bạn sẽ thấy DELETE những liên kết tiếp sau mỗi film hoặc người như Hình 6.4.1


4 Thử Hình 6 4 1 xóa film mà bạn đã thêm vào ở bài tập trước bởi việc click 1



4. Thử

Hình 6.4.1

xóa film mà bạn đã thêm vào


ở bài tập trước bởi việc click vào liên kết

DELETE trên hàng “Test” movie name. Bạn sẽ thấy như Hình 6.4.2 .

Hình 6 4 2 5 Click vào liên kết yes để xác nhân việc xóa và đợi thông báo xác 2

Hình 6.4.2

5. Click vào liên kết “yes” để xác nhân việc xóa và đợi thông báo xác nhận như Hình 6.4.3

Hình 6 4 3 Cách thức hoạt động Ở đây là kế hoạch tiêu diệt 1 tập hợp vô 3

Hình 6.4.3

Cách thức hoạt động

Ở đây là kế hoạch tiêu diệt 1 tập hợp vô tội của dữ liệu. Đặt nó sang một bên, chúng ta hay xem tập lệnh này hoạt động như thế nào.

Đầu tiên, bạn cần hiểu rằng bạn không thể xóa mẩu tin trong cơ sở dữ liệu và phải quên chúng đi. Việc xóa được xem xét cẩn thận. Ví dụ nếu xóa một người từ

bảng people, điều này ngăn cản bạn từ việc tìm ra một khả năng có liên quan đến

người trong bảng movie. Nếu bạn xóa Jim Carrey từ bảng people, ai sẽ lãnh đạo diễn viên Bruce Almight? Nếu bạn không làm mọi thứ, id của Jim Carrey’s sẽ còn lại trong mẩu tin và bạn sẽ có một cơ sở dữ liệu bị sữa đổi. Bạn không muốn điều này đúng không (câu trả lời là không)

Để giải quyết vấn đề này thì để chắc rằng bạn luôn có một khóa ngoại trong mẩu tin. Trong đoạn mã sau bạn cập nhật bảng film với giá trị 0 trước khi xóa mẩu tin

people. Điều này cũng cho phép bạn kiển tra cách hoạt động của câu lệnh UPDATE

SQL.

// xóa phần liên quan đến lãnh đạo diễn viên

$actor = “UPDATE movie SET movie_leadactor = ‘0’

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

$result = mysql_query($actor)

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

// xóa phần liên quan đến đạo diễn

$director = “UPDATE movie SET movie_director = ‘0’

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

$result = mysql_query($director)

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

Trong đoạn mã trước, đặt bất kì một vùng nào trong bảng movie mà có thể chứa một điều rủi ro cho bạn, khi bạn xóa một người. Câu lệnh UPDATE làm việc một cách đơn giản. Nó đặt những vùng lý thuyết với những giá trị lý thuyết mới trong tất cả các mẩu tin theo nhu cầu của câu lệnh WHERE.

Bạn có thể hỏi điều gì sẽ xảy ra nếu một người quên đi phần WHERE. Điều này sẽ cập nhật tất cả những mẩu tin trong bảng, mà có thể không có một thứ gì bạn muốn làm trong thực tế .

Thứ tự xóa

// phát sinh SQL

$sql = “DELETE FROM “ . $_GET[‘type’] . “

WHERE “ . $_GET[‘type’] . “_id = ‘“ . $_GET[‘id’] . “‘ LIMIT 1”;

// Xuất SQL cho mục đích biên dịch

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

$result = mysql_query($sql)

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

Truy vấn DELETE là một đơn vị động, nhưng nó khá dễ hiểu. Bạn không muốn

mã hóa câu lệnh SQL cho mỗi loại. Vì vậy bạn sử dụng thông tin thông qua việc truyền biến trong URL để phát sinh ra câu lệnh SQL. Bảng và vùng khóa chính được phát sinh linh hoạt từ loại mục để xóa.

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());

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 06/01/2024