【问题标题】:how to make search query results show up as links to their pages如何使搜索查询结果显示为其页面的链接
【发布时间】:2013-04-04 01:42:37
【问题描述】:

如您所见,我是 php 新手 :)

如何使搜索查询结果显示为指向其页面的链接。我需要在我的页面表中添加一个“链接”列到我的数据库吗?然后search_output出来呢?

    <?php

error_reporting(E_ALL);
ini_set('display_errors', '1');

$search_output = "";
if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
    $searchquery = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['searchquery']);
    {
        $sqlCommand = "(SELECT id, page_title AS title FROM pages WHERE MATCH (page_title,page_body) AGAINST ('$searchquery'))";

    }
    include_once("db_connects.php");
    $query = mysql_query($sqlCommand) or die(mysql_error());
    $count = mysql_num_rows($query);
    if($count > 1){
        $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />$sqlCommand<hr />";
        while($row = mysql_fetch_array($query)){

            $id = $row["id"];
            $title = $row["title"];


            $search_output .= "";
        } // close while
    } else {
        $search_output = "<hr />0 results for <strong>$searchquery</strong><hr />$sqlCommand";
    }
}
?>
<html>
<head>
</head>
<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Search For: 
  <input name="searchquery" type="text" size="44" maxlength="88"> 


</select>
<input name="myBtn" type="submit">
<br />
</form>
<div>
<?php echo $search_output; ?>
</div>
</body>
</html>

【问题讨论】:

    标签: search hyperlink


    【解决方案1】:

    您需要将查询提取的所有输出附加到您的 $search_output 字符串中。

     while($row = mysql_fetch_array($query)){
    
            $id = $row["id"];
            $title = $row["title"];
            $search_output .= "<a href='".$_SERVER['SERVER_NAME']."/".$title."'>".$title."</a><br>";
            }
    

    但这也取决于您的链接的外观,它们可能不像上面那么简单,或者可能链接到外部。然后在这种情况下,是的,您在其中硬输入链接的额外字段可能很有用。

    回答下一个问题的新编辑...

      while($row = mysql_fetch_array($query)){
    
            $id = $row["id"];
            $title = $row["title"];
            $link = $row["links"];
            $search_output .= "<a href='".$link."'>".$title."</a><br>";
            }
    

    【讨论】:

    • 感谢您的快速回答。我认为有必要对链接字段进行硬输入。我该怎么做?
    • 嗯,你会去你的页面表,并添加一个名为'links'的字段,然后只需将$link = $row['links']添加到那个mysql_fetch_array。然后用 $link 替换 $_SERVER['SERVER_NAME'] 的东西。也就是说....如果您将带有 http:// 的整个地址放入该列,则只需将 $link 放在 的引号之间。
    • 是的,我这样做了,但注意:未定义的索引:第 22 行的链接 blahblahblah 正在显示。我认为 sqlCommand 中定义的 ID 和标题?因为title的字段名实际上是page_title
    • 你记得在那个 sqlCommand 中添加链接吗? $sqlCommand = "(SELECT id, links, page_title AS title FROM pages WHERE MATCH (page_title,page_body) AGAINST ('$searchquery'))";
    • 愚蠢的我.. 谢谢凯尔!你一直是最有帮助的.. 只是想说这些链接都不起作用,但是当我在它们起作用的链接前面添加 http:// 时。不知道这是为什么..
    猜你喜欢
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多