Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP导出到CSV-不导出最新数据_Php_Sql_Csv - Fatal编程技术网

PHP导出到CSV-不导出最新数据

PHP导出到CSV-不导出最新数据,php,sql,csv,Php,Sql,Csv,我花了5个多小时在论坛和互联网上寻找这个问题的答案 基本上,我有一个网页,其中一个表是使用从Oracle SQL Server收集的数据生成的 当页面加载时,表格显示过去7天的数据。我有一个带有Go按钮和Export to CSV按钮的日期选择字段 如果单击“导出”按钮,将提示保存或打开。CSV很好,它有正确的数据等 问题是,当我使用日期选择字段选择日期并点击go。。。页面上的表格将刷新,显示特定日期的数据。如果单击“导出到CSV”,则数据似乎仍然是页面首次加载时的原始数据 这是我的密码。。。

我花了5个多小时在论坛和互联网上寻找这个问题的答案

基本上,我有一个网页,其中一个表是使用从Oracle SQL Server收集的数据生成的

当页面加载时,表格显示过去7天的数据。我有一个带有Go按钮和Export to CSV按钮的日期选择字段

如果单击“导出”按钮,将提示保存或打开。CSV很好,它有正确的数据等

问题是,当我使用日期选择字段选择日期并点击go。。。页面上的表格将刷新,显示特定日期的数据。如果单击“导出到CSV”,则数据似乎仍然是页面首次加载时的原始数据

这是我的密码。。。 如果代码不是很好,我很抱歉,我是php的新手

if(isset($_POST['csv'])) $csv_request=$_POST['csv']; else $csv_request="";  
if(isset($_POST['datepicker'])) $date_filter=$_POST['datepicker']; else $date_filter="";

$output_csv = "";
$chosenDate = $date_filter;

