Chinaunix首页 | 论坛 | 博客
  • 博客访问: 757450
  • 博文数量: 26
  • 博客积分: 8255
  • 博客等级: 中将
  • 技术积分: 934
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-06 01:52
文章分类

全部博文(26)

文章存档

2012年(1)

2011年(8)

2010年(10)

2008年(7)

分类:

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:




/*好戏从这里开始,我们以问题的分类为最外层循环,每遇到一个分类就发起一个循环,而循环产生的结果就是一个表格,对!一个分类就是一个表格*/

for($a=1;$a<=$question_category;$a++)
{
echo "

Question Category ".$a.":

";
?>

">








//这里是一个内循环,在分类循环的内部,一个分类会有若干个题目,每一个题目生成一次循环,有7道题,就循环7次,每次循环的结果就是生成这道体的录入窗口
for($i=1;$i<=$question_amount;$i++)
{?>




?>
Question NumberQuestion Area
Question Number :" />


Smaple of Option:







for($n=1;$n<=$option_amount;$n++)
{?>




?>
Option NumberOption Value
Option Number :" value="" style="margin: 0px 0px 0 42">


我们来看一下执行结果吧。假设我们需要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."
";?>
    


          $sql_feedback_survey="select * from survey where category='$category_fb' and survey_id='$survey_id'";
     $result_feedback_survey=mysql_query($sql_feedback_survey);
            for($items=1;$items<=($row_survey=mysql_fetch_array($result_feedback_survey));$items++)
                {
                $question_survey=$row_survey['question'];
                $option_value=$row_survey['option'];
                $option_name_in_ca="option_".$t."_".$items;
                ?>               
               
               
               
               
       
      

                                     for($option_count=1;$option_count<=$option_value;$option_count++)
                         { ?>
                        

                  


echo "

Survey has created successfully! You can find it in the mainpage.";
}
?>

看看最后的效果图吧:

阅读(2380) | 评论(0) | 转发(0) |
0

上一篇:PHP正则表达式应用

下一篇:PHP与Ajax技术

给主人留下些什么吧!~~