最近闲着没事就自己弄了个图书馆的信息管理系统,写的比较差,不过确实学到了很多的东西。就在这里把编写系统的过程中遇到的问题和见解记录下吧。
1. 无刷新登录 #
每个人在该系统中都有一个自己的个人中心,于是我就在首页上写了一个登陆框,可是登陆框仅仅是首页上一个小小的部分,换句话说,这个登陆框是嵌入在首页的,于是这个登录就必须是无刷新登录。在这个部分中,我使用了 php+jquery+ajax,就能够完成了无刷新登录了。可是我还是遇到了一个小小的问题,当我登录完成后,这个登录界面就得换成其他的界面,提示用户已经登录成功,而且不管刷新多少次该页面,都不能回到登录界面。于是我就在这里用了一个很笨的方法。当用户能够登录成功时,显示登陆后的界面,这个是用 js 来控制的。在首页上,我还有一个选择是用 session 来控制的。登录成功后,我会在session["login"]
中存储该用户的用户名,在首页上就判断 session["login"]是否存在,如果不存在依然显示登陆框,否则显示登录后的界面。
2. 既要显示标题还要能在点击该标题 #
同一个界面既要显示标题还要能在点击该标题后,能够显示具体的内容。这个功能是我在新闻发布模块的时候用到的,这个功能是用 url 中的变量值来进行判定的。当首次进入新闻中心的这个界面时,url 为 news.php,当点击某个标题时,就会跳转到 news.php?nid=1. 在代码中获取 nid 的值,如果不存在就会显示新闻的标题,如果存在就显示某个新闻的具体内容。
3. 无刷新分页 #
这个是老生常谈了,虽然网上有很多的代码,可是当自己写的时候,才会发现还是有很多的问题的。我在上一篇的文章里写了,这里就不多说了。
4. 多条件组合查询 #
这部分在该系统已经不是什么问题了,因为我以前写另一个东西的时候就已经解决了。这个很好理解的,当点击查询按钮的时候,不管这些条件时候为空,都一并传到后台,当后台接收到数据并赋值给某个变量,然后进行 where 语句拼接,如果哪个变量不为空(即前台需要的查询条件),就把该变量拼接起来,很抽象么?
$book_title = $_REQUEST["book_title"];
$book_author = $_REQUEST["book_author"];
$book_class = $_REQUEST["book_class"];
$book_pub = $_REQUEST["book_pub"];
//查询条件组合
$where="";
if($book_title){
$where .= "title LIKE '%$book_title%' and ";
}
if($book_author){
$where .= "author LIKE '%$book_author%' and ";
}
if($book_class){
$where .= "classified LIKE '%$book_class%' and ";
}
if($book_pub){
$where .= "publishHouse LIKE '%$book_pub%' and ";
}
//如果where不为空,去掉最后的and和两边的空格
if($where){
$where = "where ".rtrim($where," and ");
}
当 where 语句组合完成后执行 sql 语句就行了。
还有就是特别要注意的是,在每个完整的页码内,要加上 w3c 标准,否则某些浏览器解析元素的时候会发生变形的。