PHP中在数据库中保存Checkbox数据_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 { /* 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; } /* helper function for insert_skills().
removes all rows in $table with $uid */ function purge_lookup { $q =
“DELETE FROM $table, WHERE uid = ‘$uid'”; mysql_query; } /* helper
function for insert_skills(). generates the sctual SQL query */
function create_checkbox_query { $q = “INSERT INTO $table VALUES”;
foreach { $q .= ” ” . “,”; } /* remove the last comma and return */
return substr; } ?>
相当轻易吗。今后你明白怎么着从表const_skill读记录来动态创制三个表单,也晓得哪些保存顾客筛选的技术到表lookup_skills中。下边大家要做哪些?让大家看一下索求吧
寻找当一个雇主来找一个互连网开荒人员时,他赶到你的检索页面,你能够显得同大器晚成的一个表单并且同意她筛选她想要雇员具备的技能。你取到了他当选的本领的数组,然后你能够遍历那一个数组,用四个SQL语句找寻具备此本领的求职者,你能够来得那一个列表或结果,并同意找寻者点叁个类型显示它的详细音信。下边包车型客车这些函数描述了何等创造这几个查询语句:
/* builds a query to search for the skills checked off in the $skills
array */ function skill_search { if { $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 { $query .= ”
const_skills.id = $check OR”; } /* remove the final OR */ $query =
substr; $query .= “)”; $count = count; $query .= ” GROUP BY
user.username HAVING count >= $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 >= 2;
这么些函数将回到您所接收的项目标逻辑与,这正是说,就算大家选了PHP
和Javascript 两项,只会回去*同时*富有PHP 和
Javascript三种本事的求职者的username。如若你想要找具备此中任一个技能的求职者,你能够用
PHP *OR* Javascript ,假使您想展现同生机勃勃的笔录,你能够去掉最终的”GROUP
BY…” 子句。 总结好了,便是那般。checkboxes是贰个特出的表单成分,正如本文所商讨的。笔者盼望那有利于你用它们来行事,创立叁个数码驱动的网址。

介绍
checkbox是贰个要命平价的页面表单项,在让客户展开多种选拔的气象下,它以致足以允许客户筛选一切类别大概二个都不选。然而,即便那是多少个万分精良的表单成分,但在大家的干活中,在怎么科学地保留选取项那地点总存在部分易混淆的情形发生。本文将陈说在安份守己好的数据库设计标准的点子下,如何把checkbox选取项准确地保留在数据库中。
必要本文将演说怎么着把选取项准确地保存在客商数据库中的方法。纵然此处满含了平价的PHP代码,但自小编将从数据库设计的观点来表述它们,所以,你能够很有益地选取任何二个数据库和劳务器端脚本语言来兑现。小编只是想提供二个如何是好的方式,让你能应用于您和谐的站点中。假若你想运营这里的源码,你供给设置php、mysql和网络服务器。
例1:招徕约请站点
若是你被须求做叁个招徕约请类的网址,允许求职的软件开辟职员填写他们的手艺,让雇主能访谈这几个站点并依据求职者的本事找到确切的职工。你也领略,一个开辟职员具备的本驾驭多于三个,因而你说了算这样设计你的站点。
每二个求职者将允许访问本站,注册多少个顾客,况且输入他的技艺,Checkbox就派上用处了,你恐怕想作那样的生龙活虎页:
__ PHP __ MySQL __ Zope __ Perl __ Javascript __ JSP
[提交]
每三个求职都得以选用她所持有的技巧。显然对于分裂人来讲那选取项是差异的。一位大概会是PHP和Mysql,其余人或者只是JSP。你将什么保存那一个选拔呢?叁个很当然的主见是针对各类选项建二个字段,那样起初能够健康干活。不过随后你或许会意识,当您想扩大或调节时,麻烦就来了,你可能只可以校正你的表结构。
好的主意应是那般的:
你应该一个客商表包罗客商的登记音讯,如客户名、密码和别的一些你需求的什么内容。若是你一贯运用本文前边给出的源码,你要建二个轻松的表如下:
id username 1 User1 2 User2 3 User3 我们先建贰个表 “const_skills”
用如下的 SQL 语句: SQL> CREATE TABLE const_skills ( id int not null
primary key, value varchar; 今后我们步向技术: SQL> INSERT INTO
const_skills VALUES ; SQL> INSERT INTO const_skills VALUES ;
SQL> INSERT INTO const_skills VALUES ; SQL> INSERT INTO
const_skills VALUES ; SQL> INSERT INTO const_skills VALUES ;
SQL> INSERT INTO const_skills VALUES ; 你的 const_skills
以往应是这么的: id value 1 PHP 2 MySQL 3 Zope 4 Perl 5 Javascript 6 JSP
这几个表只是让客户能够选择相应的技术,以往,再建三个表 lookup_skills
用如下的SQL: SQL> CREATE TABLE lookup_skills ( id int not null
auto_increment primary key, uid int, skill_id int );
这个表lookup_skills的指标是提供从客商表到开拓本领表之间的二个辉映关系。换句话说,它让我们保留开采者和他们某个工夫,如,当求职者完结选择点击提交时,大家将填写那几个表用checkbox中被选定的那么些值。对于每二个选上的本领,大家在此个表中加一条记下,记下客户id及所选择的id。
在我们看这一个插入记录的代码此前,大家先规划一下那几个页面,应有的剧情有三个表单,大家得以查询的数据库何况取checkbox标签从const_skills表中,建那个checkbox表单项。
代码如下: < ?php /* insert code to connect to your database here
*/ /* get the checkbox labels */ $skills = get_checkbox_labels; /*
create the html code for a formatted set of checkboxes */ $html_skills
= make_checkbox_html($skills, 3, 400, “skills[]”); ? > < html
> < body > < br > < form name=”skills” method=”POST”
action=”insertskills.php” > Check off your web development skills:
< ? echo “$html_skills”; ? > < br > < input
type=”submit” value=”Submit” > < /form > < /body > <
/html > < ?php function get_checkbox_labels { /* make an array
*/ $arr = array(); /* construct the query */ $query = “SELECT * FROM
$table_name”; /* execute the query */ $qid = mysql_query; /* each
row in the result set will be packaged as an object and put in an array
*/ while($row= mysql_fetch_object { array_push; } return $arr; } /*
Prints a nicely formatted table of checkbox choices. $arr is an array of
objects that contain the choices $num is the number of elements wide we
display in the table $width is the value of the width parameter to the
table tag $name is the name of the checkbox array $checked is an array
of element names that should be checked */ function
make_checkbox_html($arr, $num, $width, $name, $checked) { /* create
string to hold out html */ $str = “”; /* make it */ $str .= “<
table width=”$width” border=”0″ >n”; $str .= “< tr >n”; /*
determine if we will have to close add a closing tr tag at the end of
our table */ if % $num != 0) { $closingTR = true; } $i = 1; if { /* if
we passed in an array of the checkboxes we want to be displayed as
checked */ foreach { $str .= “< td >< input type=”checkbox”
name=”$name” value=”$ele- >id””; foreach { if ($entry == $ele-
>value) { $str .= “checked”; continue; } } $str .= ” >”; $str .=
“$ele- >value”; if { $str .= “< /tr >n< tr >”; } else {
$str .= “< /td >n”; } $i++; } } else { /* we just want to print
the checkboxes. none will have checks */ foreach { $str .= “< td
>< input type=”checkbox” name=”$name” value=”$ele- >id” >”;
$str .= “$ele- >value”; if { $str .= “< /tr >n< tr >”; }
else { $str .= “< /td >n”; } $i++; } } /* tack on a closing tr
tag if necessary */ if { $str .= “< /tr >< /table >n”; }
else { $str .= “< /table >n”; } return $str; } ? >

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图