1

PHP を使用してフォーム データを .CSV ファイルに送信する Web ベースの印刷ログを作成しました。すべてが正しく機能しているようです。ただし、(まだ) 解決できない小さなバグが 1 つ見つかりました。

.CSV ファイルに送信される印刷ログには 7 つのエントリがあります。これらのエントリのうちの 2 つは、毎日更新される 2 つの異なる .DAT ファイルから入力されるドロップダウン リストです。

問題:

フォーム データを正常に送信し、.CSV ファイルを開くと、ドロップ ダウン リストを使用する 2 つのエンティティが、残りのデータとは異なる形式になっていることに気付きました。

次のスクリーン ショットを見れば、私の言いたいことが理解できます: 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');

    }
}
?>
4

2 に答える 2

0

私は推測していますが、あなたが示すコードが、スクリーンショットに示されているテーブル内の画面にデータをエコーするコードであるかどうかはよくわかりません。それが本当なら、すべてのオプションタグは何ですか?

そうでない場合は、もう少しソース コードを参照する必要があります。

于 2013-01-23T18:01:35.397 に答える
0

コードを実行したときに、結果の CSV ファイルに余分な改行はありませんでした。Excel の書式設定がオフになっている可能性があります。Excel でドロップダウンされた列を強調表示してから、右クリックしてみてください。「セルの書式設定」を選択します。次に、「配置」タブに移動します。[テキスト コントロール] セクションの [テキストを折り返す] のチェックを外します。

于 2013-01-23T18:53:03.063 に答える