2013-03-06 56 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