打算看《php和mysql web开发》来学习php,所以也算是这本书的学习笔记吧,也按照书里的例子来练习,但是也有些取舍。第一章是一个订单表单的例子,php用于处理提交的表单。

  1.先创建订单表单orderform.html:

  代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form action="processorder.php" method="post">
<table>
<tr style="background-color:#ccc">
<td width="100">种类</td>
<td>数量</td>
</tr>
<tr>
<td>轮胎</td>
<td><input type="text" name="tireqty" size="3"></td>
</tr>
<tr>
<td>汽油</td>
<td><input type="text" name="oilqty" size="3"></td>
</tr>
<tr>
<td>火花塞</td>
<td><input type="text" name="sparkqty" size="3"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="submit order">
</td>
</tr>
</table>
</form>
</body>
</html>

  2.再创建procssorder.php来处理表单。 

  1)添加一点动态内容,显示表单的处理时间:

    php的注释有多行注释/*... */,单行注释//或#。

    php有4种风格的标记:
     XML风格   <?php code ?>
      简短风格    <? code ?>
      script风格  <script language="php">code</script>
      asp风格     <% code %>
      推荐使用xml风格,简短风格和asp风格需要在配置文件中启用相应的选项。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>订单处理页</title>
</head>
<body>
<h1>汽车配件网店</h1>
<h2>订单</h2>
<?php
echo "<p>订单处理时间:".date("H:i, jS F Y")."</p>"; //php用“.”连接字符串
?>
</body>
</html>

  2)访问表单变量。

  在php中可以通过如下三种方式访问tireqty域的值:

  $tireqty                                 //简短风格

   $_POST['tireqty']                    //中等风格

   $HTTP_POST_VARS['tireqty']   //冗长风格   

  简短风格需要将register_gloabals配置选项设置为on,这可能会导致安全性问题的错误,所以不建议用这种方式。冗长风格已经被弃用,通过register_long_arrays配置禁用它可以改进性能。所以中等风格是如今所推荐的。

  中等风格包括从$_POST, $_GET或$_REQUEST数组中检索变量。$_GET或$_POST保存相应的表单提交方式的数据,$_REQUEST保存了所有提交方式的表单数据。

<?php
//php每一行要用;结尾
$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty = $_POST['sparkqty'];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>订单处理页</title>
</head>
<body>
<h1>汽车配件网店</h1>
<h2>订单</h2>
<?php
echo "<p>订单处理时间:".date("H:i, jS F Y")."</p>"; //php用“.”连接字符串
echo "<p>您的订单如下:</p>";
echo $tireqty." 个轮胎<br>";
echo $oilqty." 桶汽油<br>";
echo "$sparkqty 个火花塞"; //简单类型的变量可以直接写在双引号中,php会用变量的内容插入到字符串中,单引号没有这个特性。
?>
</body>
</html>

  3)计算购买的数量和总价。

  php变量不需要提前声明,变量名前面必须加$。

  常量用define函数定义,并且引用常量的时候前面没有$符号。

  define('TIREPRICE', 100);

   echo TIREPRICE;

<?php
//php每一行要用;结尾
$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty = $_POST['sparkqty'];
$totalqty = 0;
$totalamount = 0.00; define('TIREPRICE', 100);
define('OILPRICE', 10);
define('SPARKPRICE', 4); $totalqty = $tireqty + $oilqty + $sparkqty;
$totalamount = $tireqty * TIREPRICE + $oilqty * OILPRICE + $sparkqty * SPARKPRICE;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>订单处理页</title>
</head>
<body>
<h1>汽车配件网店</h1>
<h2>订单</h2>
<?php
echo "<p>订单处理时间:".date("H:i, jS F Y")."</p>"; //php用“.”连接字符串
echo "购买总数:$totalqty <br>";
echo "购买总额:¥$totalamount<br>";
?>
</body>
</html>

  4)加上简单的服务器端验证。

  可以用exit结束整个php脚本的执行。

  empty()可以检查变量是否为空或0,is_numeric()可以检查变量是否为数字或数字字符串。

