1.2. 下单页面,处理页面

未匹配的标注

持之以恒,方得始终!

下单页面

在 /Desktop/code/ 下新建一个 bob_car_shop 目录,新建一个 orderform.html 文件,内容如下

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

下单页面中中,跟后端有关系的几个点:

  1. form 中的 action ,是表单提交后,哪个php脚本处理。
  2. form 中的 method,是设置提交的方式,可以 get,post。
  3. input 中的 name,是后端获取数据的名称。存放在超级全局变量 $_GET, $_POST, $_REQUEST 中。

处理页面

创建文件 code/bob_car_shop/processorder.php

<?php
// 接收下单物品的数量
$tireqty = $_POST['tireqty'];
$oilqty  = $_POST['oilqty'];
$sparkqty= $_POST['sparkqty'];
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>下单处理脚本</title>
</head>
<body>

    <h1>Bob's Auto Parts</h1>
    <h2>Order Results</h2>

    <?php
    echo "<p>Order processed at " . date('Y-m-d H:i:s') . "</p>";

    echo "<p>Your order is as follows:</p>";
    echo "$tireqty tires<br>";
    echo $oilqty . ' bottles of oil<br>';
    echo $sparkqty . ' spark plugs<br>';
    ?>

</body>
</html>

上面的php脚本中,我们使用了变量接收了下单的数量,然后打印出来。

我们可以cd进code/bob_car_shop/下,运行 php -S 127.0.0.1:8080,在浏览器中访问测试一下结果。

处理脚本中跟php相关的知识

使用变量

声明一个变量时,即向内存申请了空间,来存放数据,变量名称则是与值形成映射关系(其实就是指针),一般强类型语言,比如c,c++,java,go,声明变量时,需要设定好变量的可存放的数据类型。php则可以直接赋值,值是什么类型,变量就是什么类型。

$tireqty = $_POST['tireqty'];

比如上面的这段代码,就是初始化了一个变量,其值是获取超级全局变量中的值。

超级全局变量

他们是系统内置的,具体值是根据环境而定,有如下这些

$_GET
$_POST
$_FILES
$_COOKIE
$_REQUEST
$_SESSION
$_SERVER
$GLOBALS
$_ENV

调用函数

调用函数时,会单独开辟一个内存空间供其运行,结束后,其中的变量等资源会被销毁,返回值到函数调用处。

如果函数没用给其一个 return,则其默认返回值为 null

字符串拼接符 .

比如下面,可以避免写多个 echo

echo $tireqty . "tires <br/>";

当然我们也可以借助于,php的双引号可以解析变量来处理

echo "$tireqty tires <br/>";

使用时,其实怎么方便就怎么来。

变量的命名规则

同样也适用于函数,类,类的方法,类的属性等

  1. 名称以数字,字母,下划线组成。
  2. 不能以数字开头。
  3. 区分大小写。
  4. 同一个脚本中,同一个命名空间下,不要重复。包括变量,函数,类名,之间都不要使用重复的名称。

php支持的数据类型

四种标量
    integer
    float/double
    string
    boolean
两种复杂
    array    可以看作集合
    object   类的实例
两种特殊
    null
    resource

类型转换

$totalqty = 0;
$totalamount = (float) $totalqty; // 取出$totalqty的值,将其转为浮点型,并赋值给$totalamount,$totalqty 还是 int 类型的。

其实php中还有隐式转换,比如 10 + '123abc' , 字符串会被转为数值,if(1) , 1被转换为true

可变变量

$varname = 'tireqty';
$$varname = 5; // 等价于 $tireqty = 5;

测试如下:
下单页面,处理页面

使用常量

常量其实和变量是一样的作用,也是包含一个值,当然有区别,

  1. 常量的设定 define("DEV", 'test'), 字母一般是全大写;
  2. 常量的使用,不加 $ , 直接用,echo DEV;
  3. 常量一旦被设定,在脚本其它地方,就不应该再被改变,并且常量是全局,局部都可以访问到。这两个才是常量的重点,否则常量也没啥太大的价值。一般多用于配置文件中,比如数据库配置,项目配置。
  4. 常量只能存标量类型数据,先盲猜一下,估计跟内存空间有关。

变量有系统内置的,常量当然也有,比如 __FILE__, __DIR__, PHP_VERSION , 我们可以查手册。

变量的作用域

  1. php内置的超级全局变量,哪儿都可访问。
  2. 脚本中的变量,全局可访问,局部不行。
  3. 常量,全局,局部都可以访问。
  4. 函数内的变量,局部可见。
  5. 函数内要想使用全局变量,可以用 $GLOBALS[‘varname’], 或者 global $varname 。关键是要和外部的全局变量名称保持一致。
  6. 在函数中的静态变量,函数外不可访问,但是关键点在于,它可以在函数的多次执行中,保留值。正常情况下,函数执行完毕,里面申请的资源会被销毁,静态变量则是个例外,跟其内存空间有关。

其实,从更深层思考,访问关系,还是跟内存空间有关,比如函数中的变量,本身函数执行时,就是单独开辟的内存空间,执行完毕,资源被释放,外部当然不能访问到,除非我们手动把其变为全局的。

还有内置的变量,常量,他们为啥哪儿都能访问,因为php执行脚本之前,就已经先把其加载到了共享内存空间中。

如有任何侵权行为,请通知我删除,谢谢大家!
个人邮箱:865460609@qq.com

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
Junwind
讨论数量: 0
发起讨论 只看当前版本


暂无话题~