PHP云打印类完整示例

5年以前  |  阅读数:824 次  |  编程语言:PHP 

本文实例讲述了PHP云打印类。分享给大家供大家参考,具体如下:

一个项目需求要几百台电脑都有打印功能,本来是想用网络打印机的,后来发现没有网络打印机,就自己动手写一个打印类算了。

类实现想法是:先把要打印的数据都收集起来,在用js调用window打印函数。目前就使用于IE。

类提供打印排队功能。(PS,说白了就是一条一条读取数据)


    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)
       {
        $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(!empty($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"];
         }
       }
    }

思想很简单,收集数据再一个一个处理。 这样就不仅解决了网络打印的问题,还避免了网络打印打印过程排队的问题。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例