技术部作业指导

2016-12-16  本文已影响0人  aeeda10cd99d

目录:


HTML表单

表单代码:
<!Doctype html><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><html><head><title> 标题</title></head><body> <form action="" method="get"> 请输入英语老师名字 <input type="text" name = "teacher"> <input type="submit" value = "提交"> </form> </body> </html>
如果有注意的话,我在表单(form)中的

action = " "

是空的,这样的话,我们点了提交之后,用户在这个表单输入的内容就会提交给本页面。
举个例子,你说话总得有个人听吧,没有人听的话就相当于自言自语自己说给自己听。

效果如下:


代码1.png

数据库查询

我们之所以要用到数据库,是因为我们的数据存放在数据库了,要通过PHP代码去查询,
然后把查询的结果给用户看,而不是直接把数据库的网站给用户,说你自己去看啊王八蛋。

我们现在操作数据库很简单,无非增删改查,
其实很多时候只用到 **增 INSERT ** 和 查 SELECT

插入语句:

INSERT INTO 数据库名.数据表名 (列名) VALUES ('要插入的');

eg:
INSERT INTOHsnmdc.english1(class,ban,teacher,time,whe) VALUES ('1', '1', '1', '1', '1');
数据库其实就是这样

数据库.png

查询语句:

SELECT * FROM 数据表名 WHERE 列名 = '要查询的值'

eg:
SELECT * FROMenglish1WHEREteacher= '1'
这样的话,我会查询在 teacher 列中内容为 1 的整一行,然后把整一行都显示出来。

查询.png

代码逻辑

我们来说一下,大概的代码逻辑。写代码之前要大概知道自己的逻辑,大概想一个草图。
我们要通过表单form获取到用户输入的老师名字,然后用老师名字去数据表里的teacher列找出对应的一横行或者多行,然后再进行处理,把数据显示给人家看。

怎么获取到用户输入

<input type="text" name="teacher">

在这里,我们把用户的输入框取了一个名字teacher
这样,不管用户输入了什么,我们只需要用一个PHP代码就可以知道他输入的是什么了

echo $_GET['teacher'];

效果1.png

好了,我们获得到用户输入的内容了,接下来就是要拿去数据表里进行查询。


使用数据库之前的准备工作

你的东西放在屋子里,要进去屋子里才能拿到,但是屋子锁了,我们要怎么进去屋子呢?得用到钥匙。用php代码对数据库进行操作也是同个道理。

$link = @mysql_connect("localhost","root",密码)or die("数据库链接失败");
if($link)
{
mysql_select_db("Hsnmdc",$link);
}

上面是开启数据库的代码(注意修改上面的 密码。下面是查询函数(复制就好。)

function getall($sql)//查询函数
{
$query = mysql_query($sql);//执行语句
if($query) //如果执行成功
{
$temp = array(); //新建一个数组
while ($res=mysql_fetch_assoc($query)) { //mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组。
//返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false。
$temp[] = $res; //保存
}
return $temp; //保存查询返回的数组
}
else { return false; }
// 如果查询语句查不到东西返回错误
}

来看我代码怎么写

<?php
if(!empty($_GET['teacher'])) //如果提交之后的内容不为空就
echo $_GET['teacher'];
echo "
";
$teacher = $_GET['teacher'];
$cha = "SELECT * FROM english1 WHERE teacher = '{$teacher}' "; //数据库查询语句
$chaxun = getall($cha);//执行数据库的查询语句。套用函数就好
var_dump($chaxun);//$chaxun 已经变成一个数组了,用var_dump可以把数组都显示出来
?>

看一下效果

效果2.png
当我输入1并且提交之后,显示出了一个数组($chaxun )
如果我只想给用户看 班级 ,并不是看全部,那我就不能用var_dump了,而且这样显示出来很多人都看不懂。

我们要用到 echo 。但是单纯echo是输出不来结果的。
我们得采取以下步骤:

$num = count($chaxun,0);

这是数我们查询的结果有多少行。可以自己echo数一下。
比如我们查询的到只有 1 行而已。
那我们要输出 班级 的时候就这样

echo $chaxun[0]['class‘]

这是PHP基础的数组操作,不懂自己看书。

注意 第二个中括号[]里面的英文要和数据表的列名对应
当我写的$chaxun[0]['class'] 就只会显示出查询到的那一行中的 class 列里面的内容。
写 ['teacher‘] 就显示出 teacher。其他同理。


微信接口

你对微信公众号发送消息的时候,不仅仅是发送文字,而且还发送了一个XML数据包。
当你发送”你好“的时候,那边收到的是

"<xml>
<ToUserName><![CDATA[微信公众号]]></ToUserName>
<FromUserName><![CDATA[你]]></FromUserName>
<CreateTime>发送时间</CreateTime>
<MsgType><![CDATA[文本类型]]></MsgType>
<Content><![CDATA[ 你好 ]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";

我们做接口其实分2步,一就是解开这个XML数据包,二就是把我们要回复的放进去重新打包。

1.解开XML数据

这一部分不需要你会背会理解,因为套着用就好,目前对你们来说理解有点困难,先会用就好

先写好 文本消息的模板,这个解XML数据包和打包回去要用到

$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";

定义好我们的TOKEN。

define("TOKEN","weixin");

token 很重要,可以乱写,但是要记住,这个要和微校设置的一样。

//获取微信发送数据 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //返回回复数据 //解析数据 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //发送消息方ID 也就是微信用户 也称openid $fromUsername = $postObj->FromUserName; //接收消息方ID 就是你这个公众号 $toUsername = $postObj->ToUserName; //消息类型 $form_MsgType = $postObj->MsgType; //获取用户发送的文字内容 $form_Content = trim($postObj->Content);

举个和上面一样的例子
$fromUsername = 你
$tousername = 公众号
$form_msgtype = 文本
$form_content = 你好

然后我们就可以对这些数据进行处理了。
我们可以通过判断 $form_content 来知道用户对公众号发送了什么。


2.打包XML并发送回去。
这个其实很简单,但是要明白 sprintf函数的用法和占位符%s的用法。
eg:

$a = "大家好,我是%s";
$b = sprintf($a,'sb');

echo $b;

结果是

大家好,我是sb

等于 把’sb‘放进去$a 中 %s 的位置。
具体百度。

言归正传

$huifu = 你要说的话
然后用下面的代码就可以了。

$msgType = "text"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType,$huifu); echo $resultStr; exit;
注意$fromusername 和 $tousername 的位置,
再拉上去看看刚才的 $textTpl 的$formusername 和 $tousername 位置
已经发生交换了。
自己思考一下为什么。


记住,做接口的放在一个PHP文件,做表单的放在另外一个 PHP 文件。然后把2个PHP文件一起放上 winscp 上面。然后右键->文件名->生成URL ->复制。再修改一下链接,把IP地址改成我的域名。
然后把这个网站放在接口文件 里。
$huifu = 网站


最后一步

把接口放上微校
看之前PPT吧断网了。

上一篇下一篇

猜你喜欢

热点阅读