【问题标题】:PHP search function not displaying resultsPHP搜索功能不显示结果
【发布时间】:2023-12-29 04:58:01
【问题描述】:

我一直在使用 PHP 和 ajax 并试图让它产生我的结果。但由于某种原因,它根本不起作用。我会写一些话,什么都不会出现。

代码:

    <script type="text/javascript">
        $( document ).ready( function() {
            $('.searchFunction').keyup( function( event ) {
                var search_term = $(this).attr('value');

        });
    </script>

同样,我不确定如何解决这个问题。我的数据库名为ing,字段名称为ingName

【问题讨论】:

  • 什么都没有,很奇怪
  • @Nevershow2016 您的代码正在运行。检查您的控制台。我刚刚验证过了。您的查询有问题。
  • @Nevershow2016 得到了问题,请检查下面的代码。
  • 在查询后尝试使用mysql_error($con) 捕获错误

标签: php jquery mysql ajax mysqli


【解决方案1】:

知道了:您没有在此处获取文本框值 var search_term = $(this).val();

OP 正在尝试使用 var search_term = $(this).attr('value'); 读取文本框的值

您的选择查询有问题,我已更新。

更新 1:

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' )
    {
        $conn=mysql_connect("localhost","root","") or die ("could not connect");
        mysql_select_db("test") or die ("could not find db");

        if ( !empty( $_POST['search_term'] ) ) 
        {

            $search_term =  $_POST['search_term'] ;

           $query = mysql_query( "SELECT `ingName` FROM `ing` WHERE `ingName` LIKE '".$search_term.'%', $conn );


            if( $query )
            {
                while( $row = mysql_fetch_assoc( $query ) ) 
                {
                    echo '<li>'.$row['ingName'].'</li>';
                }
            }
        }
        mysql_close( $conn );
        exit();
    }
?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Dashboard</title>
  </head>
  <body>

    <div class="container">
        <input type="text" name='search_term' class="searchFunction">
        <input type="submit" value="Search">
        <div class="dropdown">
            <ul class="result"></ul>
        </div>
    </div>

    <script src="http://code.jquery.com/jquery-2.2.1.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script type="text/javascript">
        $( document ).ready( function() {
            $('.searchFunction').keyup( function( event ) {
                var search_term = $(this).val();

                $.post( document.location.href, { search_term:search_term }, function( data ) {
                    $('.result').html( data );

                    $('.result li').click( function( event ) {
                        var result_value = $(this).text();

                        $('.searchFunction').attr('value', result_value );
                        $('.result').html('');
                    });
                });
            });
        });
    </script>

  </body>

【讨论】:

  • 你能解释一下你在这里做了什么改变吗?
  • 您正在尝试读取元素中的属性,而您想要的是值 var search_term = $(this).val();
  • 试过了,这很好,但仍然没有
  • @Nevershow2016 检查我更新的代码。让我知道它是否有效。
  • Howeer 它没有再次添加到框中,我不知道为什么
【解决方案2】:

在 MySQL 命令行中运行您的查询,并尝试获取结果。收到回复了吗?

下一点:你使用了错误的连接。我的意思是,改变这个

,$row['ingName'],

到这里

. $row['ingName'] .

【讨论】:

  • 这可能是原因之一。 好收获
  • 应该这样吗>?
  • echo '
  • ',$row['ingName'],'
  • ';回显 '
  • '.$row['ingName'].'
  • ';
【解决方案3】:

通过 id 或 class 选择您的文本框。这里我使用 id 来做,当一个键被按下时获取文本框的值,并在 ajax 代码中传递输入的值。

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' )
    {
        $conn=mysql_connect("localhost","root","") or die ("could not connect");
        mysql_select_db("test") or die ("could not find db");

        if ( !empty( $_POST['search_term'] ) ) 
        {

            $search_term = mysql_real_escape_string( $_POST['search_term'] );

            $query = mysql_query( "SELECT `ingName` FROM `ing` WHERE `ingName` LIKE '$search_term%'", $conn );


            if( $query )
            {
                while( $row = mysql_fetch_assoc( $query ) ) 
                {
                    echo '<li>'.$row['ingName'].'</li>';
                }
            }
        }
        mysql_close( $conn );
        exit();
    }
?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Dashboard</title>
  </head>
  <body>

    <div class="container">
        <input type="text" name='search_term' id="search_term" class="searchFunction">
        <input type="submit" value="Search">
        <div class="dropdown">
            <ul class="result"></ul>
        </div>
    </div>

    <script src="http://code.jquery.com/jquery-2.2.1.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script type="text/javascript">
        $( document ).ready( function() 
        {
            $('.searchFunction').keyup( function( event ) 
            {
                var search_term = $("#search_term").val();

                $.post( document.location.href, { search_term:search_term }, function( data ) 
                {
                    $('.result').html( data );

                    $('.result li').click( function( event ) 
                    {
                        var result_value = $(this).text();
                        $('.searchFunction').attr('value', result_value );
                        $('.result').html('');
                    });
                });
            });
        });
    </script>
  </body>
</html>

【讨论】:

  • 对此答案的解释将更有用。您在代码中做了哪些更改以及为什么会起作用。不要简单地写“试试这个例子”。
  • 这很棒,它实际上工作得很好,但是是的,做了什么改变,所以我知道
  • @PareshGami 只有一件事错了,当你点击它时,它不会出现在框中
  • 所以它会变成一个下拉框并且它在那里但是当我点击它时,它应该出现在搜索框中
猜你喜欢
相关资源
最近更新 更多
热门标签