2012-04-25 312 views
1

我有以下問題。PHP數據處理困難

我有一個jQuery手風琴,用於保存里程碑,並在每個里程碑內有一個按鈕,用於將事件添加到里程碑。這工作正常。我爲每個輸入分配名稱的方式如下。

<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例如生成的標記如下:

<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數據處理,所以我用這個辦法知道屬於什麼事件專家到一定的里程碑。問題是我用來確定有多少變量形成里程碑(里程碑的信息和每個事件信息)的函數有一個我似乎無法找到的問題。

功能是:

// 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); 

測試數據,輸出爲:

[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) 

中標記爲粗體或** **(不知道是否預覽作品線路出現問題右),里程碑_0應該是里程碑_1。而這個問題會毀掉整個計數過程:)。

無論如何,如果這不是一個好的方式來存儲來自$_POST的數據,我願意提出改進我的數據存儲的建議。

+1

我會重組POST數據到數組:'里程碑[1] [Name]','Milestone [1] [Events] [5] [Name]'... – DCoder 2012-04-25 04:49:16

+0

你能告訴我一個如何處理像我這樣的輸入的例子語法來生成你提到的數組嗎?這將不勝感激:) – 2012-04-25 04:54:12

回答

1

根據你的要求,這裏的我會怎樣結構形式:

<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數據:

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", 
), 
) 
+0

優秀:)我欠你六包啤酒:) – 2012-04-25 06:21:49