构建 LAMP 环境并创建简单 Web 应用
1. 数据库操作
在数据库操作中,我们已经掌握了插入和检索数据的基本命令,接下来将深入学习更新和删除数据的操作。
1.1 更新数据
更新数据库操作是插入和查询操作的混合,因为我们既需要找到要更新的数据,又要对其进行修改。其基本语法如下:
UPDATE <table name> SET <column name1> = "<value1>",<column name2> = "<value2>"... <column nameX> = "<valueX>" WHERE <Information Query>
例如,我们想要将待办事项列表(
todolist
)中某一事项的截止日期从 2012 年 9 月 22 日延长到 23 日,可使用以下命令:
mysql> UPDATE todolist SET date="2012-09-23" WHERE idnumber=1;
这里选择使用
idnumber
作为查询条件,因为它是主键,具有唯一性。执行该命令后,我们可以通过
SELECT
语句查看更新结果:
mysql> SELECT * FROM todolist WHERE idnumber=1;
结果如下:
| idnumber | description | owner | date | location | importance | creator |
|----------|---------------------|-------|------------|-----------|------------|---------|
| 1 | Finish LAMP Chapter | David | 2012-09-23 | Australia | HIGH | David |
另外,我们还可以将所有重要性为
HIGH
的事项更新为
HIGHEST
:
mysql> UPDATE todolist SET importance="HIGHEST" WHERE importance="HIGH";
同样,执行更新操作后,需再次使用
SELECT
语句查看结果。
1.2 删除数据
删除数据的语法与
SELECT
命令非常相似:
DELETE FROM <table name> WHERE <information query>;
例如,删除
todolist
表中
idnumber
为 1 的事项:
mysql> DELETE FROM todolist WHERE idnumber=1;
执行该命令后,再次使用
SELECT
语句查看结果,可发现该事项已被删除。
如果要删除整个表,可以使用
DROP TABLE
命令:
mysql> DROP TABLE todolist;
若要删除数据库,只需将
DROP TABLE
中的
TABLE
替换为
DATABASE
即可。
2. PHP 简介与安装
PHP 是一种允许在网页中添加动态功能的系统。最初,网页仅由 HTML 构成,缺乏根据输入和操作进行灵活变化的能力。为解决这一问题,开发了通用网关接口(CGI),但早期的 CGI 应用程序存在重复输出大量相同 HTML 代码的问题。PHP 的出现解决了这一问题,它允许在静态 HTML 中插入动态代码片段,从而创建动态网页。
要在树莓派上安装 PHP,可使用以下命令:
$ sudo apt-get install php5
安装完成后,我们需要测试 PHP 是否正常工作。将
/var/www
目录下的
index.html
替换为包含以下代码的
index.php
:
<?php phpinfo(); ?>
在浏览器中访问 Apache 服务器,若能看到 PHP 信息页面,则说明 PHP 解释器正常工作,且 Apache 已将
index.php
作为默认页面。
PHP 中的函数以括号结尾,可包含传递给函数使用的变量。此外,PHP 还使用数组,数组变量以
@
开头,通过在数组变量后添加方括号并输入元素编号来访问数组元素,元素编号从 0 开始。PHP 语句以分号结尾,变量以
$
开头,函数内部代码用花括号
{}
包裹。
为了让 PHP 能够与 MySQL 通信,还需安装
php5-mysql
包:
$ sudo apt-get install php5-mysql
安装完成后,重启 Apache 服务器,再次在浏览器中访问 Apache 网页并搜索 MySQL,若能看到相关信息,则说明 MySQL 和 PHP 已能正常通信。
3. HTML 基础
HTML(超文本标记语言)是构成互联网的语言,它由一系列标签组成,浏览器使用这些标签来组装网页。HTML 标签分为单独标签和成对标签,常见的标签如下:
-
<html></html>
:表示 HTML 页面的开始和结束。
-
<hr/>
:单独的标签,用于在网页上绘制一条横线。
以下是一个简单的 HTML 页面示例:
<html>
<head>
<title>Pi Brand - Todo List App</title>
</head>
<body>
<h1>Pi Todo List App</h1>
</body>
</html>
该页面的结构和作用如下:
- 所有内容都包含在
<html></html>
标签内,表示这是一个 HTML 页面。
-
<head>
标签包含页面的标题信息,
<title>
标签用于设置浏览器标题栏的内容。
-
<body>
标签包含页面的实际内容,
<h1>
标签用于显示大标题。
此外,还有一些常用的 HTML 标签:
-
<p>
:段落标签,用于创建段落文本。
-
<br>
:换行标签,用于插入换行符。
-
<a>
:超链接标签,用于创建链接到其他页面的链接。
-
<img>
:图像标签,用于在页面中添加图像。
在表格方面,常用的标签有
<table>
(表格顶级标签)、
<th>
(表格标题行元素)、
<tr>
(表格行)和
<td>
(表格单元格)。在表单方面,常用的标签有
<form>
(表单顶级元素)和
<input>
(表单输入元素)。
4. 页面设计与开发
我们要创建的页面分为两部分:一部分显示数据库中的待办事项列表,另一部分是用于向数据库提交新事项的表单,同时还会添加一个复选框,用于删除不再需要的事项。
在开始编写页面之前,需要先设置好数据库。之前已经创建了
Pi
数据库和
todolist
表,其创建语句如下:
create table todolist (
idnumber INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
description VARCHAR(200),
owner VARCHAR(40),
date DATE,
location VARCHAR(40),
importance VARCHAR(10),
creator VARCHAR(40)
);
接下来,我们使用
mysqli
接口建立与数据库的连接:
<?php
$mysqli = new mysqli('localhost', 'pi', 'raspberry', 'pi');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
$mysqli->close();
?>
将上述代码添加到
index.php
的原始代码中,后续就可以开始在页面中添加显示元素和处理数据库操作的代码了。
以下是整个过程的流程图:
graph TD;
A[数据库操作] --> B[更新数据];
A --> C[删除数据];
B --> B1[构建更新语句];
B --> B2[执行更新操作];
B --> B3[查看更新结果];
C --> C1[构建删除语句];
C --> C2[执行删除操作];
C --> C3[查看删除结果];
D[PHP 安装与配置] --> D1[安装 PHP];
D --> D2[测试 PHP 工作状态];
D --> D3[安装 php5-mysql 包];
D --> D4[测试 MySQL 与 PHP 通信];
E[HTML 基础学习] --> E1[了解 HTML 标签];
E --> E2[掌握常用标签用法];
F[页面设计与开发] --> F1[确定页面布局];
F --> F2[设置数据库];
F --> F3[建立数据库连接];
F --> F4[编写页面代码];
通过以上步骤,我们完成了 LAMP 环境的搭建,并开始着手创建一个简单的 Web 应用。后续将继续完善页面的功能,实现待办事项的添加、显示和删除等操作。
构建 LAMP 环境并创建简单 Web 应用
5. 实现待办事项的显示
在完成数据库连接后,我们要在页面上显示待办事项列表。可以使用 SQL 的
SELECT
语句从
todolist
表中获取所有数据,然后用 PHP 循环遍历结果并将其显示在 HTML 表格中。以下是具体代码:
<?php
$mysqli = new mysqli('localhost', 'pi', 'raspberry', 'pi');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
$result = $mysqli->query("SELECT * FROM todolist");
if ($result->num_rows > 0) {
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Description</th><th>Owner</th><th>Date</th><th>Location</th><th>Importance</th><th>Creator</th></tr>";
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>".$row["idnumber"]."</td>";
echo "<td>".$row["description"]."</td>";
echo "<td>".$row["owner"]."</td>";
echo "<td>".$row["date"]."</td>";
echo "<td>".$row["location"]."</td>";
echo "<td>".$row["importance"]."</td>";
echo "<td>".$row["creator"]."</td>";
echo "</tr>";
}
echo "</table>";
} else {
echo "No tasks found.";
}
$mysqli->close();
?>
上述代码的执行步骤如下:
1. 建立与数据库的连接。
2. 执行
SELECT
语句查询
todolist
表中的所有数据。
3. 检查查询结果是否有数据。
4. 如果有数据,创建一个 HTML 表格,并将表头输出。
5. 使用
while
循环遍历查询结果,将每一行数据输出到表格的相应单元格中。
6. 如果没有数据,输出提示信息。
7. 关闭数据库连接。
6. 实现待办事项的添加
为了实现待办事项的添加功能,我们需要创建一个 HTML 表单,让用户输入待办事项的相关信息,然后使用 PHP 将这些信息插入到数据库中。以下是表单代码:
<form action="add_task.php" method="post">
<label for="description">Description:</label>
<input type="text" id="description" name="description" required><br>
<label for="owner">Owner:</label>
<input type="text" id="owner" name="owner" required><br>
<label for="date">Date:</label>
<input type="date" id="date" name="date" required><br>
<label for="location">Location:</label>
<input type="text" id="location" name="location" required><br>
<label for="importance">Importance:</label>
<input type="text" id="importance" name="importance" required><br>
<label for="creator">Creator:</label>
<input type="text" id="creator" name="creator" required><br>
<input type="submit" value="Add Task">
</form>
当用户提交表单时,数据将被发送到
add_task.php
文件进行处理。以下是
add_task.php
的代码:
<?php
$mysqli = new mysqli('localhost', 'pi', 'raspberry', 'pi');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
$description = $_POST['description'];
$owner = $_POST['owner'];
$date = $_POST['date'];
$location = $_POST['location'];
$importance = $_POST['importance'];
$creator = $_POST['creator'];
$sql = "INSERT INTO todolist (description, owner, date, location, importance, creator) VALUES ('$description', '$owner', '$date', '$location', '$importance', '$creator')";
if ($mysqli->query($sql) === TRUE) {
echo "New task added successfully.";
} else {
echo "Error: " . $sql . "<br>" . $mysqli->error;
}
$mysqli->close();
?>
上述代码的执行步骤如下:
1. 建立与数据库的连接。
2. 从表单中获取用户输入的数据。
3. 构建
INSERT
语句,将数据插入到
todolist
表中。
4. 执行
INSERT
语句,根据执行结果输出相应信息。
5. 关闭数据库连接。
7. 实现待办事项的删除
为了实现待办事项的删除功能,我们在待办事项列表的每一行添加一个复选框,用户可以选择要删除的事项,然后点击删除按钮进行删除。以下是修改后的待办事项显示代码:
<?php
$mysqli = new mysqli('localhost', 'pi', 'raspberry', 'pi');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
$result = $mysqli->query("SELECT * FROM todolist");
if ($result->num_rows > 0) {
echo "<form action='delete_task.php' method='post'>";
echo "<table border='1'>";
echo "<tr><th>Select</th><th>ID</th><th>Description</th><th>Owner</th><th>Date</th><th>Location</th><th>Importance</th><th>Creator</th></tr>";
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td><input type='checkbox' name='task_ids[]' value='".$row["idnumber"]."'></td>";
echo "<td>".$row["idnumber"]."</td>";
echo "<td>".$row["description"]."</td>";
echo "<td>".$row["owner"]."</td>";
echo "<td>".$row["date"]."</td>";
echo "<td>".$row["location"]."</td>";
echo "<td>".$row["importance"]."</td>";
echo "<td>".$row["creator"]."</td>";
echo "</tr>";
}
echo "</table>";
echo "<input type='submit' value='Delete Selected Tasks'>";
echo "</form>";
} else {
echo "No tasks found.";
}
$mysqli->close();
?>
当用户点击删除按钮时,数据将被发送到
delete_task.php
文件进行处理。以下是
delete_task.php
的代码:
<?php
$mysqli = new mysqli('localhost', 'pi', 'raspberry', 'pi');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
if (isset($_POST['task_ids'])) {
$task_ids = $_POST['task_ids'];
foreach ($task_ids as $id) {
$sql = "DELETE FROM todolist WHERE idnumber = $id";
if ($mysqli->query($sql) !== TRUE) {
echo "Error deleting task with ID $id: " . $mysqli->error;
}
}
echo "Selected tasks deleted successfully.";
} else {
echo "No tasks selected for deletion.";
}
$mysqli->close();
?>
上述代码的执行步骤如下:
1. 建立与数据库的连接。
2. 检查用户是否选择了要删除的事项。
3. 如果选择了事项,遍历这些事项的 ID,构建
DELETE
语句并执行。
4. 根据执行结果输出相应信息。
5. 关闭数据库连接。
8. 总结
通过以上步骤,我们完成了一个简单的待办事项 Web 应用的开发。整个过程涵盖了数据库操作(更新、删除、插入、查询)、PHP 编程(与数据库交互、处理表单数据)和 HTML 页面设计(显示数据、创建表单)。以下是整个开发过程的总结表格:
| 步骤 | 操作内容 | 关键代码 |
| ---- | ---- | ---- |
| 1 | 数据库操作 |
UPDATE
、
DELETE
、
INSERT
、
SELECT
语句 |
| 2 | PHP 安装与配置 |
sudo apt-get install php5
、
sudo apt-get install php5-mysql
|
| 3 | HTML 基础学习 | 各种 HTML 标签的使用 |
| 4 | 页面设计与开发 | 确定页面布局、建立数据库连接 |
| 5 | 待办事项显示 | 使用
SELECT
语句查询数据并在 HTML 表格中显示 |
| 6 | 待办事项添加 | 创建 HTML 表单,使用
INSERT
语句插入数据 |
| 7 | 待办事项删除 | 在列表中添加复选框,使用
DELETE
语句删除数据 |
以下是整个开发流程的流程图:
graph TD;
A[数据库操作] --> B[更新数据];
A --> C[删除数据];
A --> D[插入数据];
A --> E[查询数据];
F[PHP 安装与配置] --> F1[安装 PHP];
F --> F2[测试 PHP 工作状态];
F --> F3[安装 php5-mysql 包];
F --> F4[测试 MySQL 与 PHP 通信];
G[HTML 基础学习] --> G1[了解 HTML 标签];
G --> G2[掌握常用标签用法];
H[页面设计与开发] --> H1[确定页面布局];
H --> H2[设置数据库];
H --> H3[建立数据库连接];
I[待办事项显示] --> I1[查询数据];
I --> I2[显示在 HTML 表格中];
J[待办事项添加] --> J1[创建 HTML 表单];
J --> J2[插入数据到数据库];
K[待办事项删除] --> K1[添加复选框];
K --> K2[删除选中数据];
H3 --> I;
H3 --> J;
H3 --> K;
通过这个项目,我们可以看到如何将 LAMP 环境中的各个组件(Linux、Apache、MySQL、PHP)结合起来,创建一个功能完整的 Web 应用。在实际开发中,还可以进一步优化页面的样式和功能,提高用户体验。
超级会员免费看
170

被折叠的 条评论
为什么被折叠?



