第二章 数据的存储与检索(1)2.1—2.4节

学习重点:

  • 保存数据以便后期使用
  • 打开文件
  • 创建并写入文件
  • 关闭文件
  • 读文件
  • 给文件加锁
  • 删除文件
  • 其他有用的文件操作函数
  • 数据库管理系统

存储和检索Bob的订单:

html文件:文件名(orderform.html)

<html>
<head>
    <title>Bob‘s Auto Parts</title>
</head>
<body>
<h1>Bob‘s Auto Parts</h1>
<h2>Order Form</h2>

<form action="processorder.php" method=post>
    <table border=0>
        <tr bgcolor=#cccccc>
            <td width=150>Item</td>
            <td width=315>Quantity</td>
        </tr>
        <tr>
            <td>Tires</td>
            <td align=left><input type="text" name="tireqty" size=3 maxlength=3></td>
        </tr>
        <tr>
            <td>Oil</td>
            <td align=left><input type="text" name="oilqty" size=3 maxlength=3></td>
        </tr>
        <tr>
            <td>Spark Plugs</td>
            <td align=left><input type="text" name="sparkqty" size=3 maxlength=3></td>
        </tr>
        <tr>
            <td>Shipping Address</td>
            <td align=center><input type="text" name="address" size=40 maxlength=40></td>
        </tr>
        <tr>
            <td colspan=2 align=center><input type=submit value="Submit Order"></td>
        </tr>
    </table>
</form>

</body>
</html>

explain:

<tr>
       <td>Shopping Address</td>
       <td align=center><input type="text" name="address" size=40 maxlength=40></td>
</tr>

input 中的 size 属性:size属性规定字段的宽度。对于 <input type="text"> 和 <input type="password">, size属性定义的是可见的字符数,而对于其他类型,size属性定义的是以像素为单位的输入字段宽度。

一般size属性可以用css代替:<input style="width:100px" />

<tr>
    <td colspan=2 align=center><input type=submit value="Submit Order"></td>
</tr>

td 中的 colspan 属性:设置单元格可横跨的列数。

colspan="0"指示浏览器横跨到列组的最后一列

for example:

<table border="1">
  <tr>
    <th>Month</th>
    <th>Savings</th>
  </tr>
  <tr>
    <td colspan="2">January</td>
  </tr>
  <tr>
    <td colspan="2">February</td>
  </tr>
</table>

the result of this:

html效果如图:

然后我们填写订单,并将订单写入order.txt文本文件中,下面是完整的php代码:

<?php
// create short variable names
$tireqty = $_POST[‘tireqty‘];
$oilqty = $_POST[‘oilqty‘];
$sparkqty = $_POST[‘sparkqty‘];
$address = $_POST[‘address‘];

$DOCUMENT_ROOT = $_SERVER[‘DOCUMENT_ROOT‘];
?>
<html>
<head>
    <title>Bob‘s Auto Parts - Order Results</title>
</head>
<body>
<h1>Bob‘s Auto Parts</h1>
<h2>Order Results</h2>
<?php
$date = date(‘H:i, jS F‘);

echo ‘<p>Order processed at ‘;
echo $date;
echo ‘</p>‘;

echo ‘<p>Your order is as follows: </p>‘;

$totalqty = 0;
$totalqty = $tireqty + $oilqty + $sparkqty;
echo ‘Items ordered: ‘.$totalqty.‘<br />‘;

if( $totalqty == 0)
{
    echo ‘You did not order anything on the previous page!<br />‘;
}
else
{
    if ( $tireqty>0 )
        echo $tireqty.‘ tires<br />‘;
    if ( $oilqty>0 )
        echo $oilqty.‘ bottles of oil<br />‘;
    if ( $sparkqty>0 )
        echo $sparkqty.‘ spark plugs<br />‘;
}

$totalamount = 0.00;

define(‘TIREPRICE‘, 100);
define(‘OILPRICE‘, 10);
define(‘SPARKPRICE‘, 4);

$totalamount = $tireqty * TIREPRICE
    + $oilqty * OILPRICE
    + $sparkqty * SPARKPRICE;

$totalamount=number_format($totalamount, 2, ‘.‘, ‘ ‘);

echo ‘<p>Total of order is ‘.$totalamount.‘</p>‘;
echo ‘<p>Address to ship to is ‘.$address.‘</p>‘;

$outputstring = $date."\t".$tireqty." tires \t".$oilqty." oil\t"
    .$sparkqty." spark plugs\t\$".$totalamount
    ."\t". $address."\n";

