0

フィールド「from」と「to」のユーザー入力があります。これは、mysqlテーブルをcsvファイルにエクスポートし、ダウンロード用に新しいウィンドウで開く2つの異なるphpファイルに送信する必要があります。ユーザーがダウンロードするテーブルが2つとCSVファイルが2つあるので、エクスポートを行う2つのphpファイルに値を渡すためのこのフォームがあります。

以下のコードには2つのフォームと2つのphpがあり、最初の1つだけが正常に機能しています。2番目のフォームは$_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ファイルに変換する最初のEXPORTファイルです。これは正常に機能しています。2番目のファイルも同じですが、エクスポートされたテーブルのみが異なり、機能していません。

    <?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?>
4

1 に答える 1

0

$_POST['finv']と$_POST['tinv']を2番目のphpページに渡す必要があります。それらを$_SESSION変数内に格納する(そして2ページ目の$_SESSION['finv']と$_SESSION['tinv']からそれらを回復する)か、非表示フィールドを作成して再投稿します。

于 2013-03-06T11:07:58.523 に答える