Я написал несколько PHP и CSS для запроса таблицы базы данных MySQL, которую я запускаю на сервере WAMP. У меня есть два файла, которые запускаются, index.php и test.php. Индекс содержит поле селектора, которое позволяет пользователю выбрать параметр фильтра из «семейства». В конечном итоге я хотел бы, чтобы выбранная опция была реализована в запросе SELECT, который определяет вывод данных в части PHP test.php.
Например, если пользователь выбирает «конденсатор» из index.php, мне нужна таблица, которая создается для отображения только записей семейства, которые соответствуют «конденсатору» (а также всех соответствующих деталей, таких как «емкость», «напряжение» и «цена»). В настоящее время мой PHP просто извлекает всю таблицу (пример ниже).
Я знаю, что мне нужно использовать суперглобальный $ _POST для извлечения пользовательского ввода и помещения его в запрос SELECT, но я не уверен, как это сделать.
РЕДАКТИРОВАТЬ: Когда я пытаюсь сузить возвращаемые данные с помощью модификатора WHERE, я получаю следующую ошибку
ОШИБКА: SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «конденсатор» в «выражении where»
Ниже приведен index.php
<form action="test.php" method="post">
<select name="family">
<option value="" selected="selected">Any family</option>
<option value="capacitor">capacitor</option>
<option value="resistor">resistor</option>
<option value="ferrite bead">ferrite bead</option>
</select>
<input name="search" type="submit" value="Search"/>
</form>
</html>
Ниже находится test.php
<!DOCTYPE html>
<html lang = "en-US">
<head>
<meta charset = "UTF-8">
<title>test.php</title>
<style>
table {
border-collapse: collapse;
width: 50%;
}
th, td {
text-align: left;
padding: 8px;
}
th {
background-color: SkyBlue;
}
tr:nth-child(odd) {background-color: #f2f2f2;}
tr:hover {background-color: AliceBlue;}
</style>
</head>
<body>
<p>
<?php
try {
$con= new PDO('mysql:host=localhost;dbname=mysql', "root", "kelly188");
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "SELECT * FROM testv2";
//first query just gets the column names
print "<table>";
$result = $con->query($query);
//return only the first row (we only need field names)
$row = $result->fetch(PDO::FETCH_ASSOC);
print " <tr>";
foreach ($row as $field => $value){
print " <th>$field</th>";
}
// end loop
print " </tr>";
//second query gets the data
$data = $con->query(**PERTAINS TO EDIT**);
$data->setFetchMode(PDO::FETCH_ASSOC);
foreach($data as $row){
print " <tr>";
foreach ($row as $name=>$value){
print " <td>$value</td>";
} //end row loop
print " </tr>";
} //end record loop
print "</table>";
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
} // end try
?>
</p>
</body>
</html>