// open file for appending
@ $fp = fopen("$DOCUMENT_ROOT/orders.txt", ‘ab‘);

if (!$fp)
{
    echo ‘<p><strong> Your order could not be processed at this time.  ‘
        .‘Please try again later.</strong></p></body></html>‘;
    exit;
}
//move flock down here(after if)
flock($fp, LOCK_EX);

fwrite($fp, $outputstring, strlen($outputstring));
flock($fp, LOCK_UN);
fclose($fp);

echo ‘<p>Order written.</p>‘;
?>
</body>
</html>

这里将所有的html文件传过来的变量写在了<html>标签的上面,更加方便。

explain:

$date = date(‘H:i, jS F‘);

这里使用了date()函数:

Example #1 date() 例子

<?php
// 设定要用的默认时区。自 PHP 5.1 可用
date_default_timezone_set(‘UTC‘);

// 输出类似:Monday
echo date("l");

// 输出类似:Monday 15th of August 2005 03:12:46 PM
echo date(‘l dS \of F Y h:i:s A‘);

// 输出:July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* 在格式参数中使用常量 */
// 输出类似:Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// 输出类似:2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>

在格式字串中的字符前加上反斜线来转义可以避免它被按照上表解释。如果加上反斜线后的字符本身就是一个特殊序列,那还要转义反斜线。

Example #2 在 date() 中转义字符

<?php
// prints something like: Wednesday the 15th
echo date("l \\t\h\e jS");
?>

可以把 date() 和 mktime() 函数结合使用来得到未来或过去的日期。

Example #3 date() 和 mktime() 例子

<?php
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?>

一些使用 date() 格式化日期的例子。注意要转义所有其它的字符,因为目前有特殊含义的字符会产生不需要的结果,而其余字符在 PHP 将来的版本中可能会被用上。当转义时,注意用单引号以避免类似 \n 的字符变成了换行符。

<?php
// 假定今天是:March 10th, 2001, 5:16:18 pm
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
 $today = date(‘h-i-s, j-m-y, it is w Day z ‘); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01 $today = date(‘\i\t \i\s \t\h\e jS \d\a\y.‘); // It is the 10th day. $today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001 $today = date(‘H:m:s \m \i\s\ \m\o\n\t\h‘); // 17:03:17 m is month $today = date("H:i:s"); // 17:16:17 $today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (MySQL DATETIME 格式) ?>

关于date()函数的具体内容可以参考:http://php.net/manual/zh/function.date.php

$outputstring = $date."\t".$tireqty." tires \t".$oilqty." oil\t"
    .$sparkqty." spark plugs\t\$".$totalamount
    ."\t". $address."\n";

  其中 "\n" 是一个换行符,"\t" 是一个tab符

//\\ open file for appending
@ $fp = fopen("$DOCUMENT_ROOT/orders.txt", ‘ab‘);

  这里是打开文件的操作。

文件处理:

将数据写入一个文件,有3步操作:

  1. 打开这个文件。如果文件不存在,需要先创建它;
  2. 将数据写入这个文件;
  3. 关闭这个文件。

打开文件:要在php中打开一个文件,使用fopen()函数,当打开一个文件的时候,我们需要制定如何使用它,即文件模式。

(fopen()函数的文件模式总结)

最后php效果如下:

值得注意的是,关于文件的路径:

$DOCUMENT_ROOT/orders.txt

  这里使用了php内置变量$_SERVER[‘DOCUMENT_ROOT‘],由于整个表单名称太长了,我们可以指定一个简短的名称:

$DOCUMENT_ROOT = $_SERVER[‘DOCUMENT_ROOT‘];

  我们可以选用绝对路径,但应该选用相对路径。

我的文件目录如下所示:

这里的orders.txt文本文件是与我的html文件和php文件在同一目录(form2)下的,所以我的路径可写为:$DOCUMENT_ROOT/orders.txt

2016-07-19

时间: 2024-10-10 21:31:40

第二章 数据的存储与检索(1)2.1—2.4节的相关文章

第二章 数据的存储与检索(2)

重点: 知道何时读完文件:feof() 函数 每次读取一行数据:fgets() .fgetss() .fgetcsv() 函数 读取整个文件:readfile() .fpassthru() .file() 函数 读取一个字符:fgetc() 函数 读取任意长度:fread() 函数 查看文件是否存在:file_exists() 函数 确定文件大小:filesize() 函数 删除一个文件:unlink() 函数 在文件中定位:rewind() .fseek() .ftell() 函数 文件锁定:

第2章 数据的存储与检索

