PHP 7从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

5.6 实战演练——创建酒店系统在线订房表

本实例主要创建酒店系统的在线订房表,其中需要创建两个PHP文件,具体创建步骤如下。

步骤01 在网站主目录下建立文件formstringhandler.php,输入以下代码并保存。

    <! DOCTYPE     html     PUBLIC     "-//W3C//DTD     XHTML     1.0     Transitional//EN"
"http://www.w3.org/TR/xhtml1/ DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
您的订房信息:</HEAD>
    <BODY>
    <? php
     $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
     $customername = trim($_POST['customername']);
     $gender = $_POST['gender'];
     $arrivaltime = $_POST['arrivaltime'];
     $phone = trim($_POST['phone']);
     $email = trim($_POST['email']);
     $info = trim($_POST['info']);
if(! eregi('^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9_\-\.]+$', $email)){
        echo "这不是一个有效的email地址,请返回上页且重试";
        exit;
     }
     if(! eregi('^[0-9]$', $phone) and strlen($phone)<= 4 or strlen($phone)>= 15){
        echo "这不是一个有效的电话号码,请返回上页且重试";
        exit;
     }
     if( $gender == "m"){
        $customer = "先生";
     }else{
        $customer = "女士";
     }
     echo '<p>您的订房信息已经上传,我们正在为您准备房间。确认您的订房信息如下:</p>';
    echo $customername."\t".$customer.' 将会在 '.$arrivaltime.' 天后到达。您的电话为’.$phone."。我们将会发送一封电子邮件到您的email邮箱:".$email."。<br /><br />另外,我们已经确认了您其他的要求如下:<br /><br />";
    echo nl2br($info);
    echo "<p>您的订房时间为:".date('Y m d H:i:s')."</p>";
   ?>
   </BODY>
   </HTML>

步骤02 在网站主目录下创建文件form4string.html,输入以下代码并保存。

    <! DOCTYPE     html     PUBLIC     "-//W3C//DTD     XHTML     1.0     Transitional//EN"
"http://www.w3.org/TR/xhtml1/ DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <HEAD><meta  http-equiv="Content-Type"  content="text/html;  charset=gb2312"
/><h2>GoodHome在线订房表。</h2></HEAD>
    <BODY>
    <form action="formstringhandler.php" method="post">
    <table>
    <tr bgcolor="#3399FF" >
        <td>客户姓名:</td>
        <td><input type="text" name="customername" size="20" /></td>
    </tr>
    <tr bgcolor="#CCCCCC" >
        <td>客户性别:</td>
        <td>
        <select name="gender">
          <option value="m">男</option>
          <option value="f">女</option>
        </select>
        </td>
    </tr>
    <tr bgcolor="#3399FF" >
        <td>到达时间:</td>
        <td>
        <select name="arrivaltime">
          <option value="1">一天后</option>
          <option value="2">两天后</option>
          <option value="3">三天后</option>
          <option value="4">四天后</option>
          <option value="5">五天后</option>
        </select>
        </td>
    </tr>
    <tr bgcolor="#CCCCCC" >
        <td>电话:</td>
        <td><input type="text" name="phone" size="20" /></td>
    </tr>
    <tr bgcolor="#3399FF" >
        <td>email:</td>
        <td><input type="text" name="email" size="30" /></td>
    </tr>
    <tr bgcolor="#CCCCCC" >
        <td>其他需求:</td>
        <td> <textarea name="info" rows="10" cols="30">    如果您有什么其他要求,请填在这里。</textarea>
        </td>
    </tr>
    <tr bgcolor="#666666" >
        <td align="center"><input type="submit" value="确认订房信息" /></td>
    </tr>
    </table>
    </form>
    </BODY>
    </HTML>

步骤03 运行form4string.html,结果如图5-15所示。

图5-15 在线订房表

步骤04 填写表单。【客户姓名】为“王小明”、【客户性别】为“男”、【到达时间】为“三天后”、【电话】为13592XXXX77、【email】为wangxiaoming@hotmail.com、【其他需求】为“两壶开水,【Enter】一条白毛巾,【Enter】一个冰激凌”。单击【确认订房信息】按钮,浏览器会自动跳转至formstringhandler.php页面,显示结果如图5-16所示。

图5-16 确认订房信息

【案例分析】

(1)$customername = trim($_POST['customername']); 、$phone = trim($_POST['phone']); 、$email = trim($_POST['email']);和$info = trim($_POST['info']);都是通过文本输入框直接输入的。所以,为了保证输入字符串的纯粹性,以方便处理,需要使用trim()对字符串前后的空格进行清除。另外,ltrim()清除左边的空格;rtrim()清除右边的空格。

(2)! eregi('^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9_\-\.]+$', $email)中使用正则表达式对输入的email文本进行判断。

(3)nl2br()对$info变量中的【Enter】操作,也就是对<br />操作符进行了处理。在有新行“\nl”操作的地方生成<br />。

(4)由于要显示中文,因此需要对文字编码进行设置,charset=gb2312就是简体中文的文字编码。