繁体   English   中英

CSV数据到HTML表

[英]csv data to html table

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

我的获取$filter代码:

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

因此,如果没有POST请求,则不会有任何名称为$ filter的变量。

这是用于将csv数据获取到HTML表的代码:

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);

但是由于某些原因,当我不进行过滤时,它不会显示数据,而我做的完全一样。

我过滤时的外观:

过滤时

不过滤时的外观:

不过滤时

而且,如果查看浏览器中的元素,我会发现它在未过滤的值之前关闭了表。

提前致谢 :)

  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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM