php - 使用 php 的字母搜索框
问题描述
我正在尝试使用 php 创建一个按字母顺序排列的搜索框,但问题在于 localhost 中的所有字段都显示了所有字母。我想显示具有特定字母的字段。我有一个名为 comment 的数据库和一个名为 comment_table 的表。文件的名称是 index.php 。
我的字母搜索栏的 html 代码
<form action="index.php" method="post" name="search" onclick="submit">
<a href="index.php?letter=A">A</a> |
<a href="index.php?letter=B">B</a> |
<a href="index.php?letter=C">C</a> |
<a href="index.php?letter=D">D</a> |
<a href="index.php?letter=E">E</a> |
<a href="index.php?letter=F">F</a> |
<a href="index.php?letter=G">G</a> |
<a href="index.php?letter=H">H</a> |
<a href="index.php?letter=I">I</a> |
<a href="index.php?letter=J">J</a> |
<a href="index.php?letter=K">K</a> |
<a href="index.php?letter=L">L</a> |
<a href="index.php?letter=M">M</a> |
<a href="index.php?letter=N">N</a> |
<a href="index.php?letter=O">O</a> |
<a href="index.php?letter=P">P</a> |
<a href="index.php?letter=Q">Q</a> |
<a href="index.php?letter=R">R</a> |
<a href="index.php?letter=S">S</a> |
<a href="index.php?letter=T">T</a> |
<a href="index.php?letter=U">U</a> |
<a href="index.php?letter=V">V</a> |
<a href="index.php?letter=W">W</a> |
<a href="index.php?letter=X">X</a> |
<a href="index.php?letter=Y">Y</a> |
<a href="index.php?letter=Z">Z</a> |
<a href="index.php?letter=">View All</a>
</form>
我的php代码
<div class="rounded bg-light p-3 static" class="position-static" id="cont">
<?php
if (isset($_GET['letter'])) {
$conn = mysqli_connect('localhost', 'root', '',);
if ($conn->connect_error) {
die("Connection Failed!" . $conn->connect_error);
}
mysqli_select_db($conn, 'comment');
$char = $_GET['letter'];
if ($char) {
$query = "SELECT * FROM comment_table WHERE field LIKE '$char%' ";
$result = mysqli_query($conn, $query);
$count = mysqli_num_rows($result);
if ($count >= 1) { ?>
<?php while ($row = mysqli_fetch_array($result)) { ?>
<?php
$sql = "SELECT * FROM comment_table ORDER BY id DESC";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
?>
<div class="card mb-2 border-secondery" id="myTable">
<div class="card-header bg-secondary py-1 text-light">
<span id="fieldone" class="float-left font-bold fields">Field : <?= $row['field'] ?></span>
<span class="float-right font-bold">On : <?= $row['date_publish'] ?></span>
</div>
<div class="card-body py-2">
<p class="card-text font-bold"> Posted By : <?= $row['name'] ?></p>
<p class="card-text font-bold"><i class="fas fa-map-marker-alt color-light"></i> Location : <?= $row['location'] ?></p>
<p class="card-text font-bold show-read-more"> Description : <?= $row['description'] ?></p>
<p class="card-text font-bold"> E-mail : <?= $row['email'] ?></p>
</div>
<div class="card-footer py-2">
<div class="float-left">
</div>
<div class="float-right">
<a href="action.php?del=<?= $row['id'] ?>" class="text-danger mr-2" onclick="return confirm('Do you want to delete this comment?');" title="Delete"><i class="fas fa-trash"></i></a>
<a href="index.php?edit=<?= $row['id'] ?>" class="text-success" title="Edit"><i class="fas fa-edit"></i></a>
</div>
</div>
</div>
<?php } ?>
<?php } ?>
<?php
} else {
?><script>
alert("Record not found");
</script><?php
}
} else {
$query = "SELECT * FROM comment_table";
$result = mysqli_query($conn, $query);
?>
<?php while ($row = mysqli_fetch_array($result)) { ?>
<?php $sql = "SELECT * FROM comment_table ORDER BY id DESC";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
?>
<div class="card mb-2 border-secondery" id="myTable">
<div class="card-header bg-secondary py-1 text-light">
<span id="fieldone" class="float-left font-bold fields">Field : <?= $row['field'] ?></span>
<span class="float-right font-bold">On : <?= $row['date_publish'] ?></span>
</div>
<div class="card-body py-2">
<p class="card-text font-bold"> Posted By : <?= $row['name'] ?></p>
<p class="card-text font-bold"><i class="fas fa-map-marker-alt color-light"></i> Location : <?= $row['location'] ?></p>
<p class="card-text font-bold show-read-more"> Description : <?= $row['description'] ?></p>
<p class="card-text font-bold"> E-mail : <?= $row['email'] ?></p>
</div>
<div class="card-footer py-2">
<div class="float-left">
</div>
<div class="float-right">
<a href="action.php?del=<?= $row['id'] ?>" class="text-danger mr-2" onclick="return confirm('Do you want to delete this comment?');" title="Delete"><i class="fas fa-trash"></i></a>
<a href="index.php?edit=<?= $row['id'] ?>" class="text-success" title="Edit"><i class="fas fa-edit"></i></a>
</div>
</div>
</div>
<?php } ?>
<?php } ?>
<?php
}
}
?>
</div>
</div>
<div class="send bg-light">
<div class="post_job">
解决方案
您的两个 SQL 查询都无缘无故地翻了一番,正如 @Professor Abronius 已经提到的第二个查询是错误结果的原因。类似的双重 SQL 问题在下面的代码中再次发生。我已经删除了冗余 + 错误的 sSQL 查询,现在应该会产生所需的结果。(未测试)
<div class="rounded bg-light p-3 static" class="position-static" id="cont">
<?php
if (isset($_GET['letter'])) {
$conn = mysqli_connect('localhost', 'root', '',);
if ($conn->connect_error) {
die("Connection Failed!" . $conn->connect_error);
}
mysqli_select_db($conn, 'comment');
$char = $_GET['letter'];
if ($char) {
$query = "SELECT * FROM comment_table WHERE field LIKE '$char%' ";
$result = mysqli_query($conn, $query);
$count = mysqli_num_rows($result);
if ($count >= 1) {
while ($row = $result->fetch_assoc()) {
?>
<div class="card mb-2 border-secondery" id="myTable">
<div class="card-header bg-secondary py-1 text-light">
<span id="fieldone" class="float-left font-bold fields">Field : <?= $row['field'] ?></span>
<span class="float-right font-bold">On : <?= $row['date_publish'] ?></span>
</div>
<div class="card-body py-2">
<p class="card-text font-bold"> Posted By : <?= $row['name'] ?></p>
<p class="card-text font-bold"><i class="fas fa-map-marker-alt color-light"></i> Location : <?= $row['location'] ?></p>
<p class="card-text font-bold show-read-more"> Description : <?= $row['description'] ?></p>
<p class="card-text font-bold"> E-mail : <?= $row['email'] ?></p>
</div>
<div class="card-footer py-2">
<div class="float-left">
</div>
<div class="float-right">
<a href="action.php?del=<?= $row['id'] ?>" class="text-danger mr-2" onclick="return confirm('Do you want to delete this comment?');" title="Delete"><i class="fas fa-trash"></i></a>
<a href="index.php?edit=<?= $row['id'] ?>" class="text-success" title="Edit"><i class="fas fa-edit"></i></a>
</div>
</div>
</div>
<?php } ?>
<?php
} else {
?><script>
alert("Record not found");
</script><?php
}
} else {
$query = "SELECT * FROM comment_table ORDER BY id DESC";
$result = mysqli_query($conn, $query);
while ($row = $result->fetch_assoc()) {
?>
<div class="card mb-2 border-secondery" id="myTable">
<div class="card-header bg-secondary py-1 text-light">
<span id="fieldone" class="float-left font-bold fields">Field : <?= $row['field'] ?></span>
<span class="float-right font-bold">On : <?= $row['date_publish'] ?></span>
</div>
<div class="card-body py-2">
<p class="card-text font-bold"> Posted By : <?= $row['name'] ?></p>
<p class="card-text font-bold"><i class="fas fa-map-marker-alt color-light"></i> Location : <?= $row['location'] ?></p>
<p class="card-text font-bold show-read-more"> Description : <?= $row['description'] ?></p>
<p class="card-text font-bold"> E-mail : <?= $row['email'] ?></p>
</div>
<div class="card-footer py-2">
<div class="float-left">
</div>
<div class="float-right">
<a href="action.php?del=<?= $row['id'] ?>" class="text-danger mr-2" onclick="return confirm('Do you want to delete this comment?');" title="Delete"><i class="fas fa-trash"></i></a>
<a href="index.php?edit=<?= $row['id'] ?>" class="text-success" title="Edit"><i class="fas fa-edit"></i></a>
</div>
</div>
</div>
<?php } ?>
<?php } ?>
<?php
}
}
?>
</div>
</div>
<div class="send bg-light">
<div class="post_job">
推荐阅读
- exception - 如何在raise语句后使python脚本继续
- c - amqp 上的 C 二进制消息
- javascript - Angular:单元测试 - 无法测试三元分支的代码覆盖率
- javascript - 如何在快递路线之间传递变量?
- anaconda - 为什么在 anaconda/lib 中存在大小相同但名称略有不同的重复/三重文件夹?
- common-lisp - 如何在 common lisp 中编写 multf 函数
- typescript - 为什么这个 JSON 属性被记录为未定义?
- vb.net - 在大文本文件中查找数百万个项目
- javascript - 如何通过 Thymeleaf 正确地将 Spring 模型中的字符串值转换为 JavaScript 的字符串变量?
- python - Django AttributeError 'NoneType' 没有属性 'strip'