从PHP

时间:2016-04-18 06:57:06

标签: javascript php jquery mysql dynamic

我有一个搜索框,通过数据库进行搜索。 在我的代码中,搜索在一个输入框中完成,动态搜索输出显示在它下面的文本区域。

我想要的是像Google这样的搜索,当用户星星打字时,它应该显示db表中的类似项目。

例如,如果我有两个名为" Dummy 1"和"假人2"并且用户键入" du",搜索栏应显示2个结果,用户应该能够选择一个。

我的代码是:

<form action="newbrand.php" method="post">
    <br>
    Brand Name: <input type="text" name="bname" /><br><br>
    Search for an Organization: <input type="text" name="search" onkeyup="searchq()" id="output"><  
    Selected Organization:<textarea id="output"></textarea>
</form>

js 是这样的:

<script type="text/javascript">
function searchq(){
    var searchTxt = $("input[name='search']").val();
    $.post("search.php", {searchVal: searchTxt},function(output){
        $("#output").html(output);
    }
}
</script>

这是search.php文件:

<?php
include 'db_connect.php';
$link = mysqli_connect($host, $username, $password, $db);
if(!link){
    echo "DB Connection error";
}
$output = '' ;
$output2 = '' ;
if (isset($_POST['searchVal'])){
$searchq = $_POST['searchVal'];
//$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
$query = mysqli_query($link, "SELECT * FROM `organisations_info` WHERE `Organisation_Name` LIKE '%$searchq%'")or die("Could not search!");
$count = mysqli_num_rows($query);
if($count == 0){
    $output = '<div>No results!</div>';
}else{
    while($row = mysqli_fetch_array($query)){
        $orgname = $row['Organisation_Name'];
        $orgid = $row['Organisation_Id'];
        $subs = $row['Subscription_Type'];
        //$output = echo "<option value='".$orgname."'>" . $orgname . "</option>";
        $output = $orgname; 
        $output2 = $orgid; 
        $output3 = $subs;
        //$output = '<div>'.$orgname.'</div>';
    }
}
}
echo ($output);
?>

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

在JS代码中...

<script type="text/javascript">
function searchq(){
    var searchTxt = $("input[name='search']").val();
    $.post("search.php", {searchVal: searchTxt},function(output){
        $("#output").html(output);
    }
}
</script>

您已经给了输入类型元素的 id(#output)以显示(或返回)HTML语句,并且js脚本也没有正确关闭(语法错误)。因此< strong>有效的陈述将是...

<form action="newbrand.php" method="post">
    <br>
    Brand Name: <input type="text" name="bname" /><br><br>
    Search for an Organization: <input type="text" name="search" onkeyup="searchq()" id="output"><  
    Selected Organization:<textarea id="output"></textarea>
</form>
<br>
<div id="mydiv"></div>

<script type="text/javascript">
    function searchq(){
        var searchTxt = $("input[name='search']").val();
        $.post("search.php", {searchVal: searchTxt},function(output){
        $("#mydiv").html(output);
    });
}
</script>

答案 1 :(得分:0)

只需更改您的查询:

$query = mysqli_query($link, "SELECT * FROM `organisations_info` WHERE `Organisation_Name` LIKE  '%".$searchq."%' ")or die("Could not search!");

查询将正常工作:)

然后 search.php 中以HTML格式输出回复(相应地管理css):

<?php
include 'db_connect.php';
$link = mysqli_connect($host, $username, $password, $db);
if(!link){
    echo "DB Connection error";
}
$output = '' ;
$output2 = '' ;
if (isset($_POST['searchVal'])){
$searchq = $_POST['searchVal'];
//$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
$query = mysqli_query($link, "SELECT * FROM `organisations_info` WHERE `Organisation_Name` LIKE  '%".$searchq."%' ")or die("Could not search!");

$count = mysqli_num_rows($query);
if($count == 0){
    $output = '<div>No results!</div>';
}else{
    while($row = mysqli_fetch_array($query)){
        $orgname = $row['Organisation_Name'];
        $orgid = $row['Organisation_Id'];
        $subs = $row['Subscription_Type'];
    ?>
        <div><?php echo $orgname; ?></div>';
        <div><?php echo $orgid ; ?></div>';
        <div><?php echo $subs ; ?></div>';
   <?php
    } // while
} // else
} // main if
?>

我希望这是你所需要的!!