此代码的问题是,每次从MySQL导出到csv时,它都会覆盖已经创建的csv。我想用这段代码来检查是否有一个已经创建的csv文件->创建一个新文件。示例:(Sales-2012-9-8.csv)到(Sales1-2012-9-8.csv。。但当导出另一个csv时,它会覆盖当前的csv文件名。
哦,是的,还有一件事。。如何在csv文件的第一行添加表标题。Ex(物料编号-数量-售价-日期)?
谢谢
<?php
require_once('connect_db.php');
$fdate = $_POST['fdate'];
$tdate = $_POST['tdate'];
$result = mysql_query("SELECT item_no, qty, discount_price, date FROM sold_items WHERE date BETWEEN '".$fdate."' AND '".$tdate."' ORDER BY date Desc");
$filename = $name = "Sales";
$index = 1;
while(file_exists($filename)) {
$filename = $name.$index;
$index++;
echo "File Already Exists";
}
if(!$f = fopen("E:/{$filename}-{$tdate}.csv", 'w')){
?>
<script language="javascript">
alert('USB FLASH NOT INSERTED');
history.back();
</script>
<?php
}
while($row = mysql_fetch_array($result, MYSQL_NUM))
{
fputcsv($f, $row);
}
fclose($f);
?>
<center><font style="font-size:28px; font-weight:bold; color:#C00;">USB Transfer Successful</font></center>
<center><input type="button" onclick="javascript:window.close()" value="Close Window" /></center>
<?php
?>
试试这个变体。我认为file_exists()函数可以查看除"E:/"以外的其他文件夹:
$tdate = date();
$filename = $name = "Sales";
$index = 1;
while(file_exists("E:/{$filename}-{$tdate}.csv")) {
$filename = $name.$index;
$index++;
echo "File {$filename}-{$tdate}.csv Already Exists";
}
if(!$f = fopen("E:/{$filename}-{$tdate}.csv", 'w')){
?>
<script language="javascript">
alert('USB FLASH NOT INSERTED');
history.back();
</script>
<?php
}
至于第二个问题:
哦,是的,还有一件事。。如何在csv文件的第一行添加表标题。Ex(物料编号-数量-售价-日期)?
正如我所知,csv文件的第一行被识别为标题。因此,在编写查询结果之前,请先编写标题。例如
fputcsv($f, array('Item No', 'Qty', 'Selling Price', 'Date'));
您只检查了值为"Sales"的文件名-日期尚未包含!