0
我有一个用户输入的字段'从'和'到'必须提交给两个不同的php文件,它将mysql表导出到csv文件并打开它在一个新的窗口下载。 因为我有2个表格和2个CSV文件要由用户下载,我有这种形式来传递值到2个PHP文件,这是导出。传递一个值使用2个表格到多个php文件
下面的代码有2个表格和2个phps,只有第一个工作正常。第二种形式无法访问$ _POST数组。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>EXPORT INVOICE </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<SCRIPT LANGUAGE="JavaScript">
function runscript()
{
document.f1.submit();
document.f2.submit();
}
</SCRIPT>
</head>
<body>
<form name="f1" method="post" action="export-tst-with-header.php" target="_blank">
<br>
<span class="sty2">Enter to export From Invoice No.:</span> <input type="text" size='10' maxlength='10' name="finv">
<span class="sty2">To Invoice No:</span> <input type="text" size='10' maxlength='10' name="tinv">
</form>
<form name="f2" method="post" action="export-tst-with-header2.php" target="_blank">
</form>
<input type="button" value="Export" onClick="runscript()">
</body>
</html>
下面是第一个导出文件到MySQL表转换为csv文件,这是工作的罚款,第二个文件也是相同的,但只有导出的表是不同的,这是不工作:
<?php
//echo "Exporting file - process"."<br><br>";
$dbservertype='mysql';
$servername='localhost';
$dbusername='aab';
$dbpassword='aabs';
$dbname='aab';
////////////////////////////////////////
////// DONOT EDIT BELOW /////////
///////////////////////////////////////
connecttodb($servername,$dbname,$dbusername,$dbpassword);
function connecttodb($servername,$dbname,$dbuser,$dbpassword)
{
global $link;
$link=mysql_connect ("$servername","$dbuser","$dbpassword");
if(!$link){die("Could not connect to MySQL");}
mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error());
}
//////// End of connecting to database ////////
$from=$_POST['finv'];
$to=$_POST['tinv'];
//echo $_POST['action'];
//if ($_POST['action'] == 'download')
//{
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=downloadinv.csv");
header("Pragma: no-cache");
header("Expires: 0");
$query = "SELECT * FROM INVHDR WHERE Invno between $from AND $to";
$export = mysql_query ($query) or die ("Sql error : " . mysql_error());
$fields = mysql_num_fields ($export);
for ($i = 0; $i < $fields; $i++)
{
$header .= mysql_field_name($export , $i) . "\t";
}
while($row = mysql_fetch_row($export))
{
$line = '';
foreach($row as $value)
{
if ((!isset($value)) || ($value == ""))
{
$value = "\t";
}
else
{
$value = str_replace('"' , '""' , $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line) . "\n";
}
$data = str_replace("\r" , "" , $data);
if ($data == "")
{
$data = "\n(0) Records Found!\n";
}
mysql_query("UPDATE INVHDR SET Export=1 WHERE Invno between $from AND $to");
print "$header\n$data";
//}
exit();
php?>
我添加了隐藏字段为第二种形式,它不工作,我的代码:\t \t
– 2013-03-06 11:17:47你需要为它赋值$ _POST ['t inv'] 如果您使用SESSION,我不鼓励这种解决方案,它会更容易 – gsmida 2013-03-06 11:22:35
Thankyou,会话正常工作。只是添加了这个:session_start();如果(isset($ _ POST ['Submit'])){ \t \t $ _SESSION ['finv'] = $ _POST ['finv']; \t \t $ _SESSION ['tinv'] = $ _POST ['tinv']; \t \t} – 2013-03-06 11:26:53