#php
#php
Вопрос:
Я печатаю CSV-файл на веб-странице, следующий код считывает файл из каталога и отображает данные в табличном формате. Эта часть работает действительно хорошо.
Но мне нужно отфильтровать эту таблицу с помощью двух выпадающих списков, в одном из которых указан идентификатор сеанса, а во втором — дата начала.
Проблема в том, что я не могу передать значение из этих двух выпадающих списков в the, if ($v[0] != $session amp;amp; $row > 0) continue;
где $v[] may have index 0 or 1
и $session
имеет значение из выпадающих списков.
<?php
$dir = 'uploads/';
$files = scandir($dir);
?>
<form name="form1" method="post">
<select class="form-control col-sm-5" onChange="document.forms['form1'].submit()" id="chooseterm" name="chooseterm">
<option value="" selected>Choose Term</option>
<?php
foreach ($files as amp;$value) {
echo '<option value="' . $value . '">' . $value . '</option>';
}
?>
</select>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$t = $_POST["chooseterm"];
$filepath = "uploads/$t";
$row = 0;
$the_big_array = [];
$unique_start_date = [];
$unique_ids = array();
if (($h = fopen("{$filepath}", "r")) !== false) {
while (($data = fgetcsv($h, 1000, ",")) !== false) {
$the_big_array[] = $data;
$unique_ids[$data[0]] = true;
$unique_start_date[$data[1]] = true;
}
fclose($h);
}
?>
<select class="form-control col-sm-5" onChange="document.forms['form1'].submit()" id="choosessionid" name="choosessionid">
<?php foreach ($unique_ids as $k => $v) {echo '<option value="' . $k . '">' . $k . '</option>';}?>
</select>
<select class="form-control col-sm-5" onChange="document.forms['form1'].submit()" id="session_start_date" name="session_start_date">
<?php foreach ($unique_start_date as $k => $v) {echo '<option value="' . $k . '">' . $k . '</option>';}?>
</select>
</form>
<table class="table">
<tbody>
<?php
array_shift($the_big_array);
$temp = '';
foreach ($the_big_array as $k => $v) {
if (isset($_POST['choosessionid']) || ($_POST['session_start_date']) ) {
$session_start_date = '';
$session = '';
if (isset($_POST['choosessionid'])){
$session = $_POST['choosessionid'];
if ($v[0] != $session amp;amp; $row > 0) continue;
}
if (isset($_POST['session_start_date'])){
$session = $_POST['session_start_date'];
if ($v[1] != $session amp;amp; $row > 0) continue;
}
} //at $session I need values from dropdown choosessionid OR session_start_date else show all the results
$row ;
?>
<?="<tr>"; ?>
<?="<td>" . $v[0] . "</td>"; ?>
<?="<td>" . $v[1] . "</td>"; ?>
<?="<td>" . $v[2] . "</td>"; ?>
<?="<td>" . $v[3] . "</td>"; ?>
<?="</tr>"; ?>
<?php } ?>
</tbody>
</table>
<?php
}
?>
Комментарии:
1. Вы можете использовать jquery datatable для фильтрации: datatables.net
2. Я не хочу использовать какую-либо библиотеку
3. Я вижу, что в вашем коде вы указали имя и идентификатор для обоих выпадающих списков как «choosessionid», и вы не определили «session_start_date» .
4. ооо, здесь опечатка..