-
PHP实现打印类(实现队列排队打印)
打印类实现原理很简单就是用户点击打印时把数据保存到数据库,然后由js来调用打印机来打印,如果打印完了把记录删除,再执行一条打印了,具体代码如下.
类实现想法是:先把要打印的数据都收集起来,在用js调用window打印函数,目前就使用于IE.
类提供打印排队功能,说白了就是一条一条读取数据,代码如下:
- class Wprint{
- //收集打印代码
- private $data = array();
- //处理打印代码
- private $handle;
- public function __construct()
- {
- header("Content-type:text/html;charsetutf-8");
- $this->link(); //链接数据库
- $this->collect($_POST["username"],$_POST["content"],$_POST["ip"]);
- $this->handle();
- }
- //链接数据库
- private function link()
- {
- $link = mysql_connect('localhost', 'root', '123456');
- mysql_select_db('shen', $link);
- mysql_query('SET NAMES utf8');
- }
- //收集打印代码
- private function collect($username,$content,$ip)
- {
- $code["username"] = $username;
- $code["content"] = $this->check($content);
- $code["ip"] = $ip;
- $code["state"] = 0;
- $code["priority"] = 0;
- array_push($this->data,$code);//数据节点入栈
- }
- //处理打印代码入库
- private function handle()
- {
- foreach($this->data as $value)
- {
- $sql = "insert into print(username,content,ip,state,priority)
- values('{$value["username"]}','{$value["content"]}',
- '{$value["ip"]}','{$value["state"]}','{$value["priority"]}')";
- $query = mysql_query($sql);
- if($query)
- {
- $id = mysql_insert_id(); //获取最近insert操作得到的ID
- echo "数据收集成功,正在排队打印,排队ID为".$id;
- $this->num($id);
- }
- else
- {
- echo "数据收集失败,请3秒后再一次提交";
- }
- }
- }
- //检查传人数据是否为空
- private function check($string)
- {
- if(strlen($string) == 0 || $string == " ")
- {
- echo "数据收集失败,打印内容为空";
- exit;
- }else
- {
- return $string;
- }
- }
- //获取打印排队人数
- private function num($id)
- { //开源软件:phpfensi.com
- $sql = "select id from print where state=0 and id<".$id." order by id asc";
- $query = mysql_query($sql);
- $num = mysql_num_rows($query);
- echo ",您前面还有".$num."个人在排队";
- }
- //打印数据
- public function Yprint()
- {
- $sql = "select id,content from print where state=0 order by id asc limit 1";
- $query = mysql_query($sql);
- $row = mysql_fetch_array($query);
- if(!emptyempty($row["content"]))
- {
- echo "<script tyle=\"text/javascript\">
- window.print();
- </script>";
- $id = $row["id"];
- $sql = "update print set state=1 where id=".$id;
- mysql_query($sql);
- echo "打印处理完成";
- }else
- {
- echo $row["content"];
- }
- }
- }
思想很简单,收集数据再一个一个处理,这样就不仅解决了网络打印的问题,还避免了网络打印打印过程排队的问题.
出处:http://www.phpfensi.com/php/20150413/9229.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式