2013-01-23 70 views
1

我已經創建了一個基於Web的打印日誌,它使用PHP將表單數據發送到.CSV文件。一切似乎都正常工作。雖然,我發現了一個我似乎無法解決(但)的小錯誤。將PHP Web窗體轉換爲CSV格式Bug

打印日誌中有七個條目提交給.CSV文件。其中兩個條目是從兩個不同的.DAT文件填充的下拉列表,每日更新。

問題:

在成功提交表單數據並打開.csv文件我注意到,使用下拉列表中爲兩個實體的格式比其他數據不同。

你可以看到我通過查看下面的屏幕截圖的意思是: http://i49.tinypic.com/2n87eko.jpg

我相信這個問題是由下面的代碼拉動「項目號」和「僱員姓名」未來下拉框數據:

<?php 
$file = 'dat_files/Employees.dat'; 

$handle = @fopen($file, 'r'); 
if ($handle) { 
    while (!feof($handle)) { 
     $line = fgets($handle, 4096); 
     $item = explode('|', $line); 
     echo '<option value="' . $item[0] . '">' . $item[0] . '</option>' . "\n"; 
    } 
    fclose($handle); 
} 
?> 

任何幫助或想法將不勝感激。謝謝。

下面是用於將表單數據發送到.CSV文件的代碼。

<?php 

if(isset($_POST["submit"])) 
{ 
    $type = $_POST["type"]; 
    $date = $_POST["date"]; 
    $job_number = $_POST["job_number"]; 
    $phase = $_POST["phase"]; 
    $task = $_POST["task"]; 
    $number_copies = $_POST["number_copies"]; 
    $name = $_POST["name"]; 


    if(empty($type)||empty($date)||empty($job_number)||empty($phase)||empty($task)||empty($number_copies)||empty($name)) 
    { 
     header('Location: submit/unsuccessful.htm'); 
     die; 
    } 
    $cvsData = "\"$type\",\"$date\",\"$job_number\",\"$phase\",\"$task\",\"$number_copies\",\"$name\"".PHP_EOL; 
    $fp = fopen("log.csv", "a"); 

    if($fp) 
    { 
     fwrite($fp,$cvsData); // Write information to the file 
     fclose($fp); // Close the file 
     header('Location: submit/successful.htm'); 

    } 
} 
?> 
+0

我剛剛意識到更多關於這個格式問題。從下拉列表中拖出的兩個條目將自動設置爲excel中.CSV文件中的「包裝文本」。到目前爲止還不確定是否有修復。 –

+0

您是否在記事本中看到多餘的換行符?我只是在我的服務器上運行你的代碼,並沒有任何包裝文本問題 –

+0

@LloydBanks有趣的發現。我只是看着記事本,我也看到了換行符。如果我刪除記事本中的所有換行符,保存它,在Excel中重新打開時格式化問題就會消失。 –

回答

0

我猜,但我真的不知道你展示這些代碼是數據回聲在屏幕截圖中顯示的表內的屏幕的代碼。如果這是真的,那麼所有的選項標籤都是關於什麼的?

如果不是這樣,那麼我們可能需要看到更多的源代碼來幫助你。

+0

我提供的代碼使用.DAT文件填充兩個下拉列表。以下是將表單數據發送到.CSV文件的代碼: –

+1

只是在您正在檢索的變量周圍貼上trim()。例如$ type = trim($ _ POST [「type」]);你可能還想在前面的代碼塊中執行它 - echo''。 「\ n」 個; –

+0

謝謝克里斯,它通過添加trim()工作就像一個魅力我真的很感謝你的幫助! –

0

我在運行代碼時沒有在生成的CSV文件中看到任何額外的換行符。也許這是因爲你的Excel格式不對?嘗試突出顯示Excel中的下拉列,然後右鍵單擊。選擇「格式單元格」。然後轉到「對齊」選項卡。取消選中「文字控制」部分下的「換行文字」。

+0

嗯..格式化單元格並取消選中換行文本適用於已輸入的條目,但不適用於添加新條目時。這是我在記事本中的結果:這是有道理的,爲什麼我得到這個結果.. http://i50.tinypic.com/ofvu3p.png –

+0

「工作號碼」和「名稱」兩個下拉框填充列? –

+0

是的,它們是下拉式填充列。 –