2015-10-15 47 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>";