Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向动态搜索引擎php添加过滤器_Php_Mysql_Database_Searchable - Fatal编程技术网

向动态搜索引擎php添加过滤器

向动态搜索引擎php添加过滤器,php,mysql,database,searchable,Php,Mysql,Database,Searchable,我正在努力向我的数据库中添加过滤器,但我不知道,谷歌也没有真正的帮助,所以我感谢所有的建议=) 我想添加过滤器,如名称和价格,并按asc和desc顺序排列 my db有4列,id(int15)、品牌/型号(varchar50)、图片(longblob)、价格(varchar50) 关于如何实现这一点有什么建议吗(如果我是初学者,最好有一些例子)? 目前,我创建了下面的表单asc和desc,但我不知道如何集成到我的php代码中。我已将表单名称设置为“结果”” 我现在拥有的是 index.php &

我正在努力向我的数据库中添加过滤器,但我不知道,谷歌也没有真正的帮助,所以我感谢所有的建议=)

我想添加过滤器,如名称和价格,并按asc和desc顺序排列

my db有4列,id(int15)、品牌/型号(varchar50)、图片(longblob)、价格(varchar50)

关于如何实现这一点有什么建议吗(如果我是初学者,最好有一些例子)? 目前,我创建了下面的表单asc和desc,但我不知道如何集成到我的php代码中。我已将表单名称设置为“结果”

我现在拥有的是 index.php

<form action="search.php" type="text"  method="POST">
Name: <input type ="text" name="search_name" size='30' /> 
<input type="submit" value="Search">
<br><br>
<b>Arrange Price by :</b>

<select name="results">
<option value="">Select...</option>
<option value="asc">Ascending</option>
<option value="desc">Descending</option>
</select>

姓名:


通过以下方式安排价格: 选择。。。 提升 下降的


只要您正在清理输入以防止SQL注入,就可以使用POST。为了进一步保护自己,您可以使用事先准备好的声明。另外,我看到您正在使用mysql_*API。我强烈建议您改用MySQLi或PDO。在本例中,我将重点介绍MySQLi,因为它看起来像是在使用MySQL(尽管PDO也适用于MySQL)

对于搜索组件:

如果字段已编制索引,则最好对其进行搜索。数据库将在幕后使用此功能以更快地获取数据。但是,使用类似于%%
和通配符(
%
)将否定您在列上放置的任何索引。这是因为在搜索的左侧使用通配符不允许MySQL使用索引。(长话短说,除非扫描整个表,否则它根本无法判断文本是否匹配。)听起来您需要的是一个
FULLTEXT
索引,您可以使用
MATCH…对
语法运行查询。如果需要,您可以在索引列上使用
LIKE
,但请删除左侧通配符,例如:
SELECT*FROM。。。。。。例如“您的搜索值”%..…

