首页 > 解决方案 > 使用 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">

标签: phphtmlcss

解决方案


您的两个 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">

推荐阅读