php – 仅打印页面上的选定项目
发布时间:2020-12-13 17:18:30 所属栏目:PHP教程 来源:网络整理
导读:我被要求为动态生成的页面提供一些棘手的打印功能.该页面将显示每个记录以及一个复选框.然后是页面底部的一个打印按钮.我们的想法是让用户选中他们想要打印的每个记录旁边的框,然后当他们点击页面底部的打印按钮时,只会打印选定的那些记录. 我假设需要一些CS
我被要求为动态生成的页面提供一些棘手的打印功能.该页面将显示每个记录以及一个复选框.然后是页面底部的一个打印按钮.我们的想法是让用户选中他们想要打印的每个记录旁边的框,然后当他们点击页面底部的打印按钮时,只会打印选定的那些记录.
我假设需要一些CSS和Javascript的组合,但我真的不知道.有任何想法吗?提前致谢! 解决方法
PHP解决方案
如果你有类似的东西 <form method="post" action="print.php"> <p>Select the records to be printed</p> <p> <input type="checkbox" name="records[]" value="1"><div class="record">Record 1</div><br> <input type="checkbox" name="records[]" value="2"><div class="record">Record 2</div><br> <input type="checkbox" name="records[]" value="3"><div class="record">Record 3</div> </p> </form> 您将在php脚本print.php中自动获取一个数组$_POST [‘records’],其中包含所选记录的所有值. (请注意,这只适用于所有复选框的名称相同且以[]结尾的情况) 然后php脚本可以执行以下操作: <?php foreach ($record in $_POST['records']) { // fetch the record with id $record from the database (or similar) // print this record to the page } echo "<script>window.print();</script>"; // or put that into the onload attribute of the body tag ?> JavaScript和CSS 另一个有效的可能性是通过javascript完成整个事情.因此,如果在单击打印按钮时检查了每个复选框,则必须检查每个复选框,然后删除或隐藏未检查的所有记录. 一个有用的东西也是css属性媒体,您可以使用它定义仅适用于某些设备的额外样式.除了打印按钮中的属性onclick =“window.print()”之外,此代码可以在没有任何javascript的情况下执行所有操作: @media print { input{ display: none; /* hides all input elements for the printer */ } .record { display: none; /* hide all records by default */ } input[checked] + .record,input:checked + div.record { /* display all that are immediately preceeded by a input with checked attribute */ display: block; } } 请注意,我仅在Safari中测试它(其中伪类:已检查导致所需结果而不是属性选择器),并且仅适用于支持css3和selector的较新版本的浏览器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |