分类:
2008-09-10 06:42:20
今天在学校里做了一个系统,好吧,让我来说的简单一点。假设你的公司需要你开发一个小系统,用来做市场调查,或者用来让学生在期末给老师测评打分。我们需要一个一劳永逸的程序,能够动态的生成调查表(Survey),能动态的管理,随时随地的修改调查问题,统计调查结果。这样看似平常的功能其实存在着复杂的逻辑关系。要实现起来其实还是蛮费事的。我不可能面面俱到,说几个核心的问题吧。
(一):作为管理员,你需要生成一个在线调查表,来看看如何实现:
第一步:采集调查表基本的属性,如图:
在这里,我们输入包括调查名称,包含多少道调查题目等基本属性,我想我不用把这个页面代码贴出来了吧?:)提交后数据被插入管理“调查项目”的数据库表格。
第二步:创建调查题目,如图:
我们看到了,刚才插入的信息在上面显示了出来。现在要做的就是要生成一个可以定制的调查题目管理页面。这是什么东西呢?很简单,看上图,有三个子项目: amount of question category --> 有多少问题的分类,比如:今天的事情,昨天的事情?
amount of question in each Category ----> 每个分类下具体有多少题目,比如:“今天的事情”分类下有2道题,吃饭了么?睡觉了么?
amount of option ---->回答的选项:比如,有,没有
这就是问题的核心了。我们如何通过这几个参数来生成相应的表单共管理员输入问题呢?甚至要自己定义分类的名字?这一步其实很简单,看如下代码:
session_start(); //发起一个会话,为后来跟进的一个数据插入页面进行防刷新准备
include '../include/config.php';
database_connection();
/*这里采集我们刚才提到的三个参数*/
$option_amount=$_POST['option_amount'];
$question_amount=$_POST['question_amount'];
$question_category=$_POST['question_category'];
$_SESSION['insert']="yes"; //预定义一个会话变量
$survey_id=$_GET['surveyid'];
echo "survey_id=".$survey_id;
?>
Add questions in the following Sheet:
我们来看一下执行结果吧。假设我们需要2个问题分类,每个分类要有2道题,每个题都有4个选项:
和奇妙,对吧。这个时候,麻烦来了。这是一个逻辑循环的结果,当管理员输入问题后,我们如果把这个结果插入数据库呢?我想起来一句话:“我们用循环开始,就要用循环来结束。”很有哲理对么?其实不止这样,我们还真要用循环来插入数据库,一个更炫目的循环。
session_start();
include '../include/config.php';
database_connection();
$question_amount=$_GET['amount'];
$option=$_GET['option'];
$cate=$_GET['cate'];
$survey_id=$_GET['survey_id'];
if($_SESSION['insert']=="no")
{ echo "Don't do it!";}
elseif($_SESSION['insert']=="yes")
{
//请仔细观察这个循环体,要细致,不要认为自己一下就看明白了。要知道,这个循环我写了3次才成功,真正的把数据按照逻辑插入了数据库
for($a=1;$a<=$cate;$a++)
{
$category=$_POST['category_'.$a];
$sql_add_category="INSERT INTO `survey_category` ( `id` , `category_name` , `survey_id`)
VALUES (NULL , '$category', '$survey_id')";
$_SESSION['insert']="no";
$result_add_category=mysql_query($sql_add_category);
if(!result_add_survey)
{ echo "System Error.".mysql_error();}
for($i=1;$i<=$question_amount; $i++)
{
$question=$_POST['question_'.$a.'_'.$i];
$sql_add_survey="INSERT INTO `survey` ( `id` , `survey_id` , `category` , `question_id` , `question` , `option` )
VALUES (NULL , '$survey_id', '$category', '$i', '$question', '$option')";
$result_add_survey=mysql_query($sql_add_survey);
if(!result_add_survey)
{ echo "System Error.".mysql_error();}
}
}
}
$sql_feedback_category="select * from survey_category where survey_id='$survey_id'";
$result_feedback_category=mysql_query($sql_feedback_category);
if(!result_feedback_category)
{echo "Sorry, No Date found!".mysql_error();}
else
{
for($t=1;$t<=$row=mysql_fetch_array($result_feedback_category);$t++)
{
$category_fb=$row['category_name'];
echo $category_fb."
";?>
for($option_count=1;$option_count<=$option_value;$option_count++) { ?> |
Survey has created successfully! You can find it in the mainpage.";
}
?>
看看最后的效果图吧: