2013-10-31 56 views
2

我不知道如何解決這個問題,我需要一些關於從名字列表中插入數據的建議。這是統計類型的數據。假設我有一個看起來像這樣的數組。從一組信息插入數據?

$basketball = array (
    'teams' => array (
     'orange' => array (
      'names' => array(
       'matt' => array('number' => '12', 'position' => 'guard'), 
       'john' => array('number' => '23', 'position' => 'forward'), 
      ), 
     ), 
     'blue' => array (
      'names' => array(
       'luke' => array('number' => '34', 'position' => 'guard'), 
       'brian' => array('number' => '45', 'position' => 'forward'), 
      ), 
     ), 
    ), 
); 

然後在我的應用程序中,我運行一個這樣的名稱的foreach。

<?php foreach($basketball as $key => $teams): ?> 
    <?php foreach($teams as $team => $names): ?> 
    <div class="teams <?php echo $team ?>" data-score="0"> 
     <?php foreach($names as $key => $players): ?> 
      <?php foreach($players as $player => $player_info): ?> 
       <div class="home-stats stats <?php echo $team ?>" data-player="<?php echo $player ?>"> 
        <ul> 
         <li class="name"> 
         <span><?php echo $player ?></span> 
         <input type="hidden" name="home-playername" value="<?php echo $player ?>" /> 
         </li> 
         <li class="points"> 
         <span>0</span> 
         <input type="hidden" name="home-points" value="0" /> 
         </li> 
        </ul> 
       </div> 
      <?php endforeach; ?>  
     <?php endforeach; ?> 
    </div> 
    <?php endforeach; ?> 
<?php endforeach; ?> 

有了這個,我試圖找出最好的方法添加數據,使點播放機匹配,顯然我將有更多的統計和球員,但是例如着想,這是我所需要的。

我正在考慮使用json並用jQuery重寫名稱屬性,然後構建一個數組,併爲每個團隊名稱設置一行,但我再也想不出如何重命名這些輸入來構建一個實體數組,看起來像(對不起,如果它有點搞砸了,但它只是一個想法)

{"players":[{"matt":[{"stats":[{"points":"22"}]}], 
       "john":[{"stats":[{"points":"18"}]}]}]} 

我想這可能是一個非常寬泛的問題,但歸納起來給出的信息,如果你是如何將你的做法開發商數據的統計風格,作爲所有信息的父母的玩家的名字......或者......可能是作爲所有信息的父母的隊名,無論哪種方式,一旦我想到我可以去的最佳方法無論哪種方式..

回答

2

你應該使用像ember.js,angular.js或backbone.js插件。您應該創建一個簡單的RESTful API來從您的服務器中檢索數據。要完成此任務,請執行以下三個步驟:

1-將數據放入數據庫中 確保所有關係都經過深思熟慮。不要在數據庫中丟棄隨機信息。當我看着你的例子時,你已經看到你組織數據的方式存在問題。名稱應該是對象的屬性,而不是鍵的名稱。使用OOP的力量。

2-將您的數據庫映射到對象 保存自己的巨大麻煩和使用原則。它可以幫助您映射實體之間的數據和關係。您可以用少於50行的代碼映射整個應用程序。

3-返回數據 以您需要的任何格式返回它。 JSON是非常主流的,但你可以決定返回XML或YAML。隨你便。使用任何你覺得舒適的東西。

我personnaly使用Ember.js。它使用handlebars爲您的模板。到底你的代碼應該是超短期和清潔:

<div id="comments"> 
    {{#each player}} 
     <h2>#{{id}}">{{name}}</a></h2> 
     <div>{{points}}</div> 
    {{/each}} 
</div> 

如果你不知道這些框架是如何工作的花時間去學習他們的時間。你現在這樣做的方式是錯誤的。儘可能採取最佳習慣,並學習如何使用MVC體系結構構建可靠的應用程序。

希望它有幫助

+0

我很欣賞這一點,我需要做一個更多的面向對象方法。我聽到並看到了骨幹,並且很羨慕。從來沒有完全理解它。讓我把所有這些都浸透起來... –

+0

是的,我最近把自己撿起來了,相當於你學習框架的時間等於你浪費大部分功能的時間。不妨讓我學習其中的一種框架,不僅能讓你成爲一名更好的程序員,而且也是一筆很棒的時間投資。 –

+0

是的,我一直聽到這個,我也打算在zend之類的應用程序之後使用PHP框架。 –