2017-06-27 11 views
0

Hellos!PHP CSV出力 - 2行を追加するには?

Alessandro Minoccheriはすでにこのコードで大変助かりましたが、もう一つ問題があります。 CSVファイルはpowershell(get-aduser)の出力ファイルです。カンマ区切りです。

としては、まず、これは、CSVコンテンツである:

#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser 
name,"officephone" 
firstname, lastname,"+49 1234 555 134" 
firstname, lastname,"+49 1234 555 242" 
firstname, lastname,"+49 1234 555 338" 
firstname, lastname,"+49 1234 555 149" 

これは一瞬のためのコードである:

$lineCount = 0; 
while (($line = fgetcsv($f)) !== false) { 
if ($lineCount > 1) { 
    echo "<tr class='departmenttext'>"; 
    foreach ($line as $key => $cell) { 
     if ($key == 1) { 
      $cell = substr($cell, -3); 
      echo ''; 
     } 
     echo "<td>" . htmlspecialchars($cell) . "</td>"; 

     if ($key == 1) { 
      echo "</tr>\n"; 
     } 
    } 
    echo "</tr>\n"; 
} 
$lineCount = $lineCount + 1; 
} 

それは1行のCSVファイルを表示します。

Name1 Phone1 
Name2 Phone2 
Name3 Phone3 
Name4 Phone4 

を意味しかし、それは、時には非常に長いです、私は、次の必要性に次のようになります。

Name1 Phone1 Name5 Phone5 
Name2 Phone2 Name6 Phone6 
Name3 Phone3 Name7 Phone7 
Name4 Phone4 

しかし、私はちょうど1つのエクスポート機能「はhtmlspecialchars($細胞)を得たように私にはわかりませんそれを分離する方法?

答えて

0

あなたが望むようにそれはファイルをラップすることは困難だが、代替はサイドでのエントリの側に置くことです...

$lineCount = 0; 
fgetcsv($f); 
fgetcsv($f); 
while (($line = fgetcsv($f)) !== false) { 
    if (count($line)<2) { 
     break; 
    } 
    if ($lineCount % 2 == 0) { 
     echo "<tr class='departmenttext'>"; 
    } 
    echo "<td>" . htmlspecialchars($line[0].','.$line[1]) . "</td>"; 
    echo "<td>" . htmlspecialchars(substr($line[2],-3)) . "</td>"; 

    if ($lineCount % 2 == 1) { 
     echo "</tr>\n"; 
    } 
    $lineCount = $lineCount + 1; 
} 
if ($lineCount % 2 == 1) { 
    echo "</tr>\n"; 
} 
+0

私はそれに問題はありませんが、私はそのコードを使用しているときに私は何も見ていません。 csvファイルはpowershellの出力ファイルであり、カンマで区切られています。たぶんその理由がありますか? –

+0

元の質問にいくつかのサンプル行を入れることができますか?私はそれをチェックします。 –

+0

コードテキストとしてCSVファイルの内容を追加しました –

0
First of all you have to decide that how much line you want in one bunch. and according to that number, You need to start a new raw in loop. 

for example, if you want to show up to 10 line in one bunch, like 

you need something like 

if($key%10 == 0){ 
    echo "</tr><tr class='departmenttext'>"; 
    echo "<td>" . htmlspecialchars($cell) . "</td>"; 
} 
+0

この場合、私は最大のリストを表示し、カウントし、それを1つのリストとして合計します。 50%の自動車はできませんか?カウンターのようにして、その半分をちょうど表示しますか? –

+0

CSSを使用していますか? –

+0

nah、cssではなく、任意の数学的なカウント関数によって。 –

0
You can do something like this way 

if($key%count($line) == 0){ 
    echo "</tr><tr class='departmenttext'>"; 
    echo "<td>" . htmlspecialchars($cell) . "</td>"; 
} 

Here I have divided it by total number of line so that it can be calculate 50% of your line. 
関連する問題