如何用PHP做一个查询功能和搜索功能....急!!!!!在线等.

honglei8485 2009-08-05 09:31:32
如何用PHP做一个查询功能和搜索功能....急!!!!!在线等.
...全文
1334 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
CYBEREXP2008 2009-08-11
  • 打赏
  • 举报
回复
在php 5.2 中文windows xp通过,如果显示乱码,请在php.ini中设置
default_charset = "gbk"

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
</head>
<body>
<form method="POST">
<table>
<tr>
<td>keyword:</td><td><input type="text" size="20" value="<?php echo isset($_REQUEST["kw"])?$_REQUEST["kw"]:""; ?>" name="kw"></td><td><input type="submit" name="go!" value="submit"></td>
</tr>

</table>
</form>


<?php
echo "<pre>";
if(isset($_REQUEST["kw"]))
{
$targetdir = "./txt";

$dir=dir($targetdir);
//rename usage
while($entry=$dir->read())
{
if($entry == "." || $entry == "..") continue;

if(strstr($entry,$_REQUEST["kw"]))
{
$string = file_get_contents($entry);
echo $string."\n";
break;
}


}
echo "没有这个文件!";
}
?>

</body>
</html>
honglei8485 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cyberexp2008 的回复:]
/* 仿真 Adodb 函数 */
    function selectLimit($sql, $num, $start = 0)
    {
        if ($start == 0)
        {
            $sql .= ' LIMIT ' . $num;
        }
        else
        {
            $sql .= ' LIMIT ' . $start . ', ' . $num;
        }

        return $this->query($sql);
    }

    function getOne($sql, $limited = false)
    {
        if ($limited == true)
        {
            $sql = trim($sql . ' LIMIT 1');
        }

        $res = $this->query($sql);
        if ($res !== false)
        {
            $row = mysql_fetch_row($res);

            if ($row !== false)
            {
                return $row[0];
            }
            else
            {
                return '';
            }
        }
        else
        {
            return false;
        }
    }

    function getOneCached($sql, $cached = 'FILEFIRST')
    {
        $sql = trim($sql . ' LIMIT 1');

        $cachefirst = ($cached == 'FILEFIRST' || ($cached == 'MYSQLFIRST' && $this->platform != 'WINDOWS')) && $this->max_cache_time;
        if (!$cachefirst)
        {
            return $this->getOne($sql, true);
        }
        else
        {
            $result = $this->getSqlCacheData($sql, $cached);
            if (empty($result['storecache']) == true)
            {
                return $result['data'];
            }
        }

        $arr = $this->getOne($sql, true);

        if ($arr !== false && $cachefirst)
        {
            $this->setSqlCacheData($result, $arr);
        }

        return $arr;
    }

    function getAll($sql)
    {
        $res = $this->query($sql);
        if ($res !== false)
        {
            $arr = array();
            while ($row = mysql_fetch_assoc($res))
            {
                $arr[] = $row;
            }

            return $arr;
        }
        else
        {
            return false;
        }
    }

[/Quote]
这查询数据库的吗?
搜索的能给个代码吗?
cyxin2121921 2009-08-05
  • 打赏
  • 举报
回复
4楼的说的算是比较详细了!
找个例子自己看看就成活了
总哈哈 2009-08-05
  • 打赏
  • 举报
回复
下一个小例子看看最直观了。
tfxg 2009-08-05
  • 打赏
  • 举报
回复
簡單的直接就like解決
n688com 2009-08-05
  • 打赏
  • 举报
回复
就是where条件
难点的话就是关于比对 统配
honglei8485 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 blueforyou 的回复:]
这个,唿,算是比较基本的问题,我这里有些自己开发的相关代码,楼主紧的话可以联系我
[/Quote]
楼上怎么联系???
YHL27 2009-08-05
  • 打赏
  • 举报
回复
sf!!
phnessu4 2009-08-05
  • 打赏
  • 举报
回复
网上关于通配符的资料

通配符 说明
_ 与任意单字符匹配

% 与包含一个或多个字符的字符串匹配

[ ] 与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。

[^] 与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。


例子:

• WHERE FirstName LIKE '_im' 可以找到所有三个字母的、以 im 结尾的名字(例如,Jim、Tim)。

• WHERE LastName LIKE '%stein' 可以找到姓以 stein 结尾的所有员工。

• WHERE LastName LIKE '%stein%' 可以找到姓中任意位置包括 stein 的所有员工。

• WHERE FirstName LIKE '[JT]im' 可以找到三个字母的、以 im 结尾并以 J 或 T 开始的名字(即仅有 Jim 和 Tim)

• WHERE LastName LIKE 'm[^c]%' 可以找到以 m 开始的、后面的(第二个)字母不为 c 的所有姓。

phnessu4 2009-08-05
  • 打赏
  • 举报
