如何按行而不是列打印CSV?

k4ymrczo  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(85)

我试图打印前3列的CSV在PHP中,当每一行被点击,它将重定向到另一个页面显示更多的信息,从该行。
我已经成功地做到了这一点,但我的问题是,表是列第一,而不是行第一,所以id是每列,而不是行。有没有办法改变这一点,以打印行第一,但仍然限制为3列?

<?php
    $libraryData = fopen("../data/libraryData.csv", "r");

    echo '<div class="container" id="table_container">';
    echo '<table class="table table-sm table-responsive table-bordered table-striped pd-0" id="csvTable">';
    while (($data = fgetcsv($libraryData, 1000, ",")) !== FALSE) {
        echo '<tr>';
        for ($i = 0; $i < 3; $i++) {
            echo '<td><a href="display.php?row=' . $i . '">' . htmlspecialchars($data[$i]) . '</a </td>';

      }
      echo '</tr>';
    }
    echo '</table>';
    fclose($libraryData);

?>

字符串

ccrfmcuu

ccrfmcuu1#

我从你的问题中理解到的是,你希望将每行的前三列显示为表中的链接,单击每个链接都会重定向到另一个页面(display.php)中包含来自特定行的更多信息。但是,您已经将link()设置为包含行参数**的固定值。(?row=' . $i . ')**在循环中,这会导致所有链接的值相同。
为了解决这个问题,你需要动态地传递实际的行索引。你可以修改链接以在URL中包含行索引。
更新你的代码如下:

<?php
    $libraryData = fopen("../data/libraryData.csv", "r");

    echo '<div class="container" id="table_container">';
    echo '<table class="table table-sm table-responsive table-bordered table-striped pd-0" id="csvTable">';
    
    // Initialize row index
    $rowIndex = 0; 
    
    while (($data = fgetcsv($libraryData, 1000, ",")) !== FALSE) {
        echo '<tr>';
        
        for ($i = 0; $i < 3; $i++) {
            // Pass the row index dynamically in the link
            echo '<td><a href="display.php?row=' . $rowIndex . '">' . htmlspecialchars($data[$i]) . '</a></td>';
        }
        
        echo '</tr>';
        
        // Increment row index for the next row
        $rowIndex++; 
    }
    
    echo '</table>';
    fclose($libraryData);
?>

字符串

相关问题