小魔女 发表于 2015-2-4 00:18:02

PHP编程:PHP中在数据库中保留Checkbox数据(1)

说说这一个月左右的学习情况和心得吧!我个人认为,既然决定了去做一件事,那就要以认真的态度去对待!既然决定来学习了,那不管当初是抱着怎样的心态来到这个培训班的,都要让自己认真的投入到学习中。数据|数据库   引见

  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(20) );

如今咱们到场妙技:

SQL> INSERT INTO const_skills(id, value) VALUES (1, "PHP");
SQL> INSERT INTO const_skills(id, value) VALUES (2, "MySQL");
SQL> INSERT INTO const_skills(id, value) VALUES (3, "Zope");
SQL> INSERT INTO const_skills(id, value) VALUES (4, "Perl");
SQL> INSERT INTO const_skills(id, value) VALUES (5, "Javascript");
SQL> INSERT INTO const_skills(id, value) VALUES (6, "JSP");

你的 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("const_skills");

/* 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($table_name) {

/* make an array */
$arr = array();

/* construct the query */
$query = "SELECT * FROM $table_name";

/* execute the query */
$qid = mysql_query($query);

/* each row in the result set will be packaged as
an object and put in an array */
while($row= mysql_fetch_object($qid)) {
array_push($arr, $row);
}

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 (count($arr) % $num != 0) {
$closingTR = true;
}

$i = 1;
if (isset($checked)) {
/* if we passed in an array of the checkboxes we want
to be displayed as checked */
foreach ($arr as $ele) {
$str .= "< td >< input type="checkbox" name="$name" value="$ele- >id"";
foreach ($checked as $entry) {
if ($entry == $ele- >value) {
$str .= "checked";
continue;
}
}
$str .= " >";
$str .= "$ele- >value";

if ($i % $num == 0) {
$str .= "< /tr >n< tr >";
} else {
$str .= "< /td >n";
}
$i++;
}

} else {
/* we just want to print the checkboxes. none will have checks */
foreach ($arr as $ele) {
$str .= "< td >< input type="checkbox" name="$name" value="$ele- >id" >";
$str .= "$ele- >value";

if ($i % $num == 0) {
$str .= "< /tr >n< tr >";
} else {
$str .= "< /td >n";
}
$i++;
}

}

/* tack on a closing tr tag if necessary */
if ($closingTR == true) {
$str .= "< /tr >< /table >n";
} else {
$str .= "< /table >n";
}

return $str;
}


? >
把例子全部敲进去试验,完成一遍以后就会有心得了,因为你会发现为啥我的程序和书上的一模一样就是结果不正确。新手学习的时候必须承认,不容易,因为我也是过来人,你会发现原来有那么多常用的语句,函数都要记。

海妖 发表于 2015-2-4 10:52:24

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

兰色精灵 发表于 2015-2-7 01:00:48

爱上php,他也会爱上你。

柔情似水 发表于 2015-2-19 05:00:30

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

若天明 发表于 2015-2-21 18:23:16

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

蒙在股里 发表于 2015-3-3 11:03:26

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

简单生活 发表于 2015-3-4 23:25:04

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

谁可相欹 发表于 2015-3-17 01:10:26

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

admin 发表于 2015-3-23 11:35:57

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

再现理想 发表于 2015-3-23 20:54:15

做为1门年轻的语言,php一直很努力。

爱飞 发表于 2015-4-6 23:52:02

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

愤怒的大鸟 发表于 2015-4-7 00:11:11

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

山那边是海 发表于 2015-4-7 23:13:39

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

变相怪杰 发表于 2015-4-10 01:52:14

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

乐观 发表于 2015-4-15 06:51:18

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

飘灵儿 发表于 2015-4-16 16:56:36

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

灵魂腐蚀 发表于 2015-4-18 12:50:00

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

活着的死人 发表于 2015-4-20 00:17:18

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

第二个灵魂 发表于 2015-4-30 09:14:32

实践是检验自己会不会的真理。

分手快乐 发表于 2015-4-30 22:48:35

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
页: [1]
查看完整版本: PHP编程:PHP中在数据库中保留Checkbox数据(1)