2016-04-13 9 views
-1

トーナメントでROUNDの各ゲームに勝つチームをユーザーが選択するPick'emアプリケーションをコーディングしようとしています。 I.Eトーナメントには多くのラウンドがあり、ラウンドごとに勝者を計算し、勝利を記録します。配列をループするときの初期化されていない文字列オフセット

私は現在ラウンド

の最後に受賞者を得ることに取り組んでいます以下のような問題に取り組むために私のロジックは次のとおりです。

  • EVENT INFO
  • はMEMBER SELECTIONSをゲット
  • GET受賞チーム
  • GETメンバーWHO SELEC TED CORRECT TEAM(私の問題はここにある!)のメンバーは、私はそれのDB構造部分はこの

    enter image description here

    のように見えていラウンド

のために最も正確なチームを選択し

  • カウント

    私は以下のコードを投稿しています。誰かが私が間違っている場所を教えてくれることを願っています。ワーキング

  • テストさ
  • ステップ2 - - ワーキング
  • テストさ
  • ステップ3 - ワーキング
  • ステップ - 4私の問題エラー(Uninitialized string offset
  • Iは、テストされ、次の

    • ステップ1を確認することができます
    • ステップ-5最初にステップ4を修正します。

    // ### STEP 1 ###

    //GET EVNT INFO 
    $sql="Select * FROM events WHERE tournament = 'IPL' AND round ='5'"; 
         $result = $db->prepare($sql); 
         $result = $db->query($sql); 
         foreach($result as $results){ 
          $eventNr[] = $results['event_id']; 
          $t1[] = $results['team1']; 
          $t2[] = $results['team2']; 
          $t1Score[] = $results['team1Score']; //Event finished score uploaded 
          $t2Score[] = $results['team2Score']; //Event finished score uploaded     
         }//foreach 
    
    //### STEP 2 ### 
    //GET MEMBER SELECTIONS 
    
    $sql="Select * FROM multiple_picks WHERE tournament = 'IPL' AND round ='5' ORDER BY round_game_nr"; 
         $result = $db->query($sql); 
         foreach($result as $results){ 
          $memberNr[] = $results['member_nr']; 
          $pickId[] = $results['pick_id']; 
          $eventId[] = $results['event_id']; 
          $pick[] = $results['pick']; 
          $score[] = $results['score']; 
          $tournament[] = $results['tournament']; 
          $round[] = $results['round']; 
          $rgm[] = $results['round_game_nr']; 
         }//for each 
    
    ####STEP 3 ######  
    //GET Winning Teams 
         $winner = array(); 
    
         foreach($eventNr as $id => $winners){ 
          if($t1Score[$id] > $t2Score[$id]){ 
           $winner = $t1[$id];  
          }//if 
           else if($t2Score[$id] > $t1Score[$id]){ 
            $winner = $t2[$id];  
           }//else if 
         }//foreach 
    
    #### STEP 4 GET MEMBERS WHO SELECTED CORRECT TEAM #### 
         //GET WINNING MEMBERS 
         $correct = array(); 
         foreach($pickId as $id => $picked){ 
          if($pick[$id] == $winner[$id]) 
          { 
           echo $correct = $memberNr[$id]; 
          } 
         } 
        ?> 
    

    任意のヘルプまたはアドバイスが大幅に一つだけのイベントあなたの最初のクエリの戻りを想定すると

    +0

    は、完全なエラーメッセージを表示してください。**とそれが参照する行表示** – deceze

    +0

    この行は現在の出力を何? – KDOT

    +0

    @decezeエラーメッセージは最後の 'foreach'の' ifステートメント 'で' uninitialized string offset'です –

    答えて

    1

    を高く評価時間この上で立ち往生されて、あなたが選ぶ誰見つけることができますそのような正しいチーム:

    //GET EVNT INFO 
    $sql = "SELECT * FROM events WHERE tournament = 'IPL' AND round = '5'"; 
    $query = $db->query($sql); 
    
    // Store the event info inside an array. 
    $event = $query->fetch(PDO::FETCH_ASSOC); 
    
    //### STEP 2 ### 
    //GET MEMBER SELECTIONS 
    $sql = "SELECT * FROM multiple_picks WHERE tournament = 'IPL' AND round ='5' ORDER BY round_game_nr"; 
    $query = $db->query($sql); 
    
    // Store members inside a collection of member. 
    $picks = $query->fetchAll(PDO::FETCH_ASSOC); 
    
    //### STEP 3 ### 
    //GET Winning Teams 
    $winner = null; 
    if ($event['team1Score'] > $event['team2Score']) { 
        $winner = $event['team1']; 
    } elseif ($event['team1Score'] < $event['team2Score']) { 
        $winner = $event['team2']; 
    } 
    
    // ### STEP 4 GET MEMBERS WHO SELECTED CORRECT TEAM ### 
    //GET WINNING MEMBERS 
    $correct = []; 
    foreach ($picks as $pick) { 
        if ($pick['pick'] === $winner) { 
         $correct[] = $pick['member_nr']; 
         echo 'Member ' . $pick['member_nr'] . ' picks correctly !'; 
        } 
    } 
    
    +0

    非常に印象的な、ありがとう! –

    関連する問題