主要有2个问题,
第一个是,怎么能输入一段时间就能让好几个字段都取到值
第二个是,怎么能跨年度让几条记录的字段都取到值。

解决方案 »

  1.   

    不大明白楼主的意思不过你可以把数据读出来了接下来 只要对你的数据进行你要的操作就可以了啊
      

  2.   

    你这个表结构不好!合理的结构应为“年”,“月”“值 ”三个字段就行了或者就是一个时间字段加一个值就行了!
    至于怎么读,高手们给解决一下?
      

  3.   

    我觉得标的结构还好了。当然拆分开检索也更加容易。
    但是拆分开也有自己的坏处。比如说,出现数据跳跃,就是当中某个月的数据没有。一样需要显示的时候,添加多余的逻辑。假如不拆分开,LZ抽取的时候,只要用上年份这个条件就可以了。画面上控制显示。比如说,设置的条件是2007-2开始的,2007-1的数据,就不要显示。这个可以根据你的输入条件来作判断。
      

  4.   

    换下表结构,一个月一个月的存就没这个问题了
    而且,思路会清晰的多
      

  5.   

    确实不好写,没时间都写出来,给出一点我的思路。1.根据提交的时间段做字符分割得到类似:
      $from_year = 2007;
      $from_month = 1;
      $to_year = 2008;
      $to_month = 7;2.用二维数组记录各年各月的状态  if( $from_year == $to_year )
      {
          //$from_year作为数组索引
          for( $i=i;$i<=12;$i++ )
          {
              if( $i>= $from_month && $i<=$to_month )
              {
                 //把“1”放入数组
              }
              else
              {
                //把“0”放入数组
              }
          }
      }
      else
      { 
          for( $i = $from_year ; $i<=$to_year ;$i++ )
          {
              if( $i == $from_year )
              { 
                 //如上,根据起始月份,把该年数组起始月份到12月份置“1”
              }
              else if( $i == $to_year  )
              {
                 //根据最终月份,把该年数组从1月份到最终月份置“1”
              }
             else
             {
                 //该数组所有月份置“1”
             }
          }
      }
      
      //程序重点在这里需要仔细考量  最终构造出如下数组:
      array
      (
        array[2007]={1,1,1,1,1,1,1,1,1,1,1,1};
        array[2008]={1,1,1,1,1,1,1,0,0,0,0,0};  )3. 插入数据  for( $i=$from_year;$i<=$to_year;$++ )
      {
         insert into table (........) values (  数组的各个变量           )
      }结束。程序的关键在于第二步骤,数组的构造,细节自己考量吧,希望有帮助
      

  6.   

    解决了,用另一种方法,还是谢谢大家,散分.
      

  7.   

    如果楼主能讲一下解决的方法就更好了,楼主的例子是个经常用的到的例子!