PHP处理HTML表单的一个简单例子 (活动统计)

2015-02-24 wcdj


摘要:Web最吸引人的一个方面就是它是一个双向媒介,Web不仅能够发布信息,而且能够提供一种有效的方式从用户那里得到输入。本文记录如何使用PHP处理用户提交的Web表单。关于Web表单的学习可以参考www.w3schools.com网站。


从一个脚本向另一个脚本传递数据时,可以使用两种常见的方法:GET和POST。虽然GET是默认方法,但一般希望使用POST,因为它能处理更多地数据。如果使用POST,所有发送给PHP脚本的提交数据都必须使用$_POST语法来引用。


例子:笔者与朋友打算去香港购物,写了一个简单的调查页面whentohk.php,统计每个人时间情况,从而方便选择一个合适的集合时间。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>初七几点去香港</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <label for="7am">早上7点到深圳湾口岸集合</label>
  <input type="radio" name="time" id="7am" value="7" />
  <br />
  <label for="8am">早上8点到深圳湾口岸集合</label>
  <input type="radio" name="time" id="8am" value="8" />
  <br />
  <label for="9am">早上9点到深圳湾口岸集合</label>
  <input type="radio" name="time" id="9am" value="9" />
  <br />
  <label for="other">其他时间</label>  
    <input type="text" name="other" id="other" size="60"  maxlength="128" /> 
    <br />
    <br />
    <input type="submit" value="确定"  name="submit" />  
</form>
</body>
</html>

<?php

  $time  = $_POST['time'];
  $other = $_POST['other'];

  if (isset($_POST['time']))
  {
    if ($other != "")
    {
      printf("%s <br />", $other);
    }

    printf("OK, 明天%s点我们在深圳湾口岸集合<br />", $time);
    printf("不见不散!<br />");
  }
  else if ($other != "")
  {
    printf("%s <br />", $other);
    printf("让我考虑一下,等下答复你!<br />");
  }
  else if (isset($_POST['other']))
  {
    printf("你还没有回答我呢!<br />");
  }


?>



为了方便,以上这个whentohk.php脚本,包含了html页面的代码和提交post请求后处理的php代码。但是上面只包含了基本的统计逻辑,还没有把统计的数据保存下来。

(1) 首先根据需求,创建db和table。

create database research;

create table whentohk(time varchar(128), info varchar(128));

(2) 修改whentohk.php脚本,并添加数据的保存和查询功能。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>活动统计 v1.0 copyleft: gerryyang</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <label for="7am">早上7点到深圳湾口岸集合</label>
  <input type="radio" name="time" id="7am" value="7" />
  <br />
  <label for="8am">早上8点到深圳湾口岸集合</label>
  <input type="radio" name="time" id="8am" value="8" />
  <br />
  <label for="9am">早上9点到深圳湾口岸集合</label>
  <input type="radio" name="time" id="9am" value="9" />
  <br />
  <label for="other">其他</label>  
    <input type="text" name="other" id="other" size="60"  maxlength="128" /> 
    <br />
    <br />
    <input type="submit" value="确定"  name="submit" />  
    <input type="submit" value="查询"  name="query" />  
</form>
</body>
</html>

<?php

  $time  = $_POST['time'];
  $other = $_POST['other'];
  $query = $_POST['query'];

  if (isset($_POST['time']))
  {
    if ($other != "")
    {
      printf("%s <br />", $other);
    }

    $info = sprintf("OK, 明天%s点我们在深圳湾口岸集合, 不见不散!", $time);
    printf("%s <br />", $info);

    do_save($info);


  }
  else if ($other != "")
  {
    $info = sprintf("%s", $other);
    printf("%s <br />", $info);

    do_save($info);
  }
  else if ($query == "查询")
  {
    do_query();
  }
  else if (isset($_POST['other']))
  {
    printf("你还没有回答我呢!<br />");
  }

  function connect_db(&$link)
  {
    $link = mysql_connect('localhost', 'test', '123456');
    if (!$link) {
      die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully <br \>'; 
  
    $db = "research";
    if (!mysql_select_db($db, $link)) 
    {
      die('Could not select database ' . $db);
    }
  }

  function do_save($info)
  {
    connect_db($link);

    $time = date('Y-m-d H:i:s');
    $query = 'insert into whentohk(time, info) values(\'' . $time . '\', \'' . $info . '\')';
    printf("%s <br />", $query);
    $result = mysql_query($query, $link);
    if (!$result) {
      $message  = 'Invalid query: ' . mysql_error() . "\n";
      $message .= 'Whole query: ' . $query;
      die($message);
    }

    //mysql_free_result($result);
  }

  function do_query()
  {
    connect_db($link);

    $query = 'select time, info from whentohk order by time desc';
    printf("%s <br />", $query);
    $result = mysql_query($query, $link);
    if (!$result) {
      $message  = 'Invalid query: ' . mysql_error() . "\n";
      $message .= 'Whole query: ' . $query;
      die($message);
    }

    echo "<hr />";
    printf("统计结果如下:<br />");
    while ($row = mysql_fetch_assoc($result)) 
    {
      printf("%s    %s <br />", $row['time'], $row['info']);
    }

    mysql_free_result($result);
  }

?>



问题记录


1,乱码问题。

<?php  
header('Content-Type:text/html;charset=utf-8');// 避免输出乱码  
 ?>  

2,在ubuntu apaches上调试查看日志的方法。

tail -f /var/log/apache2/error.log /var/log/apache2/access.log

3,mysql_query返回值类型错误问题。


[Thu Jan 19 00:34:18.028260 2017] [:error] [pid 10646] [client 103.7.30.105:64033] PHP Warning:  mysql_free_result() expects parameter 1 to be resource, boolean given in /var/www/html/cgi-bin/wx_interface_v2.php on line 144

http://stackoverflow.com/questions/14527864/mysql-free-result-expects-parameter-1-to-be-resource
http://php.net/manual/en/function.mysql-query.php#refsect1-function.mysql-query-returnvalues



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值