根据我的研究,似乎我想做的事情是不可能的,但是如果事情发生了变化,我想检查是否有人想出办法来做到这一点.
我有一个Web应用程序,它根据浏览器窗口中的用户选择生成打印报告.我有一个自定义页眉和页脚,当从浏览器打印报告时,应在每个打印页面上重复.它不是我需要的浏览器页眉和页脚,而是我生成的自定义页眉和页脚.另外,我不认为这是CSS和媒体类型的问题,但我不是CSS专家.我没有问题让页眉和页脚打印一次,但我不能让它们在每页上打印.我已经读过,如果我使用表重新创建报表页面,然后使用表头标记和CSS,这可能至少可以在每个页面上获取标题.我还没有成功,但如果它是唯一的选择,我会再试一次.一位同事建议我在我的php中计算行数并根据需要手动输出页眉和页脚.我想这是一个选项,但它似乎应该有一种方法来做到这不是那么"蛮力"!
另一个需要注意的是,我必须支持IE 6,所以我怀疑我尝试过的一些CSS内容是不受支持的.
如果有人知道如何做到这一点,那将是伟大的!如果没有,我将不得不重新考虑我的方法.
提前致谢!
更新(2011年12月14日)
我在这个问题上取得了相当大的进步,并且使用了答案中的一些信息,我确实生成了可用的报告,但从未如我所希望的那样好或专业.页脚的页面底部往往不够近,我不得不做大量的猜测工作和关于插入分页符决定大文本的"脆弱"计算,我只能支持限制页面格式集,以及对报告的任何更改都会导致一系列代码更改,但更加脆弱的计算.总有一种情况打破了某些报道的某些部分.我们重新审视了这些要求,现在使用TCPDF生成报告为PDF.文档有点不透明,需要进行一些实验,但结果要好得多,现在报告应该显示出来.我会对任何试图从浏览器做HTML报告的人说,除非它们非常简单,省去挫折(正如其他人在这里告诉我的那样)并使用PDF或类似的东西.
我有一些关于使用MySQLi,查询和相关内存管理的问题.这里的代码只是为了澄清我的问题,所以不要在它上面进行错误检查等等.我知道需要做的事:)
假设我有这样的事情:
@ $db = new mysqli($dbhost, $un, $ps, $dbname);
$query = "SELECT field1, field2 ".
"FROM table1 ".
"WHERE field1={$some_value}";
$results = $db->query($query);
while ($result = $results->fetch_object()) {
// Do something with the results
}
$query = "SELECT field1, field2 ".
"FROM table2 ".
"WHERE field1={$some_value2}";
// question 1
$results = $db->query($query);
while ($result = $results->fetch_object()) {
// Do something with the second set of results
}
// Tidy up, question 2
if ($results) {
$results->free();
} …Run Code Online (Sandbox Code Playgroud) 快速提问,寻找一些建议.我有一个站点,它将从数据库请求数据并在表中显示回用户.我正在使用jQuery(AJAX),php和MySQL.
哪里是生成的HTML表格来显示数据的最佳场所:应在PHP生成并发送整个事情(HTML +数据)从服务器返回的,还是应该由PHP刚刚发回的数据,以及jQuery的代码制作表并插入数据?
虽然这是在内联网上运行,但我仍然更喜欢最快速的方法.
更新:
我想为这个主题添加一些额外的信息,以防它对其他人有用.我完全同意这里提出的分离想法,并将其作为我的设计方法.我使用PHP检索并将所需数据组织成JSON,然后使用jQuery生成HTML以显示返回的信息.在这种情况下,我使用jQuery创建了一个电子表格样式表格,并填充了具有从PHP返回的值的"单元格".有一些行和列,事情运行正常,但正如我增加说,一个16 x 16表,用jQuery动态创建输入元素...
在这一点上,我再一次遇到了丑恶的幽灵,即IE6.
IE6仍然是我工作的批准浏览器,所以我的应用程序必须在它上面运行.当我在Firefox和Opera上测试我的设计时,界面加载速度很快,很高兴使用.当我在IE6中运行相同的代码时,生成接口需要太长时间; 足够长的时间,我的用户会再次开始点击,认为应用程序没有响应.我只能将其归结为IE6中的JavaScript引擎,因为代码在较新的浏览器中运行良好.所以,正因为如此,我又重新设计了部分接口,让PHP至少生成内部表格元素,填充数据,然后将其发送回客户端.它打破了我想要的漂亮分离,但我没有看到任何其他方法来加速IE6中的客户端.
无论如何,只是认为其他人可能对这里的结果感兴趣,对于像我这样的其他初学者,有多少浏览器支持要求会影响设计选择.
我有一个表(session_comments)与以下字段结构:
student_id (foreign key to students table)
session_id (foreign key to sessions table)
session_subject_ID (foreign key to session_subjects table)
user_id (foreign key to users table)
comment_date_time
comment
Run Code Online (Sandbox Code Playgroud)
现在,student_id,session_id和session_subject_id的组合将唯一地标识关于该会话主题的该学生的评论.
鉴于它们是唯一的,即使它们是外键,我是否有优势使它们成为该表的组合主键?
再次感谢.
我有一个元素集合,我想使用每个元素循环,但我在一个外部for循环中循环它们.当我在每个中找到我想要的东西时,我会返回false来突破.下一次外循环运行时,我想在我返回的元素之后的元素中开始.一般代码示例:
var nextIndex = 0;
for (var j=1; j <= someCount; j++) {
// do outside loop stuff
$('#someElemID').find('.someClass').each(function(index) {
if (/*this is right one*/) {
// do something
// next index should get passed to each function next loop... somehow?
nextIndex = index + 1;
return false;
}
});
}
Run Code Online (Sandbox Code Playgroud)
我想过切换到for循环,但后来我对如何从中获取返回感到困惑.find('.someClass').也许这本身就是一个单独的问题......
这是显而易见的吗?
我正在使用HTML生成报告,我正在使用CSS来控制使用分页符等的分页.我已经为用户提供了一次打印多个报告的选项,我将其创建为单个动态生成的HTML的一部分文献.将其作为单个文档使其成为单个打印作业,以避免打印假脱机问题.
我的问题是:我想以"page x of n"格式对较大动态HTML的一部分页面进行编号.但是,如果我让打印机执行此操作,它会将文档(正确地)视为单个文档并对整个文档进行编号.
有什么方法可以确定何时会发生CSS分页符,所以我可以在打印前将它们计算为一个部分,并将我自己的编号(例如HTML元素)放入长单文档中的部分中?
似乎应该有一种方法可以让我这样做,但在过去的几天里,解决方案让我望而却步,所以我想我会ping Stackoverflow.
更新:我最终做了什么:
我接受了克里斯托弗的回答,因为虽然我没有完全使用它,但它指出了我正确的方向.
我最终使用jQuery对内容进行了计算,基于打印的纸张大小,边距,字体大小等,然后为具有CSS用于分页的分页符添加元素.我跟踪添加了多少个分页符div,然后在处理完所有内容后更新每个分页符div中的html"page x of n"信息.这让我可以避免在开始时知道会有多少页面(感谢jQuery .each).
显然这个解决方案存在一些问题:
"页面x的n"元素不会显示为真正的页脚,而是显示在每个页面上的内容的底部.在我的情况下,这是一个可接受的妥协.
拆分内容大于页面的内容元素,特别是考虑到大部分内容都是由php生成的,有点复杂.我让它发挥作用,但同样,它需要可能打破印刷变化的假设.
计算取决于有关打印纸张大小,边距,字体大小等的假设.在我在Intranet上运行的情况下,这也是一个可接受的折衷方案,因为我可以控制这些选项.可以添加附加代码以处理将来的一些变化(例如纸张尺寸).
这个解决方案,虽然不完美,有点"脆弱",解决了我的问题,允许我一次打印多个报告,避免打印机假脱机,跟踪和重新启动页面编号,并避免生成PDF作为打印的中间步骤.
我发现这是一个奇怪的难以破解,所以我仍然会欣赏有关解决方案的意见和建议.
谢谢!
更新2:最终解决方案......自己避免头痛:
尽管我采用这种方法可能比我应该做的更远,虽然取得了一些小小的成功,但最终解决方案并不是因为它最终变得太"脆弱"了.报告格式的任何变化,添加到现有报告中的新内容,纸张大小等都打破了计算,最终导致了大量的额外工作!
那么,最终的解决方案呢?"抵抗是徒劳的!" 只需将报告作为PDF即可.如果你愿意,你可以开始"我们告诉你的"合唱,我可以接受;-)
我选择了TCPDF库,这个版本非常出色,如果有点难以开始的话.这些例子非常有用.现在我对报告进行了完整的自定义,所有内容都按原样生成.多个报告很容易创建为单个PDF(防止打印假脱机问题),页面组允许编号完全按照我的需要工作.
所以,如果你想做这样的事情,我会建议你切入追逐,跳过HTML/CSS类型报告的挫折,并做PDF.
这是我想要完成的.我有一个使用jQuery对PHP文件进行AJAX调用的表单.PHP文件与数据库交互,然后创建页面内容以作为AJAX响应返回; 即,该页面内容被写入$.ajax呼叫成功函数中的新窗口.作为PHP文件返回的页面内容的一部分,我有一个简单的HTML脚本标记,其中包含一个JavaScript文件.特别:
<script type="text/javascript" src="pageControl.js"></script>
Run Code Online (Sandbox Code Playgroud)
这不是在PHP中回应(虽然我已经尝试过),它只是html.pageControl.js与生成内容的php文件位于同一目录中.
无论我尝试什么,我似乎都无法将pageControl.js文件包含在内,或者在为响应AJAX调用成功而创建的新窗口中工作.我最终得到像"预期的对象"或未定义的变量之类的错误,这让我相信文件没有包含在内.如果我将JavaScript直接复制到PHP文件中,而不是将脚本标记与src一起使用,我可以使它工作.
这里有关于调用文件,php和jQuery AJAX之间的范围解析的东西吗?我将来希望以这种方式包含javascript文件,并希望了解我做错了什么.
再次问好:
我已经解决了这个问题,但仍然没有运气.我将尝试澄清我在做什么,也许这会带来一些想法.我根据要求提供了一些代码,以帮助澄清一些事情.
这是序列:
单击表单按钮由jQuery代码处理,如下所示:
$(document).ready(function() {
$("#runReport").click(function() {
var report = $("#report").val();
var program = $("#program").val();
var session = $("#session").val();
var students = $("#students").val();
var dataString = 'report=' +report+
'&program=' +program+
'&session=' +session+
'&students=' +students;
$.ajax({
type: "POST",
url: "process_report_request.php",
cache: false,
data: dataString,
success: function(pageContent) {
if (pageContent) {
$("#result_msg").addClass("successMsg")
.text("Report created.");
var windowFeatures = "width=800,menubar=yes,scrollbars=1,resizable=1,status=yes";
// open a new report window
var reportWindow = …Run Code Online (Sandbox Code Playgroud)我有一个在Intranet上运行的客户端/服务器应用程序,我需要在数据库的一个表的一个字段中加密数据.该字段目前是TEXT数据类型,我所学到的并不适合MySQL中的加密.存储在该字段中的文本类似于包含来自主管的叙述性评论的员工绩效评估.由于系统运行的网络的个人信息限制,此数据不能以纯文本格式存储.数据还需要通过应用程序的客户端具有不同"角色"(身份验证级别)的不同用户进行编辑.
所以...我一直在研究如何加密这些数据,这是我目前所理解的:
在这种情况下使用AES函数是一种合适的方法来继续这个,还是我不知道的问题?由于文本的潜在长度,我确实对问题(性能?)感到疑惑.我发现的大多数示例都涉及加密较小的数据:例如姓名,地址,信用卡号等.
任何建议将不胜感激.提前致谢!
我正在努力使用 TCPDF 实施报告生成解决方案。我的一些报告很小(2-3 页),但用户可以选择一次选择许多报告,并请求所有报告。
目前,我生成一个包含所有报告的 PDF,每个报告都从一个新页面开始,并使用页面分组,以便为每个报告重新启动页码编号。当它工作时,它工作得很好,但是当我选择了太多报告后,代码就消失了,我最终得到了一个空的 PDF。
更新:我应该提到创建单个 PDF 是客户的要求。他们希望拥有一个 PDF 目录,以便在选择多个报告时能够在单个 PDF 内的报告之间轻松切换。
我的问题是:
生成此 PDF 而不最终得到空白 PDF 的最有效方法是什么?我似乎找不到 TCPDF 可以处理的大小是否有限制。
我应该在 PHP 中使用 ob_start() 还是像我做的那样构建一个大字符串?
我的报告最初是 HTML,所以我发送该 TCPDF。但是,如果我使用其他方法(例如 Cell、MultiCell 等)输出信息,TCPDF 的性能会更好吗?
这是我输出 PDF 的代码片段。$pdf 对象是根据库中包含的相关 TCPDF 示例设置的:
foreach ($students_info as $student_info) {
$info = $student_info->fetch_object(); // get query result object
// put in the student information
$pdf->set_student_info($info->lastName, $info->firstName, $info->rank, $info->idNum);
$pdf->startPageGroup(); // start a page group to handle paging for multiple students
$pdf->AddPage(); // add a page …Run Code Online (Sandbox Code Playgroud) php ×5
html ×3
javascript ×3
css ×2
jquery ×2
printing ×2
aes ×1
ajax ×1
database ×1
each ×1
encryption ×1
footer ×1
foreign-keys ×1
header ×1
mysql ×1
mysqli ×1
pdf ×1
primary-key ×1
script-tag ×1
security ×1
tablelayout ×1
tcpdf ×1