Этот код работает для одного окна выбора, и когда он находит значение, он останавливается, даже если существует больше столбца с тем же значением.
Мне нужно работать со многими полями выбора и заполнять таблицу всеми строками с одинаковым значением столбца (значение, которое пользователь выбирает с помощью полей выбора)
<?php
require('includes/config.php');
require('layout/header.php');
function get_info($db, $predmet)
{
$sql = $db->prepare("SELECT * FROM raspored WHERE predmet = :predmet");
$sql->setFetchMode(PDO::FETCH_ASSOC);
$sql->execute([':predmet' => $predmet]);
if ($row = $sql->fetch()) {
return $row;
}
return false;
}
?><table border="0" class="table table-hover table-striped">
<tr COLSPAN=2 BGCOLOR="#6D8FFF">
<th>ИД</th>
<th>Предмет</th>
<th>Професор</th>
<th>Ден</th>
<th>Час</th>
<th>Просторија</th>
<th>Тип</th>
</tr>
<?php
if (isset($_POST['predmet1'])) {
if ($row = get_info($db, $_POST['predmet1'])) {
echo "<tr>" .
"<td>" . $row["ID"] . "</td>" .
"<td>" . $row["predmet"] . "</td>" .
"<td>" . $row["profesor"] . "</td>" .
"<td>" . $row["den"] . "</td>" .
"<td>" . $row["chas"] . "</td>" .
"<td>" . $row["prostorija"] . "</td>" .
"<td>" . $row["tip"] . "</td>" .
"</tr>";
} else {
echo "don't exist records for list on the table";
}
}
?>
</table>
</div>
<?php
//футер
require('layout/footer.php');
?>
Это выбор коробки.
<select name="predmet[1]" id="predmet[1]" class="form-control input-lg">
<option value="" class="placeholder" style="display: none;">Предмет1</option>
<option value="Алгоритми и структури на податоци">Алгоритми и структури на податоци</option>
<option value="Конечна Математика">Конечна Математика</option>
<option value="Софтверско инженерство">Софтверско инженерство</option>
</select>
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<select name="predmet[2]" id="predmet[2]" class="form-control input-lg">
<option value="" class="placeholder" style="display: none;">Предмет2</option>
<option value="Алгоритми и структури на податоци">Алгоритми и структури на податоци</option>
<option value="Конечна Математика">Конечна Математика</option>
<option value="Софтверско инженерство">Софтверско инженерство</option></select>
Так что я думаю, что-то вроде этого.
function get_info($db, $predmet_1,$predmet_2)
{
$param = array();
$query = "SELECT * FROM raspored";
$where_sql = '';
if($predmet_1 != '' || $predmet_2 != '') {
$query .= " WHERE ";
}
if($predmet_1 != '') {
$where_sql .= 'predmet = :predmet_1';
$param[':predmet_1'] = $predmet_1;
}
if($predmet_2 != '') {
if($where_sql != '') {
where_sql .= ' AND ';
}
$where_sql .= 'predmet2 = :predmet_2';
$param[':predmet_2'] = $predmet_2;
}
$sql = $db->prepare("SELECT * FROM raspored ".$where_sql);
$sql->setFetchMode(PDO::FETCH_ASSOC);
$sql->execute($param);
return $sql->fetchAll();
}
<select name="predmet_1" id="predmet_1" class="form-control input-lg">
<option value="" class="placeholder" style="display: none;">Предмет1</option>
<option value="Алгоритми и структури на податоци">Алгоритми и структури на податоци</option>
<option value="Конечна Математика">Конечна Математика</option>
<option value="Софтверско инженерство">Софтверско инженерство</option>
</select>
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<select name="predmet_2" id="predmet_2" class="form-control input-lg">
<option value="" class="placeholder" style="display: none;">Предмет2</option>
<option value="Алгоритми и структури на податоци">Алгоритми и структури на податоци</option>
<option value="Конечна Математика">Конечна Математика</option>
<option value="Софтверско инженерство">Софтверско инженерство</option></select><table border="0" class="table table-hover table-striped">
<tr COLSPAN=2 BGCOLOR="#6D8FFF">
<th>ИД</th>
<th>Предмет</th>
<th>Професор</th>
<th>Ден</th>
<th>Час</th>
<th>Просторија</th>
<th>Тип</th>
</tr>
<?php
$rows = get_info($db, $_POST['predmet1'],$_POST['predmet2'];
if(!empty($rows) {
foreach($rows as $row ) {
echo "<tr>" .
"<td>" . $row["ID"] . "</td>" .
"<td>" . $row["predmet"] . "</td>" .
"<td>" . $row["profesor"] . "</td>" .
"<td>" . $row["den"] . "</td>" .
"<td>" . $row["chas"] . "</td>" .
"<td>" . $row["prostorija"] . "</td>" .
"<td>" . $row["tip"] . "</td>" .
"</tr>";
}
} else {
echo "don't exist records for list on the table";
}
}
?>
</table>
</div>
<?php
//футер
require('layout/footer.php');
?>
Я думаю, что это правильно, но если и predmet_1, и predmet_2 относятся к одному и тому же полю, то вы можете использовать SQL IN, но создать оператор sql и parms аналогичным образом.
Могу ли я предложить, если это так, что-то вроде этого.
http://loudev.com/ или же
http://davidstutz.github.io/bootstrap-multiselect/
Может помочь вашим пользователям.
Надеюсь, это поможет.
Других решений пока нет …