2016-04-07 29 views
0

Şu an anlamaya çalıştığım 2 sorun/soru var. Bir html formum var ve formun içinde tablo var. Yapmaya çalıştığım, sahip olduğum tablo başlıklarını dahil etmek ve bunu csv dosyasına ilk satır olarak yazmaktır. Bunu anlamaya çalışmıyorum. Benim html formum böyle görünüyor. html form tablo üstbilgisini csv dosyasına yazma

<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> 

Bu

ben csv dosyasını, girdi veri yoktur sadece bilgi açtığınızda i

 <?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"; 
} 

?> 

olması php betik. İlk satırdaki tüm <th> öğelerini nasıl ekleyebilirim?

İkinci sorum, bu dosyayı başka bir konuma nasıl kaydedebilirim? Dosya, 'filename'. date('m-d-y'). ".csv" olarak adlandırılacak ve konum, masaüstüme kaydedilmesini istediğimi söyleyebildiğim gibi, masaüstü yolunu ve dosya adı değişkenini içeren bir değişken oluşturabilir ve fopen() kullanırken çağrılabilir mi? Bunun bir eklenti olarak indirilmemesinin nedeni, verilerin sürekli olarak dosyaya eklenmesidir. senin başlıklarını kodlanmış olduğundan

+0

Sadece 'input' ve' textarea'elements geçebilir bir gönderen. Kullan ajax –

+0

Tablo başlıkları, sunucu tarafında programlı olarak veya HTML'de kodlanmış mı? – avip

+0

Tablo başlıkları, html'de kodlanmıştır. Üstbilgileri bir diziye yazmak mümkün olabilir ve sonra bu dizi dosyaya yazılır mı? Bunun mümkün olup olmadığını düşündüm ama bunu nasıl kodlayacağımı bilmiyorum. Başlıklarımın değişkeninin böyle bir şey olacağını düşünüyordum. $ headers = array ("header 1", "header 2", "header 3", "header 4", "header 5"); Ama sonra buradan ne yapacağımı bilmiyorum. –

cevap

0

, böyle gizli değişkenler olarak sabit kod Formunuzdaki başlıklarını önermek: N 1-5 olduğu

<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> 

Sonra basitçe $_POST['headerN'] aracılığıyla onları okuyun. Alternatif olarak, bir sunucuda sunucu tarafını basitçe kodlayabilirsiniz.

Alternatif olarak, sadece sert kod dizideki başlıkları sunucu tarafında ve veriler üzerinde döngü önce CSV dosyası olarak bunları yazmak olabilir:

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

Sabit kodlarımda, başlıklar sunucu tarafı, fputcsv() parametresinin bir kaynak olmasını beklediğini ve boşluğun verildiğini belirten bir hata alıyorum. –

+0

Evet, bu 2 satırlık kodu, '$ handle' tanımlandığı yerde myfputcsv()' işlevinden çağırıyorsunuz. Başka bir yerde yapıyorsanız, '$ fp' kullandığınızı düşünüyorum. Myfputcsv ($ fp, $ data); '' şu anda bulunduğunuz yerdeki kod satırlarını deneyin. – avip

+0

Tamam, bu işe yarar, ama sorun tekrar veri girdiğimde, başlıklar tekrar beliriyor. Yani, 3 satırlık veriye sahip olmak yerine, başlıkların tekrar yazılması nedeniyle 4 tane var. –