回复
不知道是不是你想要的....反正思路大致如此......
phnessu4 2009-08-05
  • 打赏
  • 举报
回复
前台html
添加一个<input type="text" name="keyword">的表单抓关键字

把抓到的关键字 构造sql 抓取数据库 用like匹配

select * from `table` where `keyword` like `%$keyword%`;

注意%是通配符 , 表示若干字符

例:
table
id value
1 abc
2 abcd
3 bcd
4 bcde

$keyword = "bcd";

select * from `table` where `keyword` like '$keyword';
匹配到id 3

select * from `table` where `keyword` like '%$keyword';
匹配到id 2 , 3

select * from `table` where `keyword` like '$keyword%';
匹配到id 3 , 4

select * from `table` where `keyword` like '%$keyword%';
匹配到id 2 , 3 , 4
blueforyou 2009-08-05
  • 打赏
  • 举报
回复
这个,唿,算是比较基本的问题,我这里有些自己开发的相关代码,楼主紧的话可以联系我
dzxccsu 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 honglei8485 的回复:]
如何用PHP做一个查询功能和搜索功能....急!!!!!在线等.
[/Quote]什么意思?
查询功能和搜索功能不都是查询数据库吗?把你要想做的说清楚!
「已注销」 2009-08-05
  • 打赏
  • 举报
回复
路过顶下~~~
CYBEREXP2008 2009-08-05
  • 打赏
  • 举报
回复
/* 仿真 Adodb 函数 */
function selectLimit($sql, $num, $start = 0)
{
if ($start == 0)
{
$sql .= ' LIMIT ' . $num;
}
else
{
$sql .= ' LIMIT ' . $start . ', ' . $num;
}

return $this->query($sql);
}

function getOne($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1');
}

$res = $this->query($sql);
if ($res !== false)
{
$row = mysql_fetch_row($res);

if ($row !== false)
{
return $row[0];
}
else
{
return '';
}
}
else
{
return false;
}
}

function getOneCached($sql, $cached = 'FILEFIRST')
{
$sql = trim($sql . ' LIMIT 1');

$cachefirst = ($cached == 'FILEFIRST' || ($cached == 'MYSQLFIRST' && $this->platform != 'WINDOWS')) && $this->max_cache_time;
if (!$cachefirst)
{
return $this->getOne($sql, true);
}
else
{
$result = $this->getSqlCacheData($sql, $cached);
if (empty($result['storecache']) == true)
{
return $result['data'];
}
}

$arr = $this->getOne($sql, true);

if ($arr !== false && $cachefirst)
{
$this->setSqlCacheData($result, $arr);
}

return $arr;
}

