22、构建 LAMP 环境并创建简单 Web 应用

构建 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 应用。在实际开发中,还可以进一步优化页面的样式和功能,提高用户体验。

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值