首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP数据处理困难

PHP数据处理困难
EN

Stack Overflow用户
提问于 2012-04-25 12:45:47
回答 1查看 242关注 0票数 1

我有以下问题。

我有一个用于保存里程碑的jQuery accordion,在每个里程碑中,我都有一个按钮来向里程碑添加事件。这很好用。我为每个输入指定名称的方式如下所示。

代码语言:javascript
复制
<input type="text" name="milestone_0_name">
<input type="text" name="milestone_0_start_date">
<input type="text" name="milestone_0_end_date">
<input type="text" name="milestone_0_description">
<input type="text" name="milestone_1_name">
<input type="text" name="milestone_1_start_date">
<input type="text" name="milestone_1_end_date">
<input type="text" name="milestone_1_description">
<input type="text" name="milestone_2_name">
<input type="text" name="milestone_2_start_date">
<input type="text" name="milestone_2_end_date">
<input type="text" name="milestone_2_description">
and so on...

例如,之后,当我向milestone_0添加事件时,生成的标记如下所示:

代码语言:javascript
复制
<input type="text" name="milestone_0_events_event_0_event_name">
<input type="text" name="milestone_0_events_event_0_event_start_date">
<input type="text" name="milestone_0_events_event_1_event_name">
<input type="text" name="milestone_0_events_event_1_event_start_date">

我不是$_POST数据处理方面的专家,所以我使用这种方式来了解哪些事件属于某个里程碑。问题是,我用来识别形成里程碑的变量(里程碑的信息和每个事件信息)的函数有一个我似乎找不到的问题。

该函数为:

代码语言:javascript
复制
// Assign all $_POST data to $milestones
$milestones = $_POST;
print_r($milestones);


$milestoneNames = array();
$milestoneSize = array();

$default = "milestone_";
$indexOfMilestone=0;
$ind=0;
$text=$default.$indexOfMilestone;
$indexOfIteration=0;
$actualSize=0;
$change=false;

foreach($milestones as $ms)
{
    $currKey = KeyName($milestones,$indexOfIteration);
    echo $text.'.'.$currKey.'<br />';
    $pos = strripos($currKey, $text);
    if ($pos === false) 
    {
        $milestoneSize[$indexOfMilestone] = $indexOfIteration;
        $indexOfMilestone++;
        $text=$default.$indexOfMilestone;
    }
$indexOfIteration++;
}

print_r($milestoneSize);

对于测试数据,输出为:

代码语言:javascript
复制
    [milestone_0_name] => Milestone 1
    [milestone_0_start_date] => 12-4-25
    [milestone_0_end_date] => 12-4-26
    [milestone_0_description] => abcdefg
    [milestone_0_events_event_0_event_name] => asdg
    [milestone_0_events_event_0_event_start_date] => ff
    [milestone_0_events_event_1_event_name] => fghjk
    [milestone_0_events_event_1_event_start_date] => ff
    [milestone_0_events_event_2_event_name] => zxcv
    [milestone_0_events_event_2_event_start_date] => ff
    [milestone_0_events_event_3_event_name] => bnm,
    [milestone_0_events_event_3_event_start_date] => zz
    [milestone_0_events_event_4_event_name] => qwerty
    [milestone_0_events_event_4_event_start_date] => zz
    [milestone_0_events_event_5_event_name] => uiop
    [milestone_0_events_event_5_event_start_date] => zz
    [milestone_1_name] => Milestone 2
    [milestone_1_start_date] => 12-4-26
    [milestone_1_end_date] => 12-4-27
    [milestone_1_description] => sadg ads asdgasdg adsga sgdsa gsad adsg asdg
    [milestone_1_events_event_0_event_name] => 1234
    [milestone_1_events_event_0_event_start_date] => ff
    [milestone_1_events_event_1_event_name] => 4321
    [milestone_1_events_event_1_event_start_date] => ff
    [milestone_1_events_event_2_event_name] => 6542
    [milestone_1_events_event_2_event_start_date] => ff
)

milestone_0.milestone_0_name
milestone_0.milestone_0_start_date
milestone_0.milestone_0_end_date
milestone_0.milestone_0_description
milestone_0.milestone_0_events_event_0_event_name
milestone_0.milestone_0_events_event_0_event_start_date
milestone_0.milestone_0_events_event_1_event_name
milestone_0.milestone_0_events_event_1_event_start_date
milestone_0.milestone_0_events_event_2_event_name
milestone_0.milestone_0_events_event_2_event_start_date
milestone_0.milestone_0_events_event_3_event_name
milestone_0.milestone_0_events_event_3_event_start_date
milestone_0.milestone_0_events_event_4_event_name
milestone_0.milestone_0_events_event_4_event_start_date
milestone_0.milestone_0_events_event_5_event_name
milestone_0.milestone_0_events_event_5_event_start_date
**milestone_0.milestone_1_name**
milestone_1.milestone_1_start_date
milestone_1.milestone_1_end_date
milestone_1.milestone_1_description
milestone_1.milestone_1_events_event_0_event_name
milestone_1.milestone_1_events_event_0_event_start_date
milestone_1.milestone_1_events_event_1_event_name
milestone_1.milestone_1_events_event_1_event_start_date
milestone_1.milestone_1_events_event_2_event_name
milestone_1.milestone_1_events_event_2_event_start_date

Array ( [0] => 16 )

问题出现在以粗体或*标记的行(不确定预览是否正确),milestone_0应该为milestone_1。该问题会破坏整个计数过程:)。

无论如何,如果这不是存储来自$_POST的数据的好方法,我愿意接受改进我的数据存储的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-25 13:51:51

按照您的要求,下面是我将如何构建表单:

代码语言:javascript
复制
<ul class="milestones">

 <li>
  <label>
   Name
   <input type="text" name="milestones[0][name]">
  </label>
  <label>
   Start date
   <input type="text" name="milestones[0][start_date]">
  </label>
  <label>
   End date
   <input type="text" name="milestones[0][end_date]">
  </label>
  <label>
   Description
   <input type="text" name="milestones[0][description]">
  </label>
 <ul class="events">
  <li>
   <label>
    Name
    <input type="text" name="milestones[0][events][0][name]">
   </label>
   <label>
    Start date
    <input type="text" name="milestones[0][events][0][start_date]">
   </label> 
  </li>
  <li>
   <label>
    Name
    <input type="text" name="milestones[0][events][1][name]">
   </label>
   <label>
    Start date
    <input type="text" name="milestones[0][events][1][start_date]">
   </label> 
  </li>
 </ul>
</li>

 <li>
  <label>
   Name
   <input type="text" name="milestones[1][name]">
  </label>
  <label>
   Start date
   <input type="text" name="milestones[1][start_date]">
  </label>
  <label>
   End date
   <input type="text" name="milestones[1][end_date]">
  </label>
  <label>
   Description
   <input type="text" name="milestones[1][description]">
  </label>
 </li>

</ul>

这将产生如下的POST数据:

代码语言:javascript
复制
milestones => array(
 0 => array(
  name => "name",
  start_date => "2012-04-25",
  end_date => "2012-04-28",
  description => "desc",
  events => array(
   0 => array(
    name => "name0",
    start_date => "date0",
   ),
   1 => array(
    name => "name1",
    start_date => "date1",
   ),
  ),
 ),
 1 => array(
  name => "name",
  start_date => "2012-05-01",
  end_date => "2012-05-14",
  description => "desc",
 ),
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10309467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档