【问题标题】:displaying most popular form submissions?显示最流行的表单提交?
【发布时间】:2011-04-07 21:16:24
【问题描述】:

我有一个为残疾学生构建的网站,用于搜索 YouTube,然后以可访问的格式显示结果。

我想显示本网站专用的前 5 个最受欢迎的搜索词。

使用文本输入表单提交搜索词 - 有没有办法将搜索词也提交到 mysql,然后显示最流行的?

或者更好的方法?

表单提交代码:

<fieldset class="search"> 
<form method="get" name="search" action="<?php echo 
 htmlentities($_SERVER['PHP_SELF']); ?>">
  <input type="text" label="type here" class="box" name="v" placeholder="type here..."/>
  <input type="submit" name="submit" value="Search"/>  
</form>
    </fieldset>

非常感谢,迈克

【问题讨论】:

    标签: php mysql html forms search


    【解决方案1】:

    最简单的方法是创建一个保存搜索词的数据库表(使用 strtolower() 转换为小写并检查该词是否已保存)和一个简单的 INT 字段,如果搜索词已存在则递增你的数据库。

    现在您可以使用以下查询从数据库中选择最流行的搜索词:

    SELECT `term` FROM `search_terms` ORDER BY `search_count` DESC LIMIT 5
    

    【讨论】:

      【解决方案2】:

      另一个可能的想法(这可能很愚蠢,我不确定):您可以添加两个 MySQL 表,一个用于 SearchTerms(例如列 SearchTermID(一个数字)和一个用于 SearchTerm 的字符串),然后一个 Searches 表,其中包含一个 SearchID、一个 SearchTermID(使用 SearchTermID 列附加到 SearchTerms 表,例如 SearchDateTime 以记录搜索发生的时间)。然后每次有人搜索时,检查 SearchTerms 表,看看之前是否搜索过这个词,如果是,则在 Searches 表中添加一条记录。

      然后你可以有一个查询来做“返回我这周使用的前 5 个搜索词”,比如 SELECT SearchTerm,Count(SearchID) FROM SearchTerms INNER JOIN Searches ON Searches.SearchTermID=SearchTerms.SearchTermID WHERE SearchDateTime &gt; [today minus a week, or something] LIMIT 5

      我不确定哪个是好的索引,但我认为 SearchDateTime 上的一个对于“前 5 个”查询很有用。 SearchTerms 中的字符串也是如此,因为您将在记录搜索时检查该列。

      (也许在 SearchTerms 表中有一个 NumberOfTimesSearched 列也很好,但您始终可以通过将相关 SearchTermID 在 Searches 表中出现的次数相加来计算它)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-29
        • 2014-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多