MySQL搜索和PHP结果

时间:2014-01-16 01:52:54

标签: php html mysql search-engine

我是PHP的新手,我正在努力创建一个基本的搜索引擎。在每次搜索之后,我想在HTML页面中提供结果摘要,其中包含满足查询的所有项目。每个项目摘要还应提供指向特定HTML页面的链接,其中包含有关此项目的详细信息(每个项目的页面)。这与stackoverflow或google或任何其他搜索引擎非常相似。

这可以用PHP制作吗?

我发现这样做的唯一方法是使用像这样的代码自动生成每个搜索的HTML摘要代码(并且它可以工作),用于摘要页面(我必须做类似的事情来生成HTML页面) :

<?php
function frontPagePresentation($theFirstName,$theLastName,$theUserName,$theSummary)
{

    $fileName='ShowSearch'.$theUserName.'.html';

    $theHTML="profileO".$theUserName.".html";

    $theLinkText=$theFirstName." ".$theLastName;

    $theFigureName="/NetBeansProjects/NewPhpProject/photos/".$theUserName;

    $thePos=strpos($theSummary, ' ', 200);
    $theSummary=substr($theSummary,0,$thePos); 
    $theSummary=": ".$theSummary;



    //$file = fopen(,"w");

    $str1="<table border=\"0\" width=\"75%\">";

    echo $str1;

if (!($fp = fopen($fileName, 'w'))) {
    return;
}

    $str1="<table border=\"0\" width=\"75%\">";


$str2="<tr>";
$str3="<td width=\"20%\">";
$str4="<img src= $theFigureName  alt=\" \" width= \"100\">"; 
$str5="</td>";
$str6="<td width=\"80%\">";
$str7="<a href=  $theHTML >  $theLinkText  </a>"; 
$str8= $theSummary;
$str9="</td>";
$str10="</tr>";
$str11="</table>";    




$len = fprintf($fp, '%s',$str1."\n");
$len = fprintf($fp, '%s',$str2."\n");
$len = fprintf($fp, '%s',$str3."\n");
$len = fprintf($fp, '%s',$str4."\n");
$len = fprintf($fp, '%s',$str5."\n");
$len = fprintf($fp, '%s',$str6."\n");
$len = fprintf($fp, '%s',$str7."\n");
$len = fprintf($fp, '%s',$str8."\n");
$len = fprintf($fp, '%s',$str9."\n");
$len = fprintf($fp, '%s',$str10."\n");
$len = fprintf($fp, '%s',$str11."\n");






}
?>

之后我将这个页面加载到一个HTML页面(将显示摘要的HTML页面)中,使用以下内容:

$ theUser = mysql_fetch_assoc($ theUserSearch); $ theFirstName = $ theUser [ '姓名']; $ theLastName = $ theUser [ '姓氏']; $ theUserName = $ theUser [ '用户名']; $ theSummary = $ theUser [ '摘要'];

frontPagePresentation($ theFirstName,$ theLastName,$ theUserName,$ theSummary);

$ theHTML = “ShowSearch” $ theUserName。 “HTML”;

require($DOCUMENT_ROOT . $theHTML);

正如我所说,我是PHP的新手,但这似乎不是一个非常聪明的方法。

每次我必须生成很多摘要和所有与这些摘要相关的主页(因为在将浏览器发送到HTML之后,我再也无法访问它们了 - 我在客户端)并且每次搜索后我都会必须删除它们(包括与每个项目相关的摘要和HTML页面)。此外,目前尚不清楚如何选择正确的删除时间(如何知道这些结果是否仍在使用?)

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我认为你应该做的是尝试学习像Codeigniter或Laravel这样的小型PHP框架。 基本上,它允许您“开箱即用”的是将URL映射到特定代码。

例如,您可以只使用2个不同的代码部分来管理它。 第一部分可以显示搜索表单。 第二部分可以显示结果。无需生成任何HTML。如果您需要“缓存”数据,可以使用我列出的框架来完成。

因此,总而言之,您可以使用这些框架执行的操作如下: - 将url / search映射到search.php文件 - 将urls / search-result / *映射到文件search_result.php

请注意,“*”是一个通配符,如果网址以/ search-result / ...开头,则始终会调用文件“search_result.php”。

之后,在“search_result.php”文件中,您可以访问此通配符的值。


为您寻找:为什么需要生成HTML文件,背后的需求是什么?是为了表现吗?与某人分享结果..?

(抱歉,我会使用评论功能,但我的声誉还不到50岁)


编辑2:我建议你做的是尝试学习Laravel(获得“冷却”)或代码点火器(轻量级),如果你有空闲时间。

第二个选项,如果你想更快地完成它,可以学习一点用Apache重写URL。例如,请查看:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html (或在Google上搜索Apache重写教程)

您希望通过以下方式实现: - 使用/ user /获取所有生成的URL并将其发送到search_user.php?stringToSearch = $ 1 php script - 请注意$ 1将被url的“/ user /”部分后面的内容替换 - 所以,如果你键入/ user / bob,那么URL基本上是search_user.php?stringToSearch = bob(但它将是一个“静默重定向”,所以用户仍然会在URL中看到/ user / bob。 - 然后,在您的search_user.php脚本中,您将执行

<?php
$stringToSearch = $_GET['stringToSearch'];
$theUser=mysql_fetch_assoc($stringToSearch); 
...

这就是你搜索引擎的“细节”部分。

对于“搜索和显示”部分,创建一个新脚本(如index.php)并基本完成您在开始时发布的内容。但不是这一行:

$str7="<a href='$theHTML'>  $theLinkText  </a>"; 

使用此

$str7="<a href='http://www.yoursite.com/user/$theUserName'>  $theLinkText  </a>"; 

这有意义吗?