因此,我建议您从这里了解以下概念/主题:

  • 使用MySQLi(或PDO)在PHP中准备语句
  • 列索引(特别是用于搜索目的的
    全文
    索引)
  • 全文搜索MyISAM表(MySQL<5.6)或全文搜索InnoDB(MySQL 5.6+)
  • 全文的内部“评分”以及如何使用
  • 布尔和自然语言搜索。

  • 添加一个你想要的搜索过滤器是一个很好的特性,但是它比你想要做的要多一点。(相信我,谷歌会为你提供大量的信息和这些主题。这是一个练习和习惯使用MySQL更新功能的问题。)

    •使用PDO或Mysqli编写的语句。 •我将使用正则表达式过滤输入(删除所有非单词、数字和一些字符)

    •我将使用全文搜索。

    尝试使用此代码

    • 我所做的更改是,将字段名的锚点创建为表头
    • 默认情况下,标题为ASC顺序,如果单击它,它将更改为DESC顺序
    • sql查询然后使用GET中的字段名对记录进行排序
    • 然后,搜索词也会保存在GET请求中,以便我们可以提前保存它
    • 由于搜索词有时在GET中接收,有时在POST中接收,所以我们在这里使用请求来获取数据
    if(!empty($search_name)){
    如果(strlen($search\u name)>=3){
    if(空($_请求['searchTrm']))
    $_请求['searchTrm']='price';
    if(空($_请求['order']))
    $_请求['order']='ASC';
    $query=“从'shoes'中选择*,其中'brand/model'LIKE'”.mysql\u real\u escape\u string($search\u name)。“%”按“$\u请求['searchTrm]”..$\u请求['ORDER]”;
    $query\u run=mysql\u query($query);
    $query\u num\u rows=mysql\u num\u rows($query\u run);
    如果($query\u num\u rows>=1){
    echo$query_num_行。“找到的结果:
    ”; ?> 形象 “宽度='300'高度='200'/>
    您好,我是否要用我想要的字段替换所有searchTrm?您必须用您想要的字段创建那些td号,即每个td将通过您的搜索术语代表一个字段Hi,感谢您的回复,但在我输入代码后,我的图片没有显示检查代码,我唯一遗漏的是$picture=$query\u row['picture'];不知道它是否重要,已编辑ans,请立即检查Hi deepika,抱歉它不工作,图片无法显示=(图片在此:
    <?php
    
    if (isset($_POST['search_name'])) {
            $search_name = $_POST['search_name'];
    
            if (!empty($search_name)){
    
                if (strlen($search_name)>=3) {
    
                $query = "SELECT * FROM `shoes` WHERE `brand/model` LIKE '".mysql_real_escape_string($search_name)."%' ORDER BY `price` ASC";
                $query_run = mysql_query($query);
                $query_num_rows = mysql_num_rows($query_run);
    
                if ($query_num_rows>=1) {
                    echo $query_num_rows.' Results found:<br>';
    
                    while ($query_row = mysql_fetch_array($query_run)) {
    
    
                            $picture = $query_row['picture'];
                            echo "</br>";
                            echo $query_row ['brand/model']; 
                            echo str_repeat('&nbsp;', 15); // adds 5 spaces
                            echo $query_row ['price'];
                            echo "</br>";
                            echo "</br>";
                            //header("content-type: image/jpeg");
                            echo "<img src='image.php?id=".$query_row['id']."' width='300' height='200' />";
                            echo "</br>";
    
    
    
                    }
                } else {
                    echo 'No Results Found.';
                }
            } else {
                echo 'Text field must be more than 3 characters.';
            }
    
        } else {
            echo 'Text Field Cannot be Empty!';
        }
    }
    
    example: $string = preg_replace('~[^\w\s-_\.,]~','',$string);
    
        if (!empty($search_name)){
    
            if (strlen($search_name)>=3) {
    
                if(empty($_REQUEST['searchTrm']))
                    $_REQUEST['searchTrm'] = 'price';
    
                if(empty($_REQUEST['order']))
                    $_REQUEST['order'] = 'ASC';
    
                $query = "SELECT * FROM `shoes` WHERE `brand/model` LIKE '".mysql_real_escape_string($search_name)."%' ORDER BY ".$_REQUEST['searchTrm']." ".$_REQUEST['order'];
    
                $query_run = mysql_query($query);
                $query_num_rows = mysql_num_rows($query_run);
    
            if ($query_num_rows>=1) {
                echo $query_num_rows.' Results found:<br>';
    ?>
            <table border=1>
                <tr>
                    <td>
                        <?php
    //use your sql field name as searchTrm value
    if($_REQUEST['searchTrm'] == 'brand/model' && $_REQUEST['order'] == 'DESC') { ?>
                            <a href='?searchTrm=brand/model&order=ASC&search_name=<?php echo $_REQUEST['search_name']?>' title = 'ASC'>Brand Name</a>
                        <?php } else { ?>
                            <a href='?searchTrm=brand/model&order=DESC&search_name=<?php echo $_REQUEST['search_name']?>' title = 'DESC'>Brand Name</a>
                        <?php } ?>
                    </td>
                    <td>
                        <?php if($_REQUEST['searchTrm'] == 'price' && $_REQUEST['order'] == 'DESC') { ?>
                            <a href='?searchTrm=price&order=ASC&search_name=<?php echo $_REQUEST['search_name']?>' title = 'ASC'>Price</a>
                        <?php } else { ?>
                            <a href='?searchTrm=price&order=DESC&search_name=<?php echo $_REQUEST['search_name']?>' title = 'DESC'>Price</a>
                        <?php } ?>
                    </td>
                    <td>Image</td>
                </tr>
                <?php
                while ($query_row = mysql_fetch_array($query_run)) {
                     $picture = $query_row['picture'];
                    ?>
                    <tr>
                        <td><?php echo $query_row['brand/model'];?></td>
                        <td><?php echo $query_row['price'];?></td>
                        <td><img src='image.php?id=<?php echo $query_row['id'];?>' width='300' height='200' /></td>
                    </tr>
                    <?php
                }
            ?> </table> <?php
            } else {
                echo 'No Results Found.';
            }
        } else {
            echo 'Text field must be more than 3 characters.';
        }
    
    } else {
        echo 'Text Field Cannot be Empty!';
    }
    }