【问题标题】:Silex and fputcsv issueSilex 和 fputcsv 问题
【发布时间】:2015-05-29 06:37:11
【问题描述】:

我在尝试通过 PHP 和 Silex 创建可下载的 CSV 时遇到问题。

这就是我现在所拥有的

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=csv.csv');


$output = fopen('php://output', 'w');
fputcsv($output, array('Referrer', 'Occurrence'));

$list = array();

$html = "<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.min.js'></script><script type='text/javascript' src='sort/jquery.tablesorter.min.js'></script>"
        . "</script><script type='text/javascript' src='sort/jquery.tablesorter.js'></script>"
        . "<script>" . '$' . "(document).ready(function(){" . '$' . "('#myTable').tablesorter();});"
        . "" . '$' . "(document).ready(function(){" . '$' . "('#myTable').tablesorter({widthFixed: true, widgets: ['zebra']}).tablesorterPager({container: " . '$' . "('#pager')}); }); </script>"
        . "<style>table{margin: 0 auto; border-collapse: collapse;}tr{border: solid black 2px;background-color: #E6E6E6;}"
        . "td{border:solid black 2px;}tr:nth-child(odd){background-color: white;}"
        . "th{width:200px; height:50px; border: solid black 2px;background-color: #B2CCFF;}"
        . "#pager{margin : 0 auto ; text-align: center; padding: 20px;}</style>"
        . "<table id='myTable' class='tablesorter' style='text-align:center;'><thead><tr><th>Referrer</th><th>" . $range . "</th>" . $conv . "</tr></thead><tbody>";
$sql = "SELECT * FROM " . $choice . " WHERE referrer like '%" . $data['Referrer'] . "%' AND " . $range . " >= " . $data['Data_di_inizio'] . " AND " . $range . " <= " . $data['Data_di_fine'] . "";
$stmt = $conn->query($sql);

while ($row = $stmt->fetch()) {
    if ($data['Tipologia'] == 1) {
        $conv = "<td>" . $row['product_id'] . "</td>";
    }
    $html .= "<tr><td>" . $row['referrer'] . "</td><td>" . $row[$range] . "</td>" . $conv . "</tr>";
    array_push($list, array_values($row));
}

$html .= "</tbody></table><div id='pager' class='pager'><form>
    <i class='prev'>&lArr;</i>
<input type='text' class='pagedisplay'/>
<i class='next'>&rArr;</i>
<select class='pagesize'>
    <option value='10'>10 per page</option>
<option value='20'>20 per page</option>
<option value='30'>30 per page</option>
</select>
</form>
    </div>";

foreach ($list as $ferow) {
    fputcsv($output, $ferow);
}
fclose($output);


return $html;
}

在“While”循环期间,$row 没有显示任何问题,然后打印一个表格,其中包含它应该具有的所有正确值。

当我下载 csv 文件时,起初它看起来也不错。 桌子上的所有东西也都在那里。但!最后,csv 还包含以下内容:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.min.js'></script><script type='text/javascript' src='sort/jquery.tablesorter.min.js'></script></script><script type='text/javascript' src='sort/jquery.tablesorter.js'></script><script>$(document).ready(function(){$('#myTable').tablesorter()    })  $(document).ready(function(){$('#myTable').tablesorter({widthFixed: true     widgets: ['zebra']}).tablesorterPager({container: $('#pager')})     })  </script><style>table{margin: 0 auto    border-collapse: collapse  }tr{border: solid black 2px background-color: #E6E6E6   }td{border:solid black 2px  }tr:nth-child(odd){background-color: white  }th{width:200px  height:50px     border: solid black 2px    background-color: #B2CCFF   }#pager{margin : 0 auto      text-align: center  padding: 20px  }</style><table id='myTable' class='tablesorter' style='text-align:center
        <i class='prev'>&lArr   </i>                                                                    
    <input type='text' class='pagedisplay'/>                                                                    
    <i class='next'>&rArr   </i>                                                                
    <select class='pagesize'>                                                                   
        <option value='10'>10 per page</option>                                                                     
    <option value='20'>20 per page</option>                                                                 
    <option value='30'>30 per page</option>                                                                 
    </select>                                                                   
    </form>                                                                 

它基本上会在 CSV 中打印出 $html 变量中的所有内容。

我认为这可能与输出缓冲区有关,但我没有想法。有人有吗?

【问题讨论】:

  • 您正在将 csv 写入输出,然后返回 $html - 并且 silex(正确地)也将其写入输出。

标签: javascript php jquery csv silex


【解决方案1】:

问题通过在fclose($output); 之后添加exit(); 得到解决

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多