Php mysql\u第二篇文章的查询结果可用吗?

Php mysql\u第二篇文章的查询结果可用吗?,php,javascript,html,Php,Javascript,Html,我正在使用一个动态生成的查询字符串来显示一些报告的搜索表单的结果-有5个搜索字段,$query2可能不包含任何内容或5个附加搜索值 $query="SELECT * from employee_work where company_id='$company_id' $query2"; 当我发布表单时,屏幕上显示的数据非常棒。然后我还使用TCPDF提供数据的PDF下载。我目前还通过POST为TCPDF学习课程: if($_POST['PDF']) { do the TCPDF stuff

我正在使用一个动态生成的查询字符串来显示一些报告的搜索表单的结果-有5个搜索字段,$query2可能不包含任何内容或5个附加搜索值

$query="SELECT * from employee_work where company_id='$company_id' $query2";
当我发布表单时,屏幕上显示的数据非常棒。然后我还使用TCPDF提供数据的PDF下载。我目前还通过POST为TCPDF学习课程:

if($_POST['PDF']) {
    do the TCPDF stuff......
}

<div id="export-buttons">
<form name="export" method="post" action="">
<input type="submit" name="PDF" value="PDF" class="button pdf">
</div>
if($\u POST['PDF'])){
做TCPDF的东西。。。。。。
}
问题是,当用户单击PDF按钮时,POST数组现在只包含submit按钮的值,而不包含先前的$query2数据,因此当我使用TCPDF时,它会输出所有数据并忽略搜索字符串的$query2部分

我如何解决这个问题,使原始$query2数据保持可用,或者有另一种方法检查表单按钮是否已单击,而不覆盖POST的内容?我可以用javascript来做这件事吗

谢谢
Jason

在没有看到更多代码的情况下,这可能是因为HTML页面上有两个“表单”,一个表单中有一个提交按钮,另一个表单中有一个提交按钮

<form>
   <input name="1" />
   <input type="submit" name="go"/>
</form> 
<form>
   <input type="submit" name="createPDF" />
</form> 

确保所有字段/按钮都位于同一表单中

<form>
   <input name="1" />
   <input type="submit" name="go"/>
   <input type="submit" name="createPDF" />
</form> 

为什么不添加隐藏的输入,这些输入包含搜索条件的值?这样,当用户发布PDF请求时,您也可以获得这些文件,并可以在查询中使用它们(在确保值安全后)

另一种更安全的方法是在会话中存储一个对象或数组,其中包含生成列表的参数,然后将该搜索的标识符作为隐藏输入传递给PDF表单,如:

$_SESSION['sc0000001'] = array('field1'=>'value1', 'field2'=>'value2', 'field3'=123);
...
<form>
<input type="hidden" name="sc" value="0000001" />
...
</form>
带有搜索结果的HTML,在表单之后获取pdf:

<form>

<input type="submit" value="get pdf" />
</form>

添加胡椒粉和盐(您需要修改代码以适合自己,如果您使用的是文本过滤器,可能还需要修改查询)

我确实有两个表单,因为原始搜索表单和PDF按钮表单从未一起显示-PDF按钮表单仅在按下原始搜索表单上的“提交”按钮并显示结果后才会显示。我没有想到隐藏的输入,但当某些搜索可能没有其他字段,而其他搜索可能没有其他字段时,我该怎么做可能有最多5个?我尝试将实际查询结果放入会话变量中,但无法使其工作,尽管我不记得错误的原因或原因…今晚我将尝试一下,并让您知道我的进展情况,谢谢您的帮助
$sql = " select * from table_name where 1 ";

$arrFilters = array();
for($i=1;isset($_POST['filter'.$i]) && trim($_POST['filter'.$i])!="";$i++) { 
$arrFilters['filter'.$i] = mysql_real_escape_string($_POST['filter'.$i]);
$sql.=" AND filter".$i."=".$arrFilters['filter'.$i];
}
// here you should have the complete $sql with the filters supplied

// lets save this search, we are going to keep only the last search from this user in his session.
$_SESSION['listingFilters'] = $arrFilters;
<form>

<input type="submit" value="get pdf" />
</form>
$sql = " select * from table_name where 1 "; // basic query
// get the filters array from session
$arrFilters = isset($_SESSION['listingFilters']) ? $_SESSION['listingFilters'] : array();
foreach($arrFilters as $filter => $value) { // for each filter add it to the query
$sql.=" AND filter".$i."=".$arrFilters['filter'.$i];
}
// here you should have the complete $sql with the filters in session
// and can do your pdf magic