<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>华斐Blog &#187; php</title>
	<atom:link href="http://www.huafei117.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.huafei117.com</link>
	<description>华斐网志以及学习心得</description>
	<lastBuildDate>Wed, 28 Dec 2011 02:36:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>PHP分页原理</title>
		<link>http://www.huafei117.com/2010/03/22/php%e5%88%86%e9%a1%b5%e5%8e%9f%e7%90%86/</link>
		<comments>http://www.huafei117.com/2010/03/22/php%e5%88%86%e9%a1%b5%e5%8e%9f%e7%90%86/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 14:05:56 +0000</pubDate>
		<dc:creator>华斐</dc:creator>
				<category><![CDATA[PHP&MYSQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[分页原理]]></category>

		<guid isPermaLink="false">http://www.huafei117.com/149.htm</guid>
		<description><![CDATA[作为一个Web程序，经常要和不计其数的数据打交道，比如会员的数据，文章数据，假如只有几十个会员那很好办，在一页显示就可以了，可是假如你的网站是几千甚至几十万会员的话，如果都在一页打开的话无论对浏览器还是观看者都是一种折磨。 相信每个学习PHP的新手都会对分页这个东西感觉很头疼，不过有了默默的这一水帖，你肯定会拍拍脑袋说，嘿，原来分页竟然如此简单？的确，现在请深呼吸一口新鲜的空气，仔细的听默默给你一点一点的分解。 假设我们要处理1000条数据，要在每页中显示10条，这样的话就会分100页来显示，咱们先看一看在mysql里提取10条信息是如何操作的。 Select * from table limit 0,10 上面是一句很简单的mysql查询语句，它的作用是从一个名叫table的表里提取10条数据，并且把所有字段的值都获得。 关键的地方就在这段“limit 0,10”，它其中的0是以0为起始点，后面的10则是显示10条数据，那么我们要以10为起始点，显示到第20条数据该怎么写呢？ 可能很多大大会心直口快的说“limit 10,20”嘛！啊哦，这样可就错误了哦，正确的写法是“limit 10,10”它后面的参数并非是结束点而是要提取的数目，记住哦。 懂得了如何提取10条数据，那么提取1000条也就是做100次这种查询呀，就是说要做如下的查询： Limit 0,10&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //第一页 Limit 10,10&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //第二页 Limit 20,10&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //第三页 Limit 30,10&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //第四页 …… 看出有什么规律了吗？没错，第一个参数每翻一页就增加10，可是第二个参数是不变的。 也就是说咱们设法根据页数来改变第一个参数的值，就可以进行分页显示数据了，怎么样，原理是不是很简单？ 可是要怎么设法根据页数来改变第一个参数的值呢？首先，咱们要有一个页数的值，用url的GET方式获取。 比如index.php?page=18 相信大部分的大大对这个东西不陌生吧，这种url地址可是随处可见，其中的page参数的作用就是传入要显示的页数。 咱们通过一段代码来看一看究竟是如何实现的吧： &#60;?php $page=isset($_GET['page'])?intval($_GET['page']):1;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //这句就是获取page=18中的page的值，假如不存在page，那么页数就是1。 $num=10;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //每页显示10条数据 $db=mysql_connect(&#34;host&#34;,&#34;name&#34;,&#34;pass&#34;);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //创建数据库连接 $select=mysql_select_db(&#34;db&#34;,$db);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //选择要操作的数据库 /* 首先咱们要获取数据库中到底有多少数据，才能判断具体要分多少页，具体的公式就是 总数据数除以每页显示的条数，有余进一。 也就是说10/3=3.3333=4 有余数就要进一。 */ $total=mysql_num_rows(mysql_query(&#34;select * from table&#34;)); //查询数据的总数 [...]]]></description>
			<content:encoded><![CDATA[<p>作为一个Web程序，经常要和不计其数的数据打交道，比如会员的数据，文章数据，假如只有几十个会员那很好办，在一页显示就可以了，可是假如你的网站是几千甚至几十万会员的话，如果都在一页打开的话无论对浏览器还是观看者都是一种折磨。 </p>
<p>相信每个学习PHP的新手都会对分页这个东西感觉很头疼，不过有了默默的这一水帖，你肯定会拍拍脑袋说，嘿，原来分页竟然如此简单？的确，现在请深呼吸一口新鲜的空气，仔细的听默默给你一点一点的分解。 </p>
<p>假设我们要处理1000条数据，要在每页中显示10条，这样的话就会分100页来显示，咱们先看一看在mysql里提取10条信息是如何操作的。 </p>
<blockquote><p>Select * from table limit 0,10 </p>
</blockquote>
<p>上面是一句很简单的mysql查询语句，它的作用是从一个名叫table的表里提取10条数据，并且把所有字段的值都获得。 </p>
<p>关键的地方就在这段“limit 0,10”，它其中的0是以0为起始点，后面的10则是显示10条数据，那么我们要以10为起始点，显示到第20条数据该怎么写呢？ </p>
<p>可能很多大大会心直口快的说“limit 10,20”嘛！啊哦，这样可就错误了哦，正确的写法是“limit 10,10”它后面的参数并非是结束点而是要提取的数目，记住哦。 </p>
<p>懂得了如何提取10条数据，那么提取1000条也就是做100次这种查询呀，就是说要做如下的查询： </p>
<p>Limit 0,10&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //第一页    <br />Limit 10,10&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //第二页     <br />Limit 20,10&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //第三页     <br />Limit 30,10&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //第四页     <br />……     <br />看出有什么规律了吗？没错，第一个参数每翻一页就增加10，可是第二个参数是不变的。     <br />也就是说咱们设法根据页数来改变第一个参数的值，就可以进行分页显示数据了，怎么样，原理是不是很简单？ </p>
<p>可是要怎么设法根据页数来改变第一个参数的值呢？首先，咱们要有一个页数的值，用url的GET方式获取。    <br />比如index.php?page=18     <br />相信大部分的大大对这个东西不陌生吧，这种url地址可是随处可见，其中的page参数的作用就是传入要显示的页数。 </p>
<p>咱们通过一段代码来看一看究竟是如何实现的吧：    <br />&lt;?php </p>
<p>$page=isset($_GET['page'])?intval($_GET['page']):1;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //这句就是获取page=18中的page的值，假如不存在page，那么页数就是1。    <br />$num=10;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //每页显示10条数据 </p>
<p>$db=mysql_connect(&quot;host&quot;,&quot;name&quot;,&quot;pass&quot;);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //创建数据库连接    <br />$select=mysql_select_db(&quot;db&quot;,$db);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //选择要操作的数据库 </p>
<p>/*    <br />首先咱们要获取数据库中到底有多少数据，才能判断具体要分多少页，具体的公式就是     <br />总数据数除以每页显示的条数，有余进一。     <br />也就是说10/3=3.3333=4 有余数就要进一。     <br />*/ </p>
<p>$total=mysql_num_rows(mysql_query(&quot;select * from table&quot;)); //查询数据的总数    <br />$pagenum=ceil($total/$num);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //获得总页数 </p>
<p>//假如传入的页数参数大于总页数，则显示错误信息    <br />If($page&gt;$pagenum || $page == 0){&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160; echo &quot;Error : Can Not Found The page .&quot;;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160; exit;     <br />} </p>
<p>$offset=($page-1)*$num;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //获取limit的第一个参数的值，假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。 </p>
<p>$info=mysql_query(&quot;select * from table limit $offset,$num&quot;);&#160;&#160; //获取相应页数所需要显示的数据    <br />while($it=mysql_fetch_array($info)){&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160; echo $it['name'].&quot;&lt;br /&gt;&quot;;     <br />}&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //显示数据     <br />for($i=1;$i&lt;=$pagenum;$i++){     <br />&#160;&#160;&#160;&#160;&#160;&#160; $show=($i!=$page)?&quot;&lt;a href=&#8217;index.php?page=&quot;.$i.&quot;&#8217;&gt;$i&lt;/a&gt;&quot;:&quot;&lt;b&gt;$i&lt;/b&gt;&quot;;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160; echo $show.&quot;&amp;nbsp;&quot;;     <br />} </p>
<p>/*显示分页信息，假如是当页则显示粗体的数字，其余的页数则为超连接，假如当前为第三页则显示如下    <br />1 2 3 4 5 6     <br />*/     <br />?&gt;&#160; <br />假如你仔细的读过上面的代码，把数据库连接和查询的表替换成你的，那么就能看见它的执行效果哦。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huafei117.com/2010/03/22/php%e5%88%86%e9%a1%b5%e5%8e%9f%e7%90%86/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[转]PHPer水平分段</title>
		<link>http://www.huafei117.com/2010/03/01/%e8%bd%acphper%e6%b0%b4%e5%b9%b3%e5%88%86%e6%ae%b5/</link>
		<comments>http://www.huafei117.com/2010/03/01/%e8%bd%acphper%e6%b0%b4%e5%b9%b3%e5%88%86%e6%ae%b5/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 16:55:22 +0000</pubDate>
		<dc:creator>华斐</dc:creator>
				<category><![CDATA[PHP&MYSQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phper水平]]></category>

		<guid isPermaLink="false">http://www.huafei117.com/134.htm</guid>
		<description><![CDATA[仅供PHP学习进阶做参考！ &#160; 1 : 对PHPer的划分,我对PHPer划分为以下几个阶段. &#160; a: PHP 爱好者 (半个PHPer) &#160; b: PHP 初学者 (PHP Beginner) &#160; c: PHP 初级程序员 (Primary PHP Coder) &#160; d: PHP 中级程序员 (Junior PHP Coder) &#160; e: PHP 高級程序员 (Senior PHP Coder) &#160; f: PHP 工程师 (PHP Programmar) &#160; 以下是对PHPer划分的具体描述: &#160; X: PHPer的共同特点: &#160; 0: 会电脑,能上网. &#160; 1: 知道w3c标准, &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>仅供PHP学习进阶做参考！</p>
<p>&#160; 1 : 对PHPer的划分,我对PHPer划分为以下几个阶段.   <br />&#160; a: PHP 爱好者 (半个PHPer)    <br />&#160; b: PHP 初学者 (PHP Beginner)    <br />&#160; c: PHP 初级程序员 (Primary PHP Coder)    <br />&#160; d: PHP 中级程序员 (Junior PHP Coder)    <br />&#160; e: PHP 高級程序员 (Senior PHP Coder)    <br />&#160; f: PHP 工程师 (PHP Programmar)    <br />&#160; 以下是对PHPer划分的具体描述:</p>
<p> <span id="more-134"></span>
<p>&#160; X: PHPer的共同特点:    <br />&#160; 0: 会电脑,能上网.    <br />&#160; 1: 知道w3c标准,    <br />&#160; 2: 会html,会JS,会PHP.会MySQL.    <br />&#160; 3: 知道linux.见过linux运行.    <br />&#160; 不满足以上内容者别说自己是PHPer.</p>
<p>以下对不同阶段的描述, 每一个高级阶段都需要掌握低级阶段的技能 . 他们之间具有继承关系. 在初级阶段,由于目前国内的情况.经常需要PHPer兼美工/网管的功能.所以也写了一部分其他技能.</p>
<p>&#160; a: PHP 爱好者   <br />&#160; 定义: 以PHP程序为业余爱好,建有或正维护着一个或几个使用PHP技术实现的网站/程序的人是PHP 爱好者.    <br />&#160; 描述: 这些人一般不以PHP为谋生手段,他们的分布以网站站长及在校学生为主.    <br />&#160; 特征: 1: 会用dreamweaver/frontpage等工具制作网页.    <br />&#160; 2: 可以对现成PHP程序进行修改.    <br />&#160; 3: 爱好PHP.    <br />&#160; 技术要求: 无.</p>
<p>&#160; b: PHP 初学者 (PHP Beginner)   <br />&#160; 定义: 准备以PHP程序谋生,准备建设或正在维护一个或几个使用PHP技术实现的网站/程序的人是PHP 初学者 (PHP Beginner).    <br />&#160; 描述: 这些人已经或即将以PHP为主要谋生手段,他们的分布以即将毕业的大学生及刚刚加入PHP 程序员行列的人为主    <br />&#160; 特征: 1: 能够简单维护/操作/优化linux.    <br />&#160; 2: 能够编写PHP程序.    <br />&#160; 3: 会MySQL.    <br />&#160; 4: 会html/js.    <br />&#160; 5: 能够构建符合W3C标准的页面.    <br />&#160; 6: 能够胜任简单的服务器维护工作.    <br />&#160; 技术要求:    <br />&#160; 1: 服务器运行系统:    <br />&#160; a: linux:    <br />&#160; I: 能够安装Linux系统、熟练使用Linux常用命令、知道Vim文本编辑器，会软件包管理.    <br />&#160; II: 能够实际操作用户管理、进程管理、文件系统管理、权限管理功能    <br />&#160; III: 知道并会使用Linux网络配置相关文件、基本配置命令、DHCP、VNC、DNS服务器、Samba服务器. 能成功配置并使以下服务平稳运行.SSH、FTP、Apache，站点登录控制、日志管理.    <br />&#160; IV: 能够使用shell对服务器进行维护.    <br />&#160; V: 能够进行Linux系统安全配置、Iptables、syslog日志管理    <br />&#160; b: windows:    <br />&#160; 仅为初学者和初级程序员要求.    <br />&#160; I: 能够安装windows、熟练使用windows、能够对IIS进行优化.    <br />&#160; II: 能够正确配置防火墙、对服务器进行管理维护.    <br />&#160; III: 能够抵御普通的网络攻击.    <br />&#160; 2 web页面技术及相关:    <br />&#160; 其实这不应该算是PHP的技术.但实际工作中,大部分PHP初学者都需要兼前台/后台/网管的角色.故在此提出,仅供参考.    <br />&#160; I: 熟练掌握HTML, Dreamweaver、常用标签、图象地图、表格、分桢框架、表单,Header处理,CSS, 样式表的分类、样    <br />式则规器使用，常用的样式、层标签,JavaScript    <br />&#160; II: 各种事件及事件处理程序的应用、window对象、document对象、location对象、body对象、form对象、form表单字段元素对象    <br />&#160; III: ajax及其相关技术.能完成常见ajax页面制作</p>
<p>&#160; 3 MySQL技术   <br />&#160; I: 熟练掌握SQL语句.    <br />&#160; II: 熟练掌握MySQL的常用操作.包括安全、访问控制和权限、备份和恢复,复制、导入和导出记录.    <br />&#160; III: 熟练掌握 phpMyAdmin或任意一种MySQL管理维护工具.</p>
<p>&#160; 4 PHP技术   <br />&#160; I: 熟练掌握PHP语法,常用函数.    <br />&#160; II: 熟悉PHP的面向对象编程.并能实际使用面向对象思想进行程序写作.    <br />&#160; III: 熟悉PHP常用库.</p>
<p>&#160; c: PHP 初级程序员 (Primary PHP Coder)   <br />&#160; 定义: 正在以PHP程序谋生,正在建设或维护一个或几个使用PHP技术实现的网站/程序的人,PHP经验有限的人是PHP初级程序员.    <br />&#160; 描述: 这些人已经以PHP为主要谋生手段,他们的分布以刚刚加入PHP 程序员行列的人为主,也有部分加入PHP行列若干年的人.    <br />&#160; 特征: 1: 能够维护/操作/优化linux.    <br />&#160; 2: 熟练编写PHP程序.    <br />&#160; 3: 熟练掌握MySQL.    <br />&#160; 4: 会html/js.    <br />&#160; 5: 能够快速构建符合W3C标准的页面.    <br />&#160; 6: 能够胜任大部分服务器维护工作.    <br />&#160; 技术要求:    <br />&#160; 1: 服务器运行系统:    <br />&#160; a: linux:    <br />&#160; I: 熟练安装Linux系统、熟练使用Linux常用命令和某些日常使用的命令、掌握软件包管理.    <br />&#160; II: 能够熟练操作用户管理、进程管理、文件系统管理、权限管理功能    <br />&#160; III: 能够熟练使用Linux网络配置相关文件、基本配置命令、DHCP、VNC、DNS服务器、Samba服务器. 能快速的配置并使</p>
<p>以下服务平稳运行.SSH、FTP、Apache，站点登录控制、日志管理.   <br />&#160; IV: 能够对MySQL和Apache进行一定的优化以提升网站性能.    <br />&#160; V: 能够使用shell对服务器进行维护.熟练使用常用的维护工具.    <br />&#160; VI: 能够进行Linux系统安全配置、Iptables、syslog日志管理    <br />&#160; b: windows:    <br />&#160; 仅为初学者和初级程序员要求.    <br />&#160; I: 能够安装windows、熟练使用windows、能够对IIS进行优化.    <br />&#160; II: 能够正确配置防火墙、对服务器进行管理维护.    <br />&#160; III: 能够抵御普通的网络攻击.    <br />&#160; 2 web页面技术及相关:    <br />&#160; 其实这不应该算是PHP的技术.但实际工作中,大部分初级PHP程序员在公司里都需要兼前台/后台/网管的角色.故在此提出,仅供参考.</p>
<p>I: 熟练掌握HTML, Dreamweaver、常用标签、图象地图、表格、分桢框架、表单,Header处理,CSS, 样式表的分类、样式则规器使用，常用的样式、层标签,JavaScript   <br />&#160; II: 各种事件及事件处理程序的应用、window对象、document对象、location对象、body对象、form对象、form表单字段 </p>
<p>元素对象   <br />&#160; III: ajax及其相关技术.能完成常见ajax页面制作.    <br />&#160; IV: 会photoshop在内的一种或多种图片编辑软件</p>
<p>&#160; 3 MySQL技术   <br />&#160; I: 熟练掌握SQL语句.    <br />&#160; II: 熟练掌握MySQL的操作.包括安全、访问控制和权限、备份和恢复,复制、导入和导出记录.    <br />&#160; III: 熟练掌握 phpMyAdmin或任意一种MySQL管理维护工具.    <br />&#160; IV: 知道MySQL常见性能瓶颈的原因及解决方法.并能实际解决.</p>
<p>&#160; 4 PHP技术   <br />&#160; I: 熟练掌握PHP语法,常用函数.    <br />&#160; II: 熟悉PHP的面向对象编程.并能实际使用面向对象思想进行程序.    <br />&#160; III: 熟悉php面向对象的特性.能够根据实际运行环境选择开发方法.    <br />&#160; IV: 熟悉PHP常用库.能够使用常用的php库进行项目开发.    <br />&#160; V: 拥有良好的编码格式习惯,可以规范的进行代码编写.    <br />&#160; 5 项目相关    <br />&#160; I: 实际完成过PHP项目.或全程参与过php网站开发与建设.    <br />&#160; II: 能够较为快速的进行项目开发.</p>
<p>&#160; d: PHP 中级程序员 (Junior PHP Coder)   <br />&#160; 定义: 正在以PHP程序谋生,正在建设或维护一个或几个使用PHP技术实现的网站/程序的人,有几年PHP经验但是尚未积累必要的代码库和</p>
<p>快速开发工具的人是PHP 中级程序员 .   <br />&#160; 描述: 这些人已经以PHP为主要谋生手段,他们的分布以加入PHP 程序员行列5年内的人为主,也有部分加入PHP行列更多年的人.    <br />&#160; 特征:    <br />&#160; 1: 能熟练维护/操作/优化linux.    <br />&#160; 2: 快速编写结构清晰,代码格式优美的PHP程序.    <br />&#160; 3: 熟练掌握MySQL的操作和常用优化.    <br />&#160; 4: 熟悉程序性能的出现瓶颈的常见原因,并能在实际编写过程中避免出现性能瓶颈.    <br />&#160; 5: 能够使用某些框架/类库加速项目开发进度.    <br />&#160; 6: 能够胜任大部分服务器维护工作.    <br />&#160; 技术要求:    <br />&#160; 1: 服务器运行系统:    <br />&#160; a: linux:    <br />&#160; I: 熟悉操作一种版本linux,并能对此版本的linux进行一些调整优化    <br />&#160; II: 能够进行不停机维护升级.    <br />&#160; III: 能够熟练使用Linux命令行下操作.    <br />&#160; IV: 能够对MySQL和Apache进行优化以提升网站性能.    <br />&#160; V: 能够配置小型服务器集群(双服务器或三服务器).    <br />&#160; VI: 能够进行Linux系统安全配置、Iptables、syslog日志管理    <br />&#160; 2 web页面技术及相关:    <br />&#160; 到中级程序员,一般公司都有专门的美工和前台程序员配合工作.故页面制作技术要求同初级程序员.    <br />&#160; I: 熟悉常见的通信标准.可以根据手册编写出符合通信标准的程序.</p>
<p>&#160; 3 MySQL技术   <br />&#160; I: 熟练掌握SQL语句.    <br />&#160; II: 熟练掌握MySQL的操作.包括安全、访问控制和权限、备份和恢复,复制、导入和导出记录.    <br />&#160; III: 熟练掌握 phpMyAdmin或任意一种MySQL管理维护工具.    <br />&#160; IV: 知道MySQL性能瓶颈的原因及解决方法.并能实际解决.    <br />&#160; 4 PHP技术    <br />&#160; I: 熟练掌握PHP语法,常用函数.    <br />&#160; II: 熟悉PHP的面向对象编程.并能实际使用面向对象思想进行程序.    <br />&#160; III: 熟悉php面向对象的特性.能够根据实际运行环境选择开发方法.    <br />&#160; IV: 熟悉PHP常用库.能够使用常用的php库进行项目开发.    <br />&#160; V: 拥有良好的编码格式习惯,可以规范的进行代码编写.    <br />&#160; 5 项目相关    <br />&#160; I: 实际完成过PHP项目.或全程参与过php网站开发与建设.    <br />&#160; II: 能够较为快速的进行项目开发.    <br />&#160; III: 有自己的代码库.可以在项目中进行复用    <br />&#160; IV: 形成了良好的编码习惯,编写的程序代码清晰,注释清楚.    <br />&#160; V: 能够对项目中的难点与新技术进行攻关.</p>
<p>&#160; e: PHP 高級程序员 (Senior PHP Coder)   <br />&#160; 定义: 正在以PHP程序为主要工作,建设过多个PHP项目,正在建设或维护一个或几个使用PHP技术实现的网站/程序的人,有多年PHP经验,有自己的代码库和快速开发工具的人是PHP 高级程序员.    <br />&#160; 描述: 这些人已经以PHP为主要谋生手段,他们的分布以加入PHP 程序员行列5年以上的人为主.高级程序员是PHP项目的核心力量.    <br />&#160; 特征:    <br />&#160; 1: 能熟练维护/操作/优化linux.    <br />&#160; 2: 快速编写结构清晰,代码格式优美的PHP程序.    <br />&#160; 3: 熟练掌握MySQL的操作/优化和多数据库.    <br />&#160; 4: 能够快速查出程序性能的出现瓶颈的原因,并能根据实际情况进行调整.    <br />&#160; 5: 能够使用框架/类库加速项目开发进度.    <br />&#160; 6: 有自己的代码库.    <br />&#160; 7: 能够胜任大部分服务器维护工作.    <br />&#160; 技术要求:    <br />&#160; 1: 服务器运行系统:    <br />&#160; a: linux:    <br />&#160; I: 熟悉操作一种版本linux,并能对此版本的linux进行一些调整优化    <br />&#160; II: 能够进行不停机维护升级.    <br />&#160; III: 能够熟练使用Linux命令行下操作.    <br />&#160; IV: 能够对MySQL和Apache进行优化以提升网站性能.    <br />&#160; V: 能够配置和优化服务器集群.    <br />&#160; VI: 能够进行Linux系统安全配置、Iptables、syslog日志管理    <br />&#160; 2 MySQL技术    <br />&#160; I: 精通SQL语句.    <br />&#160; II: 熟练掌握MySQL的操作.    <br />&#160; III: 熟练掌握 phpMyAdmin或任意一种MySQL管理维护工具.    <br />&#160; IV: 能够根据实际运行情况对数据库瓶颈进行调整,并适时改变开发方法.    <br />&#160; 4 PHP技术    <br />&#160; I: 精通PHP语法,常用函数.并有自己专注的方向.    <br />&#160; II: 熟练使用PHP的面向对象编程.并能实际使用面向对象思想进行程序.</p>
<p>III: 熟悉php面向对象的特性.能够根据实际运行环境选择开发方法.   <br />&#160; IV: 实际使用工厂化开发等开发方法进行项目开发.能够使用PHP的特性提升开发速度和程序运行速度.    <br />&#160; V: 有自己的代码库,有自己熟悉兵精通的某些共用类库.    <br />&#160; VI: 拥有良好的编码格式习惯,可以规范的进行代码编写.    <br />&#160; 5 项目相关    <br />&#160; I: 实际完成过多个不同方面的PHP项目.    <br />&#160; II: 能够快速的进行项目开发.    <br />&#160; III: 有自己的代码库.可以在项目中使用代码库进行快速开发.    <br />&#160; IV: 形成了良好的编码习惯,编写的程序代码清晰,注释清楚.    <br />&#160; V: 能够领导程序员对项目中的难点与新技术进行攻关.    <br />&#160; VI: 熟悉软件工程,能够根据实际情况选用适当的开发模式.    <br />&#160; f: PHP 工程师 (PHP Programmar)    <br />&#160; 定义: 正在以PHP程序为主要工作,并正在进行新产品的研发.可以同时使用C+/perl等辅助提高PHP程序性能的人是PHP工程师.    <br />&#160; 描述: PHP工程师是.    <br />&#160; 特征:    <br />&#160; 1: 精通一种或多种linux.    <br />&#160; 2: 快速编写结构清晰,代码格式优美的PHP程序.    <br />&#160; 3: 能够进行框架级通用程序的研发.    <br />&#160; 4: 能够在程序开发初期就通过项目规划避免未来可能出现的性能瓶颈.    <br />&#160; 5: 能够使用框架/类库    <br />加速项目开发进度.    <br />&#160; 6: 有自己的代码库.    <br />&#160; 7: 能够胜任大部分服务器和部分服务器集群优化工作.    <br />&#160; 技术要求我就不说了.具体到PHP中级程序员之后,PHP程序员就开始选择发展方向进行分化了.能够到这一步的人,基本都对自己的职业规划有清晰的认识.目前国内此类人才奇少.</p>
<p>&#160; 关于其他:   <br />&#160; 1 PHP程序员从中级程序员阶段就开始分化,具体方向根据公司性质,工作条件,自己的兴趣等不一而同.因此需要擅长的详细技能也不太相同</p>
<p>&#160;&#160; 例如: 公司使用 joomla 构建网站, 这就要求程序员必须精通joomla. 如果公司使用自研CMS+discuz构建网站,这就要求程序员能够熟练进行DISCUZ的二次开发.强行要求程序员精通这精通那,意义不大.到高级程序员开始.PHP程序员由于自己的职业经历.肯定会有自己的专攻方向,有人擅长大负载下程序开发优化,有人擅长项目快速开发.到这个阶段,如果PHP程序员还需要看这篇文章规划自己的职业生涯.那么请自己列出自己擅长的PHP技术.并选择一种最擅长的技术专攻.   <br />&#160; 2 关于coder和programmar. 字面上理解第一个是编码员,第二个是程序员.实际因为国内名词的混乱.第一个大多以程序员称呼,第二个目前</p>
<p>大多处于项目核心领导层面.故本文暂以工程师称呼.   <br />&#160; coder 是进行少量创新的,大量重复工作的人.    <br />&#160; programmar 是进行新技术摸索开发,并实际领导/带领大中型项目开发的人.</p>
<p>&#160; 3 关于 C++ . PHP初期的语法(php3/4时代)和C几乎一样.我当初就是看一下午PHP速成+php手册入的门.但到一定深度之后.有些PHP的特性需要实际阅读PHP源码才能理解(相关文档不全或者不好找到).有些实际项目功能使用C++开发远比PHP效率高.比如我现在做的项目需要爬虫持续海量抓取,当带宽足够的情况时,纯使用PHP实现效率不高.所以必须使用C++. 所以C++到需要用的时候自然而然的就要用了.不过如果有C/C++的基础,学习PHP要轻松很多.</p>
<p>&#160; 4 关于面向对象.面向对象还是很帅的,小型工程上使用意义不大,大中型工程可以极大的提升开发效率.在php4的时代对面向对象基本没什么要求,但是现在需要完整掌握面向对象.</p>
<p>&#160; 5 关于JAVA/Delphi 他们和php有关么? 我孤陋寡闻.请牛人指教.谢谢</p>
<p>&#160; 6 关于软件工程. 软件工程是一个实际使用中才能学懂的学科.我才疏学浅,在大学的时候楞没学懂.等实际领导项目了.才慢慢的明白其中的含义与奥妙.   <br />&#160; 8 关于开发模式. 开发模式的好坏直接关系这项目开发的速度与项目的质量.初期死抠模式意义不大.建议有一定积累了再说.</p>
<p>&#160; 9 关于名气. 嗯&#8230;怎么说呢?高端PHP圈子很小,也就那么些人.水平到了,自然就认识那些人了.</p>
<p>&#160; 10 关于第三方库,初期学习掌握一些,比如smarty.到一定阶段需要决定到底是精通第三方库还是使用自行积累开发的库.总的来说,由于第三方库大多是外国人开发,所以国内想要时刻紧跟比较被动,phpBB中文的没落便是一例.如果使用自行积累开发的库,难度较大,要注意通用性和可扩展性.</p>
<p>&#160; 11 关于英文. 这个是废话.最低要求是流畅阅读英文文档.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huafei117.com/2010/03/01/%e8%bd%acphper%e6%b0%b4%e5%b9%b3%e5%88%86%e6%ae%b5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[转载]使用 jQuery 和 PHP 构建一个受 Ajax 驱动的 Web 页面</title>
		<link>http://www.huafei117.com/2010/02/28/%e8%bd%ac%e8%bd%bd%e4%bd%bf%e7%94%a8-jquery-%e5%92%8c-php-%e6%9e%84%e5%bb%ba%e4%b8%80%e4%b8%aa%e5%8f%97-ajax-%e9%a9%b1%e5%8a%a8%e7%9a%84-web-%e9%a1%b5%e9%9d%a2/</link>
		<comments>http://www.huafei117.com/2010/02/28/%e8%bd%ac%e8%bd%bd%e4%bd%bf%e7%94%a8-jquery-%e5%92%8c-php-%e6%9e%84%e5%bb%ba%e4%b8%80%e4%b8%aa%e5%8f%97-ajax-%e9%a9%b1%e5%8a%a8%e7%9a%84-web-%e9%a1%b5%e9%9d%a2/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 15:15:58 +0000</pubDate>
		<dc:creator>华斐</dc:creator>
				<category><![CDATA[PHP&MYSQL]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.huafei117.com/132.htm</guid>
		<description><![CDATA[一个下午的时间就耗费在这个上了，在PHPCHINA看的专题《使用 jQuery 和 PHP 构建一个受 Ajax 驱动的 Web 页面》，自己抄代码运行了几次终于能成功了，原来这些jQuery、Ajax等新技术也不算很难懂的！ 创建一个简单的应用程序:一个电话本 有了 jQuery 的基本知识之后，我们就可以开始用 PHP 和 MySQL 构建一个简单的电话本应用程序了。这个应用程序包含三个部分: 一个 MySQL 表，用来保存人名和电话号码 具有搜索表单的 index.php 文件 用来查询数据库表的 find.php 页面 我们将依次构建这些元素。 创建数据库表 在 MySQL 内创建数据库表可能是最简单的部分。我们希望此应用程序是一个包含有最少量信息的表 — 比如，一个 ID（表的键）、一个名字字段以及一个电话号码字段。最后这两个字段可以是字母数字，所以将使用 varchar() 函数。我们将创建 ID 字段作为一个 autoincrement primary key。将此表称为目录 并使用如下的 Structured Query Language (SQL) 代码来创建它: 清单 2. 使用 SQL 创建目录表 CREATE TABLE `directory` [...]]]></description>
			<content:encoded><![CDATA[<p>一个下午的时间就耗费在这个上了，在PHPCHINA看的专题《<a href="http://www.phpchina.com/index.php?action-viewnews-itemid-35556" target="_blank">使用 jQuery 和 PHP 构建一个受 Ajax 驱动的 Web 页面</a>》，自己抄代码运行了几次终于能成功了，原来这些jQuery、Ajax等新技术也不算很难懂的！</p>
<p>创建一个简单的应用程序:一个电话本</p>
<p>有了 jQuery 的基本知识之后，我们就可以开始用 PHP 和 MySQL 构建一个简单的电话本应用程序了。这个应用程序包含三个部分:</p>
<ul>
<li>一个 MySQL 表，用来保存人名和电话号码 </li>
<li>具有搜索表单的 index.php 文件 </li>
<li>用来查询数据库表的 find.php 页面 </li>
</ul>
<p>我们将依次构建这些元素。</p>
<p><a name="databasetable"><strong>创建数据库表</strong></a></p>
<p>在 MySQL 内创建数据库表可能是最简单的部分。我们希望此应用程序是一个包含有最少量信息的表 — 比如，一个 ID（表的键）、一个名字字段以及一个电话号码字段。最后这两个字段可以是字母数字，所以将使用 <code>varchar()</code> 函数。我们将创建 ID 字段作为一个 <code>autoincrement primary key</code>。将此表称为<i>目录</i> 并使用如下的 Structured Query Language (SQL) 代码来创建它:</p>
<p> <span id="more-132"></span>
<p><a name="list2"><b>清单 2. 使用 SQL 创建目录表</b></a></p>
<pre>
CREATE TABLE `directory` (
 `id` INT NOT NULL AUTO_INCREMENT ,
 `name` VARCHAR( 64 ) NOT NULL ,
 `phone` VARCHAR( 16 ) NOT NULL ,
 PRIMARY KEY ( `id` )
) TYPE = MYISAM ;</pre>
<p>正如您所见，这里没有什么复杂的。实际上，之后您将有大量机会自己更新这个应用程序。扩展此应用程序的一种方式是添加一个关键字或地址字段，而二者均能让您进一步精炼搜索。不过，现在，我们还是先从简单的开始吧。</p>
<p>创建了该表之后，需要填充它。可以使用 phpMyAdmin 或命令行来输入一个名字和电话号码。也可以使用如下的 SQL 指令集:</p>
<p><a name="list3"><b>清单 3. 使用 SQL 填充此表</b></a></p>
<pre>
insert into `directory` (name,phone) values ('Tom Smith', '512-555-0111');
insert into `directory` (name,phone) values ('Bill Smith', '512-555-0112');
insert into `directory` (name,phone) values ('John Smith', '512-555-0113');
insert into `directory` (name,phone) values ('Jane Smith', '512-555-0114');
insert into `directory` (name,phone) values ('Sara Smith', '512-555-0115');</pre>
<p>输入了这些值之后，如果从命令行的目录操作运行一个 <code>select *</code> 或单击 phpMyAdmin 内的 <b>Browse</b> ，请确保能够获得一个记录列表。</p>
<p><a name="createindexphp"><strong>创建 index.php 文件</strong></a></p>
<p>接下来，为应用程序创建一个简单的主页。此页面是一个 PHP 文件，称为 index.php，但此时它包含最多的仍是 HTML 代码。当完成了 find.php 文件后（下一步），我们还会返回来完成这一代码块。</p>
<p>此刻，所需做的就是创建一个包含表单的骨架 HTML 文件。表单内的每个元素均包含一个惟一的 ID，因为我们想要能够使用 jQuery 标识每一块。</p>
<p><a name="list4"><b>清单 4. 包含表单的 HTML 文件</b></a></p>
<pre>
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Welcome!&lt;/title&gt;
&lt;/head&gt; 

&lt;body&gt;
&lt;h1&gt;Search our Phone Directory&lt;/h1&gt;
    &lt;form id=&quot;searchform&quot; method=&quot;post&quot;&gt;
&lt;div&gt;
        &lt;label for=&quot;search_term&quot;&gt;Search name/phone&lt;/label&gt;
        &lt;input type=&quot;text&quot; name=&quot;search_term&quot; id=&quot;search_term&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;search&quot; id=&quot;search_button&quot; /&gt;
&lt;/div&gt;
    &lt;/form&gt;
    &lt;div id=&quot;search_results&quot;&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt; </pre>
<p>上述代码中有两点应该会立即引起您的注意。其一，没有动作与此表单相关联。这没关系：请记住，此表单将不会遵循传统的 “单击、等待、查看” 的同步模式。相反，我们将会添加能够监视 <code>search_term</code> 字段内的用户动作的功能。</p>
<p>应该注意到的第二点是 <code>search_results</code> DOM 元素 — 表单下面的空白元素。这个 DOM 元素将会包含从搜索中获得的所有响应。在对此进行深入研究之前，让我们先来创建 find.php 页面。</p>
<p><a name="createfindphp"><strong>创建 find.php 文件</strong></a></p>
<p>find.php 文件是所有操作发生的地方。在此文件内，应用程序连接到数据库并针对此目录表运行查询。</p>
<p>find.php 文件的第一部分包含连接信息。出于本文的目的考虑，我将该信息嵌入到了此文件。对于大多数开发人员而言，此信息将会处于一个附带的或必需的文件内，或是作为一个更大的框架的一部分。</p>
<p><a name="list5"><b>清单 5. 创建 find.php 文件</b></a></p>
<pre>


&lt;?php
define(HOST, &quot;your.host.here&quot;);
define(USER, &quot;your-user-name&quot;);
define(PW, &quot;your-password&quot;);
define(DB, &quot;your-db-name&quot;);

$connect = mysql_connect(HOST,USER,PW)
or die('Could not connect to mysql server.' );

mysql_select_db(DB, $connect)
or die('Could not select database.');
</pre>
<p>接下来，将会从此 index.php 文件内的表单获得一个搜索词。对该搜索词进行一些简单处理，然后将该值插入到数据库内。我选择使用 <code>strip_tags()</code> 和 <code>substr()</code> 函数来删除搜索词内的所有 HTML 标记并对之进行简化。进行这类预处理不失为一个好的做法 — 不能百分之百相信用户的输入。</p>
<p>实际上，当具有了一个清晰的搜索词后，就可以通过 <code>mysql_escape_string()</code> 运行它，这可进一步消除可能会破坏数据库的其他陷阱（比如，单引号）。</p>
<pre>$term = strip_tags(substr($_POST['search_term'],0, 100));
$term = mysql_escape_string($term); </pre>
<p>现在，构建 SQL 语句。我们希望从此目录表能够检索到匹配搜索词的所有名字和电话号码。使用 <code>LIKE</code> 让搜索词能匹配名字和电话这两个字段，然后使用 <code>mysql_query()</code> 运行此查询。</p>
<p><a name="list6"><b>清单 6. 构建 SQL 语句</b></a></p>
<pre>
$sql = &quot;select name,phone
from directory
where name like '%$term%'
or phone like '%$term%'
order by name asc&quot;;

$result = mysql_query($sql);</pre>
<p>运行了此查询后，可以打印结果。初始化一个 <code>$string</code> 变量来保存结果，然后使用 <code>mysql_num_rows()</code> 检查是否得到了任何结果。如果没有获得针对此搜索词的结果，可以将 <code>$string</code> 设置为等于 “No matches!”。如果的确获得了结果，可打印结果集内的每个名字和电话号码。在过程的末尾，使用 <code>echo</code> 命令打印整个字符串：</p>
<p><a name="list7"><b>清单 7. 使用 <code>echo</code> 命令打印字符串</b></a></p>
<pre>
$string = '';

if (mysql_num_rows($result) &gt; 0){
  while($row = mysql_fetch_object($result)){
    $string .= &quot;&lt;b&gt;&quot;.$row-&gt;name.&quot;&lt;/b&gt; - &quot;;
    $string .= $row-&gt;phone.&quot;&lt;/a&gt;&quot;;
    $string .= &quot;&lt;br/&gt;\n&quot;;
  }

}else{
  $string = &quot;No matches!&quot;;
} 

echo $string;
?&gt;</pre>
<p>当然，这个 PHP 功能本身就十分有用，但是现在，这一点没有突出体现出来。需要能够为此脚本提供一个搜索词。在下一节，我们将实现这一目的。</p>
<p><a name="addjquery"><strong>向 index.php 添加 jQuery</strong></a></p>
<p>至此，我们得到的是一对普通的 PHP 页面和一个简单的 MySQL 表。当添加了 jQuery 后，这个普通的应用程序就会变成一个新颖的、受 Ajax 驱动的应用程序，它将更类似于 Mac OS X 上的 Spotlight 或 Google Desktop Search 这样的桌面搜索应用程序。</p>
<p>现在，打开 index.php 文件并确保添加了对最新下载的 jquery.js 文件的调用。</p>
<pre>&lt;script src=&quot;./jquery.js&quot;&gt;&lt;/script&gt;</pre>
<p>接下来，创建一个简单的函数来阻止搜索表单表现得像典型的表单那样。（使用 <code>preventDefault()</code> 函数实现此目的）。将所有 <b>Submit</b> 按钮和 key-up 事件（即在通过键盘键入字符时发生的事件）重新指向到一个将要创建的新函数，称为 <code>ajax_search()</code>。</p>
<p><a name="list7"><b>清单 8. 创建函数以阻止搜索表单表现得像典型的表单那样</b></a></p>
<pre>
&lt;script type='text/javascript'&gt;
$(document).ready(function(){
$(&quot;#search_results&quot;).slideUp();
    $(&quot;#search_button&quot;).click(function(e){
        e.preventDefault();
        ajax_search();
    });
    $(&quot;#search_term&quot;).keyup(function(e){
        e.preventDefault();
        ajax_search();
    }); 

}); </pre>
<p>您注意到我们是如何使用 <code>slideUp()</code> 函数来暂时隐藏 <code>search_results</code> DOM 元素的吗？以及又是如何使用 <code>$()</code> 函数来按名字引用该 DOM 元素？如果您十分熟悉 CSS，那么 jQuery 方式就十分直观和自然了。比如，假设有一个具有惟一 ID <code>search_results</code> 的 DOM 元素，您就可以使用 <code>$(&quot;#search_results&quot;)</code> 来引用它。就这么简单。</p>
<p>另外还注意到，任何时候，任何人单击了 <b>Search</b> 或在 <code>search_term</code> 字段键入一个字符，一个匿名函数都会阻止默认行为的发生并会将 应用程序流程重新指向到 <code>ajax_search()</code> 函数，该函数我们接下来将会构建。</p>
<p><code>ajax_search()</code> 函数十分简单。我们想要显示 DOM 元素 <code>search_results</code>（之前已经将其隐藏）、获得 <code>search_term</code> 输入字段的值、将该值传递给一个异步运行 find.php 文件的函数（<code>$.post()</code>），然后等待响应。当响应到来后（还记得么，我们已经确保了该 find.php 将会返回某种响应，即便在没有匹配的情况下也是如此），jQuery 用该响应填充 <code>search_results</code> DOM 元素。</p>
<p><a name="list9"><b>清单 9. <code>ajax_search()</code> 函数</b></a></p>
<pre>
function ajax_search(){
  $(&quot;#search_results&quot;).show();
  var search_val=$(&quot;#search_term&quot;).val();
  $.post(&quot;./find.php&quot;, {search_term : search_val}, function(data){
   if (data.length&gt;0){
     $(&quot;#search_results&quot;).html(data);
   }
  })
}
&lt;/script&gt; </pre>
<p>所有系统都就绪后，就可以键入一个请求并查看此搜索引擎的实际工作情况了，每个 key-up 事件都会处理记录。它在单击 <b>Submit</b> 时也能工作。比如，在图 1 中，如果在搜索字段内键入字母 <code>a</code>，应用程序就会返回 Jane 和 Sara Smith 这两条记录，因为这两个名字中都包含此字母。</p>
<p><a name="fig1"><b>图 1. 运行中的受 Ajax 驱动的搜索</b></a></p>
<p><a href="http://www.phpchina.com/batch.download.php?aid=8240"><img border="0" src="http://www.phpchina.com/attachments/2009/12/1_2009122410320015d2u.jpg" /></a></p>
<p><a name="conclusion">结束语</a></p>
<p>当然，针对此应用程序还有很多工作可做。比如，可以添加一个关键字字段，然后允许按关键字搜索。或者，可以让每个人的记录包含针对其所擅长的不同领域的标记或关键字。此后，如果您在项目中遇到问题，就能够通过资源查找来找到能够帮助您的人。此外，还可以添加一个电子邮件字段、一个生日字段 — 无论什么都可以 — 然后扩展搜索参数。</p>
<p>关键的一点是此应用程序的 jQuery 部分并不关心在后端发生的事情。它所知道的就是将一个搜索词传递给一个称为 <i>find.php</i> 的文件。find.php 文件并不知道也不关心它从一个 jQuery 函数接收指令。它所关注的是只要搜索词来自于一个正常的表单提交过程，它就使用该数据来完成查询，然后返回匹配该搜索词的那些记录。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huafei117.com/2010/02/28/%e8%bd%ac%e8%bd%bd%e4%bd%bf%e7%94%a8-jquery-%e5%92%8c-php-%e6%9e%84%e5%bb%ba%e4%b8%80%e4%b8%aa%e5%8f%97-ajax-%e9%a9%b1%e5%8a%a8%e7%9a%84-web-%e9%a1%b5%e9%9d%a2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

