2015-01-19 3 views
1

Мне нужно получить данные из файла CSV в таблицу HTML с php. Я сделал это с фильтрацией, и это работает как шарм. Теперь я попытался добавить его, если $filter не существует, но по какой-то причине он помещает его за стол.csv data to html table

мой код для получения $filter:

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

поэтому обыкновение быть любой переменной с именем $ фильтром, если нет POST запрос.

вот мой код для получения данных в формате 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); 

Но по какой-то причине он не показывает данные, когда я не фильтровать его, в то время как я сделал точно так же ,

Как это выглядит, когда я Фильтр:

While Filtering

Как это выглядит, когда я не фильтровать:

While not filtering

И если я смотрю на элементы в моем браузере я см., что он закрывает таблицу до того, как будут нефильтрованные значения.

Заранее спасибо :)

+0

Я не могу найти проблему в вашем коде. Вы уверены, что когда вы фильтруете $ filter, значение null? – Serpes

ответ

0
  1. Пожалуйста инициализирует $ фильтр, потому что вы тестируете для переменной в отключенном (несколько предупреждений или уведомлений может повлиять на производительность PHP, даже если отчетов об ошибках отключена)
  2. Initialize $ фильтр обнулить
  3. Первая оценка за отсутствие $ фильтра (только мое предложение, а не правило, но будет быстрее ommit вызова функции, когда нет ничего искать ...)

So:

$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); 
+0

Привет, только что вернулся с работы, поэтому я не могу проверить его сейчас. Я бы сказал, что это не повлияет, если я скажу $ filter == 0, или просто не создаю переменную $ filter. Но спасибо за ответ, и завтра вы услышите больше меня :) – DubstepsantaHD

+0

Спасибо, что сделал :) – DubstepsantaHD