2013-03-06 54 views
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>&nbsp; <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?> 

回答

0

你必须将$ _POST ['finv']和$ _POST ['tinv']传递给第二个php页面。 您可以将它们存储在$ _SESSION变量中(并在第二页中从$ _SESSION ['finv']和$ _SESSION ['tinv']恢复它们,或者创建一个隐藏字段并重新发布它们。

+0

我添加了隐藏字段为第二种形式,它不工作,我的代码:\t \t

\t \t \t \t \t \t
2013-03-06 11:17:47

+0

你需要为它赋值$ _POST ['t inv'] 如果您使用SESSION,我不鼓励这种解决方案,它会更容易 – gsmida 2013-03-06 11:22:35

+0

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