if($chosenDate== "" || $chosenDate == Null){
        $mywhere = 'where timestamp >= trunc(sysdate)-7';
    }
    elseif ($chosenDate=='datepicker'){
            $date_chosen = $_POST['datePicker'];
            $mywhere = "where timestamp like to_date('$date_chosen', 'dd/mm/yyyy')";
    }


        $sql =  "Select to_char(timestamp, 'dd/mm/yy hh24:mi') timestamp, site, sum(Manual_coos) Manual_COOS,Sum(Faulty_COOS) Faulty_COOS, bearer from t_ca_Processed
                    ".$mywhere."
                    AND bearer = '4G'
                    AND faulty_coos = 1
                    group by timestamp, site, Manual_coos, Faulty_COOS, bearer
                UNION ALL
                Select to_char(timestamp, 'dd/mm/yy hh24:mi') timestamp, site, sum(Manual_coos) Manual_COOS,Sum(Faulty_COOS) Faulty_COOS, bearer from t_ca_Processed
                    ".$mywhere."
                    AND bearer = '4G'
                    AND Manual_coos = 1
                    group by timestamp, site, Manual_coos, Faulty_COOS, bearer
                Order by timestamp ASC";



            $st = $db->execute($sql);

        $output = "<table class = 'sortable' border = 1 Align = 'Center'>
                        <tr style = 'background-color: #f00;'>
                            <th>TimeStamp</th>
                            <th>Site</th>
                            <th>Manual COOS Total</th>
                            <th>Faulty COOS Total</th>
                            <th>Bearer</th>
                        </tr>";

        $output_csv = "TimeStamp,Site,Manual COOS Total,Faulty COOS Total,Bearer\n";
        $counter = 0;

        while (($row = oci_fetch_row($st)) != false)
            {
                    $output .= "<tr";

                    $output .= "><td>$row[0]</td>
                        <td align=center>$row[1]</td>
                        <td align=center>$row[2]</td>
                        <td align=center>$row[3]</td>
                        <td align=center>$row[4]</td></tr>\n";

                    $output_csv .= "$row[0],$row[1],$row[2],$row[3],$row[4]\n";
                    $counter ++;
            }
        $output .= "</table>";
        unset($db);

    If ($csv_request=='csv'){

        header("Content-Type: application/octet-stream");
        header("Content-Disposition: attachment; filename=\"".$File_name.".csv\";");
        header("Content-Transfer-Encoding: binary");
        echo $output_csv;
    }
    else
    {   
这是我的HTML

 <!DOCTYPE html>
<html>
    <head>
    <style>
        table.sortable tbody tr:nth-child(2n) td {
        background: #DDDDDD;
        }
        table.sortable tbody tr:nth-child(2n+1) td {
        background: #ccfffff;
        }
    </style>
        <script type='text/javascript' src="/common/javascript/kpc_sorttable2.js"></script>
        <script type='text/javascript' src='/common/flot/jquery.js'></script>
        <script type="text/javascript" src="/common/jquery/ui/1.10.2/ui/jquery-ui.js"></script>
        <script type="text/javascript" src="/Common/jQuery/ui/1.10.2/ui/jquery.ui.core.js"></script>
        <script type="text/javascript" src="/Common/jQuery/ui/1.10.2/ui/jquery.ui.widget.js"></script>
        <script type="text/javascript" src="/Common/jQuery/ui/1.10.2/ui/jquery.ui.datepicker.js"></script>
        <link rel= 'stylesheet' type=text/css href='/common/style.css'>
        <script>
                $(function() {
                    $( "#datepicker" ).datepicker({
                        dateFormat: 'dd/mm/yy'
                    })
                })
        </script>
        <script>

        </script>
    </head>
    <body>

        <?php   generateHeader($menu,'4G Cells Down',1); ?>
        <div class='whitebox'>
        <form method='post' action="" name="parameters" id="parameters">
            <input type='hidden' name='csv' value='csv'>
            <input type='submit' value="Export as CSV" style="float: right;">
        </form>
        <form method='post' action="" name="parameters1" id="parameters1">
            <h3>Last Refreshed <?= $page_load_time ?></h3>
            <input type='hidden' name='datepicker' value='datepicker'>
            <h3>Date: <input type="text" id="datepicker" name="datePicker"><input type='submit' value="Go"></h3>
            <p><?= $output ?><p>
        </form>
        </div>
        <?php
            generateFooter();
        ?>
    </body>
</html> 
<?php } ?>
当我回显$output\u csv时,我总是看到最新的数据集。。。但是,CSV始终是原始数据。我试图回显CSV,但我收到一个错误,说已经发送了标题

我想知道当页面最初加载时,是否已经创建了csv,并且只有当我点击导出按钮时才会提示下载,并且当我有了新数据时,文件无法重新写入

再次抱歉,如果我不是很清楚,这是新的:

干杯
Mike

您的文件可能会被Web服务器缓存。 如果您添加缓存buster和/或缓存头,它应该可以工作

header("Content-Transfer-Encoding: binary");
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
有关PHP函数的更多信息,包括缓存指令

如果为每个更改或请求生成一个唯一的文件名,它也将被视为一个新文件,并且缓存将被禁用

# Generate a unique name for each request
$File_name = uniqid($File_name . "_");
header("Content-Disposition: attachment; filename=\"".$File_name.".csv\";");

有关该功能的更多详细信息,请参见PHP函数。

问题在于,当您搜索日期时,页面刷新和表单刷新也会出现,因此当您单击导出csv时,请求获取默认视图。使用当前视图更新表单选定数据

它的价值是什么

<input type="text" id="datepicker" name="datePicker">

必须始终与当前视图保持一致

浏览器将缓存您的CSV。要测试此功能,请按CTRL+F5对页面进行硬刷新,然后尝试下载您的CSV。如果正确,则缓存过期信息。要解决这个问题,只需将时间附加到文件名,这样浏览器就不会认为它是同一个文件并重新下载。尝试了Crtl+F5,但仍无法恢复原始数据。不过谢谢。那么也许你的问题是pipeHi moorscode的进一步问题。我确实尝试了缓存控制头,但仍然不起作用,我也加入了expires头,但同样也不起作用。不过,我会尝试uniqid并在其他标题中添加回谢谢,我添加了额外的代码,以使输入值保持所选的值。。。但它仍然不起作用