仓酷云

标题: PHP网页设计PHP中在数据库中保留Checkbox数据(2) [打印本页]

作者: 谁可相欹    时间: 2015-2-4 00:15
标题: PHP网页设计PHP中在数据库中保留Checkbox数据(2)
也许您在学习PHP的时候只想尽快的开发一个网站,也就会想我做网站,干嘛要学什么网页这些小儿科?不难看出,眼高手低的新手不在少数,这种思想无疑于建造空中楼阁,你不建地基,何来的房顶呢?数据|数据库   这代码长短常复杂的,你很快地就看完了吧。次要的任务有两个函数完成:"get_checkbox_labels" 和 "make_checkbox_html"。个中 "get_checkbox_labels" 查询表const_skills 而且前往一个对象数组,每个对象有一个id值和响应的妙技称号。咱们传送这个数组和其它一些参数给"make_checkbox_html" ,这个函数将前往一个字串,用来生成checkbox的html代码。如今咱们把这个字串拔出html文件来生成咱们需求的包括有各类妙技选择的表单。注重我并没有传送变量 $checked 给"make_checkbox_html",这个参数是一个咱们要显示的checked的对象数组。假如一个用户学会了一项新的妙技,咱们可以供应一个“编纂妙技“页,显示的checkbox框中保留的用户的妙技项应是被事后 checked。

  用这类办法来静态创立一个表单相对用一个固定的html代码来生成妙技checkbox的优点在哪?嗯,也许咱们答应求职者选择一个在咱们的表const_skills华夏先没有的项目,如DHTML,如许,咱们可以将它拔出表const_skills中,然后,求职者来会见咱们的站点,就会发明多了一个DHTML选项。这一切无需调剂html文件。

拔出 lookup_skills

如今咱们已创立了这个表单,上面咱们需求保留这个用户所选的妙技。在make_checkbox_html函数中,咱们用skill[]挪用每个选择项元素,意味着咱们可以以数组元素的模式会见每一个选择项。如许咱们可以拔出把这个选择拔出表lookup_skill中。假如用户选中5个选项,咱们就在lookup_skill中拔出5笔记录。记住在表lookup_skills中每笔记录只要两个字段用户id和妙技id。在我的这个例子站点中,用户可以注册,然后能创立/编纂他们的简介。你能够要用session来保留userid,当他们登录后。但若何办理userid超越了本文的局限。

上面的代码,咱们假定咱们能够会见这个userid用这个变量名$uid,上面就是拔出纪录的函数代码:


/* the function we call to insert.
the $skills argument is the skills array that
is sent to the script when the user hits the submit button
*/
function insert_skills($uid, $skills) {

/* first, we'll delete any entries this user already has
in the table */
purge_lookup("lookup_skills", $uid);

/* now create the sql insert query */
$query = create_checkbox_query($skills, "lookup_skills", $uid);

/* execute the query */
mysql_query($query);
}

/* helper function for insert_skills().
removes all rows in $table with $uid */
function purge_lookup($table, $uid) {
$q = "DELETE FROM $table, WHERE uid = '$uid'";
mysql_query($q);
}

/* helper function for insert_skills().
generates the sctual SQL query */
function create_checkbox_query($arr, $table, $uid) {
$q = "INSERT INTO $table (uid, skill_id) VALUES";

foreach ($arr as $check) {
$q .= " ( $uid , $check )" . ",";
}

/* remove the last comma and return */
return substr($q, 0, -1);
}

?>

  很复杂吧。如今你晓得若何从表const_skill读纪录来静态创立一个表单,也晓得若何保留用户选择的妙技到表lookup_skills中。上面咱们要做甚么?让咱们看一下搜刮吧
搜刮

  当一个雇主来找一个收集开辟人员时,他离开你的搜刮页面,你可以显示一样的一个表单而且答应他选择他想要雇员具有的妙技。你取到了他选中的妙技的数组,然后你可以遍历这个数组,用一个SQL语句找出具有此妙技的求职者,你可以显示这个列表或了局,并答应搜刮者点一个项目显示它的具体信息。上面的这个函数描写了若何创立这个查询语句:


/* builds a query to search for the skills
checked off in the $skills array */

function skill_search($skills) {
if (!empty($skills)) {
$query = "SELECT DISTINCT user.username
FROM user, const_skills, lookup_skills
WHERE lookup_skills.uid = user.id
AND lookup_skills.skill_id = const_skills.id ";

$query .= " AND (";
foreach ($skills as $check) {
$query .= " const_skills.id = $check OR";
}

/* remove the final OR */
$query = substr($query, 0, -2);
$query .= ")";

$count = count($skills);
$query .= " GROUP BY user.username HAVING count(user.username) >= $count";

$query .= ";";
return $query;
}
}

?>

  假如履行了搜刮 PHP 和 Javascript ,这个函数前往这个语句:

SELECT DISTINCT user.username FROM user, const_skills, lookup_skills WHERE lookup_skills.uid = user.id AND lookup_skills.skill_id = const_skills.id AND ( const_skills.id = 3 OR const_skills.id = 5 ) GROUP BY user.username HAVING count(user.username) >= 2;

  这个函数将前往你所选择的项目标逻辑与,这就是说,假如咱们选了PHP 和Javascript 两项,只会前往*同时*具有PHP 和 Javascript两种妙技的求职者的username。假如你想要找具有个中任一个妙技的求职者,你可以用 PHP *OR* Javascript ,假如你想显示不异的纪录,你可以去失落最初的"GROUP BY..." 子句。


总结

  好了,就是如许。checkboxes是一个优异的表单位素,正如本文所议论的。我但愿这有助于你用它们来任务,创立一个数据驱动的网站。

  在学习PHP这六个月里,每看到一个优秀的php脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。
作者: 冷月葬花魂    时间: 2015-2-4 10:14
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 变相怪杰    时间: 2015-2-5 11:55
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 活着的死人    时间: 2015-2-5 15:27
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 再现理想    时间: 2015-2-6 17:32
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 小妖女    时间: 2015-2-9 17:49
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 海妖    时间: 2015-2-27 14:24
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 若天明    时间: 2015-2-28 10:03
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 蒙在股里    时间: 2015-3-9 22:05
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 莫相离    时间: 2015-3-17 02:08
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 第二个灵魂    时间: 2015-3-21 13:16
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 爱飞    时间: 2015-3-26 11:32
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 乐观    时间: 2015-3-27 01:10
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 因胸联盟    时间: 2015-4-5 11:05
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 老尸    时间: 2015-4-10 03:51
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 透明    时间: 2015-4-14 06:45
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 再见西城    时间: 2015-4-14 08:10
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 飘灵儿    时间: 2015-4-16 03:07
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 简单生活    时间: 2015-4-16 19:11
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 愤怒的大鸟    时间: 2015-4-18 20:06
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 若相依    时间: 2015-4-21 07:07
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2