2015-10-15 40 views
0

我有一個從我的PHP腳本創建的動態表。這些信息來源於一個CSV文件。我希望第五欄中的所有內容都能成爲另一頁的鏈接。所以這將是每個數組索引/鍵4是一個鏈接。不確定我將如何修改下面的代碼來實現這一目標?PHP CSV動態表想要使第五列鏈接中的所有條目

echo "<html><body><table>\n\n"; 
echo "<tr><td>First</td><td>Last</td><td>Email<td>Address</td 
<td>File</td></tr>"; 
$f = fopen("filelog.csv", "r"); 
while (($line = fgetcsv($f)) !== false) { 
    echo "<tr>"; 
    foreach ($line as $cell) { 
    echo "<td>" . htmlspecialchars($cell) . "</td>"; 
    } 
    echo "</tr>\n"; 
} 
fclose($f); 
echo "\n</table></body></html>"; 

回答

0

您可以添加一個計數器,當您到達第4個元素時,輸出一個鏈接。

$i = 1; 
foreach ($line as $cell) { 
    if ($i == 4) { 
     // Create the link. 
     echo "<td><a href="..."> </a></td>"; 
    } 
    else { 
     echo "<td>" . htmlspecialchars($cell) . "</td>"; 
    } 

    $i++; 
} 
+0

如果一行中只有4個單元會怎麼樣?你不會在你的方法中獲得第5列。 –

+0

我想這取決於「每個數組索引/鍵4」是基於0還是基於1的上下文。 – JRD

+0

但是你的方法是用一個鏈接(if/else)替換單元格的實際內容,而不是增加一個額外的列。 –

1

向循環中添加一個計數器並查找每5次迭代。

while (($line = fgetcsv($f)) !== false) { 
    echo "<tr>"; 
    $i = 0; 
    foreach ($line as $cell) { 
     echo "<td>" . htmlspecialchars($cell) . "</td>"; 
     $i++; 
     if($i % 5 === 0) { 
     echo "<td>" . yourlinkstuff . "</td>"; 
     } 
    } 
    echo "</tr>\n"; 
} 

我使用的模量,因爲它是從你的問題不清楚是否有4個以上的「細胞」,每「行」。如果foreach($ line爲$ cell)總是迭代4次,則不需要計數器。您可以在該循環之後的第5列標記,如下所示:

while (($line = fgetcsv($f)) !== false) { 
    echo "<tr>"; 
    foreach ($line as $cell) { 
     echo "<td>" . htmlspecialchars($cell) . "</td>"; 
    } 
    echo "<td>" . yourlinkstuff . "</td>"; 
    echo "</tr>\n"; 
} 
+0

另外,不清楚每行的每個第4/5單元應該是鏈接,還是每個第4 /第5個單元之間的鏈接都是鏈接。 – JRD

0

謝謝大家的意見,我非常感謝。我有一張有五列的表格,「First,Last,Email,Address,File」。 「文件」列中的所有內容都是該文件的鏈接。因此,在索引0開始的數組中,「文件」數據將位於索引4處。我不想要額外的列。這是最終完成這項工作的代碼,謝謝!

echo "<html><body><table>\n\n"; 
echo "<tr><td>First</td><td>Last</td><td>Email<td>Address</td> 
<td>File</td></tr>"; 
$fp = fopen("filelog.csv", "r"); 
while (($line = fgetcsv($fp)) !== false) { 
    echo "<tr>"; 
    $i=1; 
    foreach ($line as $cell) { 
     if(($i % 5) == 0) { 
      echo "<td><a href=" . htmlspecialchars($cell) . ">" 
      .htmlspecialchars($cell) . "</a></td>"; 
     } 
     else { 
     echo "<td>" . htmlspecialchars($cell) . "</td>"; 
     $i++; 
     } 
    } 
    echo "</tr>\n"; 
} 
fclose($fp); 
echo "\n</table></body></html>";