2016-04-07 38 views
0

私には2つの問題/質問があります。私は今すぐ把握しようとしています。私はhtmlフォームを持っていて、フォームの中にはテーブルがあります。私がやろうとしているのは、私が使用しているテーブルヘッダーをインクルードし、それを最初の行としてcsvファイルに書き込むことです。私はそれを理解することができない。これは私のhtml形式のようです。csvファイルにhtmlフォームテーブルヘッダーを書き込む

<html> 
<form> 
<table> 
<h1> Shorts </h1> 
<thead> 
<tr> 
    <th> Header 1 </th> 
    <th> Header 2 </th> 
    <th> Header 3 </th> 
    <th> Header 4 </th> 
    <th> Header 5 </th> 
</tr> 
</thead> 
//form input here.... 

</table> 
</form> 
</html> 

これは、私はcsvファイル、入力データが存在している情報のみを開くと、私は

 <?php 

function myfputcsv($handle, $array, $delimiter = ',', $enclosure = '"', $eol = "\n") { 
    $return = fputcsv($handle, $array, $delimiter, $enclosure); 
    if($return !== FALSE && "\n" != $eol && 0 === fseek($handle, -1, SEEK_CUR)) { 
     fwrite($handle, $eol); 
    } 
    return $return; 
} 

if(isset($_POST['mydrivers'])) { 
$header=array("Driver", "Date", "Customer #", "Invoice #", "Product Description", "Size", "CS", "Btls", "CHK Itls"); 
$data=array(); 

$rows = 0; 
$fp = fopen('driver' . date('m-d-y'). ".csv", 'a'); 

while (! feof($fp)) 
{ 
    $stuff = fgets($fp); 
    if ($stuff) $rows++; 
} 
fseek($fp, 0); 

//myfputcsv($handle, $header); 
fputcsv($fp, $header); 
foreach (array_slice($_POST,0,count($_POST)-1) as $key => $value) {  
    //$header[]=$key; 
    $data[]=$value; 
} 



    myfputcsv($fp, $data); 
fclose($fp); 
echo "data added"; 
} 

?> 

を持っているPHPスクリプトです。どのように私の<th>要素のすべてを最初の行に含めることができますか?

私の2番目の質問は、このファイルを別の場所に保存する方法です。ファイル名は'filename'. date('m-d-y'). ".csv"となり、デスクトップ上に保存したい場所、デスクトップパスとファイル名変数を持つ変数を作成し、fopen()を使用して呼び出すことができます。添付ファイルとしてダウンロードされていない理由は、データがファイルに継続的に追加されるためです。

+0

あなただけの 'input'と' textarea'elements渡すことができますから提出する。 ajaxを使用する –

+0

テーブルヘッダーはサーバーサイドでプログラムで生成されるのか、HTMLでハードコード化されますか? – avip

+0

テーブルヘッダーはhtmlでハードコードされています。ヘッダーを配列に書き込んだ後、その配列をファイルに書き込むことは可能でしょうか?私はそれが可能であると思ったが、私はそれをコード化する方法を知らない。私はヘッダー変数がこのようなものになると考えていました。 '$ header = array(" header 1 "、" header 2 "、" header 3 "、" header 4 "、" header 5 ");'しかし、ここから何をするのか分からない。 –

答えて

0

あなたのヘッダーがハードコーディングされているので、私はこのような隠れた変数として、フォーム内のヘッダあなたにハードコードをお勧め:

<form method="post" action="..."> 
<input type="hidden" name="header1" value="Header 1"> 
<input type="hidden" name="header2" value="Header 2"> 
<input type="hidden" name="header3" value="Header 3"> 
<input type="hidden" name="header4" value="Header 4"> 
<input type="hidden" name="header5" value="Header 5"> 
... 
</form> 

その後、単にNが1-5で$_POST['headerN']経由でそれらを読んで。あるいは、サーバー側を単純にハードコードして配列に入れることもできます。

また、あなたは、単にハードコードは、アレイ内のヘッダをサーバ側とは、データをループする前に、CSVファイルにそれらを書くことができます:

$headers = array("header 1", "header 2", "header 3", "header 4", "header 5"); 
fputcsv($handle, $headers); 
+0

ヘッダーサーバー側をハードコードすると、fputcsv()はパラメータ1がリソースであり、nullが指定されているとエラーを受け取ります。 –

+0

さて、 '$ handle'が定義されているあなたの関数' myfputcsv() 'の中から、2行のコードを呼び出しているとします。他の場所でやっているのなら、あなたは '$ fp'を使っていると思います。 'myfputcsv($ fp、$ data);'のところにあるコード行を試してみてください。 – avip

+0

それはうまくいきますが、データを再度入力すると、ヘッダーが再び表示されるという問題があります。だから3行のデータを持つのではなく、ヘッダーが書き込まれているために4があります –

関連する問題