<?php
//php每一行要用;结尾
$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty = $_POST['sparkqty'];
$totalqty = 0;
$totalamount = 0.00; define('TIREPRICE', 100);
define('OILPRICE', 10);
define('SPARKPRICE', 4); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>订单处理页</title>
</head>
<body>
<h1>汽车配件网店</h1>
<h2>订单</h2>
<?php
if(empty($tireqty) && empty($oilqty) && empty($sparkqty)){
echo "<p style='color:red'>您没有选购商品</p>";
exit;
}
if(is_numeric($tireqty) && is_numeric($oilqty) && is_numeric($sparkqty)){ $totalqty = $tireqty + $oilqty + $sparkqty;
$totalamount = $tireqty * TIREPRICE + $oilqty * OILPRICE + $sparkqty * SPARKPRICE; echo "<p>订单处理时间:".date("H:i, jS F Y")."</p>"; //php用“.”连接字符串
echo "购买总数:$totalqty <br>";
echo "购买总额:¥$totalamount<br>";
}else{
echo "<p style='color:red'>参数必须为数字</p>";
exit;
}
?>
</body>
</html>

  3.大功告成:

  

  

  

【自学php】第二天 - php快速入门的更多相关文章

  1. RabbitMQ学习总结 第二篇:快速入门HelloWorld

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  2. 第二章 Vue快速入门-- 28 自定义按键修饰符

    事件处理-按键修饰符 js 里面的键盘事件对应的键码 <!DOCTYPE html> <html lang="en"> <head> <m ...

  3. 第二章 Vue快速入门-- 27 字符串的padStart方法使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  4. 第二章 Vue快速入门-- 26 过滤器-定义私有过滤器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  5. 第二章 Vue快速入门-- 25 过滤器-定义格式化时间的全局过滤器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  6. 第二章 Vue快速入门-- 23 品牌案例-根据关键字实现数组的过滤

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  7. 第二章 Vue快速入门--20 品牌案例-完成品牌列表的添加功能+ 21 品牌案例-根据Id完成品牌的删除

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  8. 第二篇 CSS快速入门

    学CSS 和 JS的路线: 1. 首先,学会怎么找到标签.只有找到标签,才能操作标签——CSS通过选择器去找标签 2. 其次,学会怎么操作标签对象. CSS概述 CSS是Cascading Style ...

  9. 第二章 Vue快速入门--14 使用v-model实现计算器的案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

随机推荐

  1. CS0016: 未能写入输出文件*****目录名称无效

    一大早,杀毒软件弹出删除隐私记录.清理空间一堆堆的提醒,一般我都是无视它,今天顺便点了下清理,然后出问题. 昨晚下班提交的代码,程序运行好好地,今早清理完系统,竟然就出问题了, 具体如下 CS0016 ...

  2. SSH安全登录(远程管理)22端口

    Linux管理Linux 先加密再发送数据,更安全 一    联机加密工具         非对称钥匙对加密         安装    默认安装    openssh              启动 ...

  3. python 数据类型之list

    1.不同的方式创建list.它们的内涵是不一样的! #!/usr/bin/python #!coding:utf-8 #!以下程序要用到python3.5 if __name__=="__m ...

  4. C#中使用MATLAB

    原文 http://www.cnblogs.com/sorex/archive/2012/08/01/2617469.html 闲来无聊写篇文章聊以慰藉. 本文写了Matlab的2种基本调用方式,且同 ...

  5. Android之用PopupWindow实现弹出listview形式菜单

    Android 4.0之前的菜单使用非常广泛,但是在android4.0之后,很少使用先前的菜单样式了.那如何实现下图的样式了? 我们简单模拟一下. (1)屏蔽系统弹出的菜单: 1.首先创建至少一个系 ...

  6. Boost库学习之旅入门篇

    学习及使用Boost库已经有一段时间了,Boost为我的日常开发中带来了极大的方便,也使得我越来越依赖于boost库了.但boost功能太多,每次使用还是得翻看以前的 资料,所以为了以后可以更方便的使 ...

  7. tcpdump 抓包让wireshark来分析

    在linux下面用tcpdump 抓包非常方便, 但是抓的包要提取出来进行分析, 还是得用wireshark来过滤分析比较方便. 下面先介绍一下 TCPDUMP 的使用 例:tcpdump host ...

  8. 使用LINQ查询非泛型类型

    原文地址:http://www.cnblogs.com/buzz/archive/2009/04/23/1442159.html using System;using System.Collectio ...

  9. 电子科大POJ "孤单整数"

    孤单整数 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) C-sources: ...

  10. 【LeetCode练习题】Linked List Cycle II

    Linked List Cycle Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it ...