データベースがphpmyadminで作成されており、カラム数とデータ数が少なくなっています。これでブラウザのレコードを含むテーブルを表示できます。しかし、私が望むのは、データベースからフィルタリングすることによって特定の値を表示することです。以下は、私が書いたコードです。現時点では、検索フィールドに値を入力すると並べ替えられず、何もしません。あなたのHTMLフォーム内php検索でデータベースレコードが表示されません
<?php
if(isset ($_POST['search']))
{
$valueToSearch=$_POST['valueToSearch'];
//$query="SELECT * FROM `books` WHERE CONCAT (`ISBN`, `Title`, `Author`)LIKE '%".$valueToSearch."%'";
$query="SELECT * FROM books WHERE CONCAT ('ISBN', 'Title', 'Author')LIKE '%".$valueToSearch."%'";
$serach_result=filterTable($query);
}else{
$query="SELECT * FROM books";
$serach_result=filterTable($query);
}
function filterTable($query){
$connect=mysqli_connect ("localhost", "root", "", "bookstore-new");
$filter_result=mysqli_query($connect, $query);
return $filter_result;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Lab 4</title>
<style>
table, tr, th, td
{
border: 1px solid black;
}
</style>
</head>
<body>
<form action="bookstorewebdev.php" method="post">
<input type="text" name="valueToSearch" placeholder="value to search" >
<br><br>
<input type="submit" name="Search" value="Filter" ><br><br>
<table>
<tr>
<th>ISBN</th>
<th>Title</th>
<th>Author</th>
</tr>
<?php while ($row=mysqli_fetch_array($serach_result)):?>
<tr>
<td> <?php echo $row['ISBN'];?></td>
<td> <?php echo $row['Title'];?></td>
<td> <?php echo $row['Author'];?></td>
</tr>
<?php endwhile;?>
</table>
</form>
</body>
</html>
''ISBN'、 'Title'、 'Author''の列はありますか?現在のコードはそれを文字列として連結していますので、 'ISBNTitleAuthor'を比較しています。これはSQLインジェクションにも開かれています。 – chris85
PHPマニュアルに表示されているようなコードにバリデーションを追加するべきです: 'if(!mysqli_query($ connect、" YOUR SQL ")){ printf(" Errormessage:%s \ n "、mysqli_error($ connect )); } ' –
データベーステーブルのスクリーンショットを投稿できますか? –