function getAll($sql)
{
$res = $this->query($sql);
if ($res !== false)
{
$arr = array();
while ($row = mysql_fetch_assoc($res))
{
$arr[] = $row;
}

return $arr;
}
else
{
return false;
}
}
相信许多liunxer初次听到“GRUB4DOS”这个名字,第一感觉就是:这个对我没用,因为我不用DOS,即使用也不会去通过它启动GRUB。先别,再问一句:您是否用过grldr呢?是否用过MaxDos、一键 ghost、矮人DOS工具盘?如果答案是肯定的,那您已经在用GRUB4DOS了。 是它的名字给人们造成了误解,这也是历史遗留问题——一开始仅仅是“for dos”,而后来开发越来越深入,“FOR DOS”已远不能涵盖其全部。于是它的名字就成了一个障碍,新接触的人往往望名生意,以为它是专给DOS用的,便不去关注——我本人就是如此,很久之后才重新发现它,所以写下这篇文字,希望更多人能够了解并使用这一优秀作品,享受它带来的可靠与便捷。 首先搞清楚与 GNU GRUB 的关系。 GNU GRUB 分为 GNU GRUB Lagecy 和 GNU GRUB2 两代。GNU GRUB Lagecy 其实就是原来的 GNU GRUB 0.xx ,最新版是 2005 年发布的 GNU GRUB 0.97 。目前已停止开发,并改名为 GNU GRUB Lagecy 。GNU GRUB2 是第二代 GRUB,它将取代原来的 GNU GRUB (例如0.9x版),但目前还处于开发阶段,尚未发布正式版。 而 GRUB4DOS 则是对 GNU GRUB Lagecy 的二次开发。该项目最早由 不点 在2003年发起,目前主要由他、bean 和另外几位中国人维护,很多人贡献了代码,再加上广大网友热心帮助,使得 GRUB4DOS 不断完善。在当前 新的 GRUB2 没有到位、老的 GNU GRUB Lagecy 又有许多不完善 的情况下,GRUB4DOS 受到越来越多人的欢迎。 GRUB4DOS 在保留 GNU GRUB 0.97 原有功能的基础上,了很多改进,简单归纳如下: 1、A20代码 和 bug修正 对A20的处理历来就是一个棘手问题。当初IBM引入这一设计,本意是为了让以往那些BUGGY软件能够运行,结果造成后世无穷无尽的隐患。当然不能全怪 IBM,真正应当责怪的是那些不遵守IBM标准的硬件厂商,它们生产的系统无法用常规的几种方法来控制A20,使得软件开发者可能在很多意想不到的地方碰上A20这个妖魔,除了造成死机之外,还导致执行效率的极度降低。在微软的XMS规范中就明确写着,A20的控制在有些机器上是非常耗时的一个操作。 GNU GRUB 0.97中的A20代码很明确是有问题的,这在GNU GRUB邮件列表档案中就有提到。很多用户报告在使用gnu grub 0.97时键盘失去响应。grub开发组在grub2中对A20代码打了补丁,以解决这些问题,但是这个补丁并没有打到我们目前广泛使用的0.97版上。为此GRUB4DOS用取自Linux内核的A20代码替换了原代码,并参考其他一些开源代码了很多改进,基本上解决了这一问题。 A20只是改造的一个方面,在GRUB4DOS的开发过程中修复的GNU GRUB 0.97的bug还有很多,有些在Changelog中并没有提到。到目前为止,已经把那些严重的BUG排解殆尽了,应该可以比较平滑地使用GRUB4DOS了。 2、磁盘仿真(虚拟磁盘) 这是GRUB4DOS的一大特色功能,开发者下了不少功夫。这一功能是将 软盘镜像或硬盘镜像甚至某个硬盘分区 虚拟成 软驱或硬盘,进而运行其中的操作系统(DOS、win98),类似于以前流行的“虚拟软驱”(vfloppy),但功能要强得多。 用SYSLINUX中的memdisk也可实现虚拟磁盘。比较而言,GRUB4DOS功能更强,限制更少,用法更灵活,同时对bios的要求也要高那么一点点,在一些BIOS有缺陷的机子上可能会出问题(不过不用太担心,实践表明这种情况极其罕见)。 3、多种方式进入grub环境 1)通过dos 在dos下运行grub.exe即可进入纯粹的grub环境,并部分地支持退回到DOS。也可把grub.exe作为 CONFIG.SYS 里的设备驱动文件而运行。 2)通过Windows启动菜单 这是被广泛使用的一种用法。MaxDos、一键ghost硬盘版、矮人DOS工具盘之类的软件就是以这种方式启动grldr,再通过磁盘仿真虚拟出一个软驱,进而启动DOS的。 3)将GRUB4DOS引导代码写入硬盘MBR,开机直接进入grub环境 乍一看这不算什么改进——GNU GRUB本来就可以这样引导,但实际上在这里 GRUB4DOS 有相当大的革新。 GNU GRUB 的安装方法是: root (xxx,x) setup (xxx) 第一句是指定一个分区,该分区须存放有/boot/stage1和/boot/stage2文件,第二句是将引导代码写入硬盘MBR。这样安装的 GRUB,其MBR引导代码被设置为从固定的分区加载stage2。假如我们某一天因为某些原因,需要删除或格式化该分区,或者一些会引起该分区序号变化的操作(比如用 pqmagic 在该分区前添加或删除分区),就需要预先重装一次grub,重新指定存放stage2文件的分区,否则将无法引导。这一点上 GNU GRUB 显得不够灵活。 而 GRUB4DOS 采取了新的策略:其MBR引导代码并非固定地指向某个分区,而是搜索所有分区,查找并加载 grldr,只要某分区上存有一份 grldr,就能启动。而且安装时可以将原微软的MBR备份,启动时如果找不到grldr,便自动加载备份的MBR。显然这种方式更加灵活、稳健,所以 GRUB4DOS 虽然保留了 GNU GRUB 的全部命令和功能(包括 setup 命令),但不推荐使用传统的安装方式。 当然 GRUB4DOS 方式也不是十全十美,因为其引导代码还不能识别所有的文件系统,目前支持仅 NTFS/FAT12/FAT16/FAT32/EXT2/EXT3(也不少了 ,以后将支持更多的格式),所以可能需要专门设一个分区来存放 grldr 。不过在我看来这是值得的,一点小麻烦换来了更多的方便和稳定。 4、图片背景支持 可用 640x480@14位色 的图片背景。图片制作请参考这里: http://bbs.znpc.net/viewthread.php?tid= ... a=page%3D4 5、中文支持 GRUB4DOS 发布有中文版,大大方便了中文用户。 6、光驱支持 该功能使得用户可以再GRUB环境下访问光驱,并可由光驱启动,很实用。Os:GNU/Debian Linux 5.0 Lenny -AMD Athlon(tm) 64 Processor 3000+ -NVIDIA GeForce 7300 GT -512M*2 DDR Memory -ST SATA 250G

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