csv 数据到 html table

csv data to html table

我需要使用 php 从 CSV 文件获取数据到 HTML table。我已经通过过滤做到了,这就像一个魅力。现在我尝试添加它,如果 $filter 不存在但由于某种原因它把它放在 table.

之外

我的获取代码 $filter:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $filter = $_POST["search"];
}

所以如果没有 POST 请求,就不会有任何名为 $filter 的变量。

这是我将 csv 数据获取到 HTML table:

的代码
if (($HandleAnalog = fopen("csv/Analog/ADC_DAC.csv", "r")) !== FALSE) {

echo "<table id='ADC_DAC' style='width:100%; border: 1px solid black;'>";
while (($data = fgetcsv($HandleAnalog, 1000, ";")) !== FALSE) {

    $num = count($data);
    $row++;

    if(strpos($data[4],$filter) !== false || strpos($data[2],$filter) !== false ||strpos($data[5],$filter) !== false){
        echo "<tr style='border: 1px solid black;'>";
        for ($c=0; $c < $num; $c++) {
            if ($row == 0) {
                echo "<th style='border: 1px solid black;'>";
                $dat = str_replace(',', '.', $data[$c]);
                echo $dat;
                echo "</th>";
                $row++;
            }
            echo "<td style='border: 1px solid black;'>";
            $dat = str_replace(',', '.', $data[$c]);
            echo $dat;
            echo "</td>";
        }
        echo "</tr>";
    }else if ($filter == null) {
        echo "<tr style='border: 1px solid black;'>";
        for ($c=0; $c < $num; $c++) {
            if ($row == 0) {
                echo "<th style='border: 1px solid black;'>";
                $dat = str_replace(',', '.', $data[$c]);
                echo $dat;
                echo "</th>";
                $row++;
            }
            echo "<td style='border: 1px solid black;'>";
            $dat = str_replace(',', '.', $data[$c]);
            echo $dat;
            echo "</td>";
        }
        echo "</tr>";
    }
}
echo "</table>";
}

    fclose($HandleAnalog);

但出于某种原因,当我不过滤时它不显示数据,而我做的完全一样。

我过滤时的样子:

我不过滤时的样子:

如果我查看浏览器中的元素,我会发现它在 non-filtered 值之前关闭了 table。

提前致谢:)

  1. 请初始化 $filter,因为您正在测试一个未设置的变量(一些警告或通知可能会影响 PHP 性能,即使错误报告被禁用)
  2. 将 $filter 初始化为 null
  3. 首先评估是否缺少 $filter(这只是我的建议,不是规则,但在没有任何可搜索的情况下省略调用函数会更快...)

所以:

$filter = null;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $filter = $_POST["search"];
}

echo "<table id='ADC_DAC' style='width:100%; border: 1px solid black;'>";
while (($data = fgetcsv($HandleAnalog, 1000, ";")) !== FALSE) {

  $num = count($data);
  $row++;

  if ($filter == null) {
      echo "<tr style='border: 1px solid black;'>";
      for ($c=0; $c < $num; $c++) {
          if ($row == 0) {
              echo "<th style='border: 1px solid black;'>";
              $dat = str_replace(',', '.', $data[$c]);
              echo $dat;
              echo "</th>";
              $row++;
          }
          echo "<td style='border: 1px solid black;'>";
          $dat = str_replace(',', '.', $data[$c]);
          echo $dat;
          echo "</td>";
      }
      echo "</tr>";
  }else if(strpos($data[4],$filter) !== false || strpos($data[2],$filter) !== false ||strpos($data[5],$filter) !== false){
      echo "<tr style='border: 1px solid black;'>";
      for ($c=0; $c < $num; $c++) {
          if ($row == 0) {
              echo "<th style='border: 1px solid black;'>";
              $dat = str_replace(',', '.', $data[$c]);
              echo $dat;
              echo "</th>";
              $row++;
          }
          echo "<td style='border: 1px solid black;'>";
          $dat = str_replace(',', '.', $data[$c]);
          echo $dat;
          echo "</td>";
      }
      echo "</tr>";
  }
}
echo "</table>";
}

fclose($HandleAnalog);