VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP实现打印类(实现队列排队打印)

打印类实现原理很简单就是用户点击打印时把数据保存到数据库,然后由js来调用打印机来打印,如果打印完了把记录删除,再执行一条打印了,具体代码如下.

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

类提供打印排队功能,说白了就是一条一条读取数据,代码如下:

  1. class Wprint{ 
  2.      //收集打印代码 
  3.      private $data = array(); 
  4.      //处理打印代码 
  5.      private $handle
  6.      public function __construct() 
  7.     { 
  8.        header("Content-type:text/html;charsetutf-8"); 
  9.        $this->link(); //链接数据库 
  10.        $this->collect($_POST["username"],$_POST["content"],$_POST["ip"]); 
  11.        $this->handle(); 
  12.      } 
  13.       //链接数据库 
  14.       private function link() 
  15.      { 
  16.         $link = mysql_connect('localhost''root''123456'); 
  17.         mysql_select_db('shen'$link); 
  18.         mysql_query('SET NAMES utf8'); 
  19.       } 
  20.       //收集打印代码 
  21.       private function collect($username,$content,$ip
  22.       { 
  23.          $code["username"] = $username
  24.          $code["content"] = $this->check($content); 
  25.          $code["ip"] = $ip
  26.          $code["state"] = 0; 
  27.          $code["priority"] = 0; 
  28.          array_push($this->data,$code);//数据节点入栈 
  29.       } 
  30.       //处理打印代码入库 
  31.       private function handle() 
  32.       { 
  33.         foreach($this->data as $value
  34.         { 
  35. $sql = "insert into print(username,content,ip,state,priority) 
  36. values('{$value["username"]}','{$value["content"]}'
  37. '{$value["ip"]}','{$value["state"]}','{$value["priority"]}')"; 
  38.           $query = mysql_query($sql); 
  39.           if($query
  40.           { 
  41.             $id = mysql_insert_id(); //获取最近insert操作得到的ID 
  42.             echo "数据收集成功,正在排队打印,排队ID为".$id
  43.             $this->num($id); 
  44.           } 
  45.           else 
  46.           { 
  47.            echo "数据收集失败,请3秒后再一次提交"
  48.           } 
  49.         } 
  50.       } 
  51.        //检查传人数据是否为空 
  52.       private function check($string
  53.       { 
  54.         if(strlen($string) == 0 || $string == " "
  55.         { 
  56.           echo "数据收集失败,打印内容为空"
  57.           exit
  58.         }else 
  59.         { 
  60.           return $string
  61.         } 
  62.       } 
  63.       //获取打印排队人数 
  64.       private function num($id
  65.       {  //开源软件:phpfensi.com 
  66.         $sql = "select id from print where state=0 and id<".$id." order by id asc"
  67.         $query = mysql_query($sql); 
  68.         $num = mysql_num_rows($query); 
  69.         echo ",您前面还有".$num."个人在排队"
  70.       } 
  71.       //打印数据 
  72.       public function Yprint() 
  73.       { 
  74.          $sql = "select id,content from print where state=0 order by id asc limit 1"
  75.          $query = mysql_query($sql); 
  76.          $row = mysql_fetch_array($query); 
  77.          if(!emptyempty($row["content"])) 
  78.          { 
  79.            echo "<script tyle=\"text/javascript\"
  80.                        window.print(); 
  81.                </script>"; 
  82.            $id = $row["id"]; 
  83.            $sql = "update print set state=1 where id=".$id
  84.            mysql_query($sql); 
  85.  
  86.            echo "打印处理完成"
  87.          }else 
  88.          { 
  89.              echo $row["content"]; 
  90.          } 
  91.       } 
  92.    } 

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

 

出处:http://www.phpfensi.com/php/20150413/9229.html


相关教程