1.打开文件: fopen() ; 如:$fp=fopen("$DOCUMENT_ROOT/../orders/orders.txt",'w'); //第一个参数:要打开的文件(以上是相对路径) // 第二个参数:指定文件模式,即将对文件进行的操作(字符串w指 只写模式) 2.写文件:fwrite()或fputs() 如:fwrite($fp,$outputstring,strlen($outputstring)); //第三个参数规定写入的最大字符数,该参数是可选的 3.关闭文件:f

第二章 数据,变量和计算

头文件 #include <>或#include "" <> 强制类型转换 double a=1.6; cout<<static_cast<int>(a)<<endl; 输出为1 注意旧的强制类型转换为int(a),这比新的更容易出错,得不到想要的结果,所以推荐static_cast<转换成的类型>() 自动判断数据类型 auto n=16; 自动判断n的类型为int const auto e=1.1; 自动判断静

第二章 数据是用二进制表示的

看完第二章后,我知道了计算机是以二进制来存储数据的(其实标题已经告诉我们了).以至于计算机为什么用二进制来表示的,是因为计算机内部是由集成电路这种电子部件构成的,它们的所有引脚的每个引脚只有两种状态,就是0V和5V, 二进制数是只有0和1,它们之间的特性很相似. 还有字节(Byte)与位(bit)两者的关系,字节是计算机处理信息的基本单位,而位是最小单位(1字节=8位).还有就是用二进制数表示的数值,计算机不会区分它是数值.文字还是图片等,而是根据编写的各位对计算机发出的指示来进行信息的处理的.

【知识强化】第二章 数据的表示和运算 2.2 定点数的表示与运算

我们进入第二章的学习,就是定点数的表示和运算. 那关于定点数呢我们分为两块内容,一块呢就是定点数的表示也就是我们这一节的内容,一块呢就是定点数的运算.这两块内容呢都非常的难,也都非常的重点.希望大家呢引起重视. 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/11370240.html

高性能javascript(第二章 数据访问)

1.数据存储位置关系到访问速度.在 JavaScript 中有四种基本的数据访问位置: 直接量: 变量: 数组: 对象: 2.多数情况下,对一个直接量和一个局部变量数据访问的性能差异是微不足道的. 3.作用域和标示符解析: 每一个 JavaScript 函数都被表示为对象.进一步说,它是一个函数实例.函数对象正如其他对象那样, 拥有你可以编程访问的属性,和一系列不能被程序访问,仅供 JavaScript 引擎使用的内部属性. 其中一个内部属性是[[Scope]],由ECMA-262 标准第三版定

KnockoutJS 3.X API 第二章 数据监控(1)视图模型与监控

数据监控 KO的三个内置核心功能: 监控(Observable)和依赖性跟踪(dependency tracking) 声明绑定(Declarative bindings) 模板(Templating) 在这个页面上,您将了解三种核心功能的第一种.但在此之前,让我们来看看MVVM模式的概念和视图模型的概念. MVVM模式和视图模型 模型-视图-视图模型(MVVM)是用于构建用户界面的设计模式.它描述了如何将复杂的UI分割成三个部分: 模型:应用程序所存储的数据.这个数据代表了你的业务领域对象和操

《数据挖掘:R语言实战》第二章 数据概览

2.1 n*m数据集 在n*m表格形式的数据集中,n代表数据的行,即观测点的数量:m代表列,即变量的数量:n*m为数据的维度. 一般来说,当拿到一份数据时,最先做的往往就是查看数据集的观测样本数.变量数,以及这些变量的实际含义,以此对数据集的庞大程度和各变量的相对重要性做到心中有数.这对选取何种数据挖掘算法,以及在这之前应该抽取多少及哪些变量及样本纳入建模都有重要的先导作用. 2.2 数据的分类 2.2.1 一般的数据分类 定量数据:连续型数据和离散型数据 定性数据:定类数据.定序数据.定距数据

第二章 数据的储存与运算

在师兄的建议下换了本教材,从头开始学习,发现原来自己前面一个月学的真的是很浅(仅仅照着书打).以下是这个星期的几个典型错误: 1.自己习惯了数学的"省略乘号"思维,带到写程序中: 2.在运用除法时容易忽略"除法两边为整型数据时,结果取整舍小",造成误差,以后在使用除法时,要习惯用如图的表达: [本周小结]1.本周跟着视频学习,但是自己没有事先看书预习,造成自己在看视频上面花了较多时间,自己动手操作打代码的时间较少,下周可以先花两天时间阅读教材,打代码之后再看视频补充