2014-06-16 15 views
0

這是代碼。每當我輸入數據,它工作正常。它會正確計數每一行,除了遊戲#9。每場比賽都被正確計算,但是比賽#9。我坐了下來,問了3個人的幫助。現在我轉向你,幫助我弄清楚爲什麼會發生這種情況。查詢確實除第9行以外的所有行都正確

這是代碼:

<?php 

include ("../conn_inc.php"); 
include ("../conn_inc_pdo.php"); 
require_once ('auth.php'); 

$game_id= $_POST['game_id']; 
$resultat= $_POST['namn']; 
$lag1=substr($resultat, 0,1); 
$lag2=substr($resultat, 2,1); 


if ($lag1>$lag2){ 
    $tips="1"; 
} 
if ($lag1<$lag2){ 
    $tips="2"; 
} 
if ($lag1==$lag2){ 
    $tips="x"; 
} 

//echo $tips; 

    //------------------FIND ALL ALREADY POSTED GAMES---------------\\ 

    $sql2 = $pdo->prepare("SELECT game_id FROM vm2014res WHERE :game_id = game_id"); 
    $sql2->execute(array(':game_id' => $game_id)); 

    if ($sql2->rowCount() == 0) { 

     //------ IRRELEVANT TEST CODE 3 LINES DOWN-----\\ 
     echo $game_id; 
     echo $resultat; 
     echo "<br>"; 


      //----------- INSERT THE VALUE OF THE GAME IF IT DOESNT EXIST -------\\ 
      $q = "INSERT INTO vm2014res (game_id, resultat, added) VALUES (:game_id, :resultat, CURRENT_TIMESTAMP)"; 
      $query = $pdo->prepare($q); 
      $query->execute(array(
       ':game_id' => $game_id, 
       ':resultat' => $resultat 
       )); 

        //------------------CHECK IF YOU SHOULD BE GETTING POINTS FOR A CORRECT GUESSED RESULT---------------\\ 
      $SQL = $pdo->prepare("SELECT * FROM vm2014 WHERE game_id = :game_id AND resultat = :resultat"); 
      $SQL->execute(array(':game_id' => $game_id, ':resultat' => $resultat)); 
      $r = $SQL->fetchAll(PDO::FETCH_ASSOC); 
      foreach($r as $row){  


       $bet_id = $row['bet_id']; 
       $game_id = $row['game_id']; 
       $tips = $row['tips']; 
       $resultat = $row['resultat']; 
       $namn = $row['namn']; 
       $points = $row['points']; 

       //-------- ALL ECHOS DOWN HERE ARE IRRELEVANT----------\\ 
       echo $bet_id; 
       echo $game_id; 
       echo $tips; 
       echo $resultat; 
       echo $namn; 
       echo $points; 
       echo "<br>"; 
       $points=$points+2; 
       echo $points; 

    //------------- UPDATE THE POINTS GOTTEN (2 POINTS)---------\\ 

      $sql2 = $pdo->prepare("UPDATE vm2014 SET points = :points WHERE bet_id = :bet_id"); 
      $sql2->execute(array(':points' => $points, 
      ':bet_id' => $bet_id 
      )); 

      } 

      //------------------CHECK IF YOU SHOULD BE GETTING POINTS FOR RIGHT GUESSED GAME---------------\\ 
      $SQL = $pdo->prepare("SELECT * FROM vm2014 WHERE game_id = :game_id AND tips = :tips"); 
      $SQL->execute(array(':game_id' => $game_id, ':tips' => $tips)); 
      $r = $SQL->fetchAll(PDO::FETCH_ASSOC); 
      foreach($r as $row){  


       $bet_id = $row['bet_id']; 
       $game_id = $row['game_id']; 
       $tips = $row['tips']; 
       $resultat = $row['resultat']; 
       $namn = $row['namn']; 
       $points = $row['points']; 

      //-------IRRELEVANT ECHOS DOWN HERE--------\\ 
       echo $bet_id; 
       echo $game_id; 
       echo $tips; 
       echo $resultat; 
       echo $namn; 
       echo $points; 
       echo "<br>"; 
       $points=$points+1; 
       echo $points; 

    //----------------- UPDATE YOUR POINTS IF YOU SHOULD BE GETTING POINTS FOR THE GAME----\\ 

      $sql2 = $pdo->prepare("UPDATE vm2014 SET points = :points WHERE bet_id = :bet_id"); 
      $sql2->execute(array(':points' => $points, 
      ':bet_id' => $bet_id 
      )); 

      } 

    } else { 
     //-----------------POST WHEN THE GAME RESULT WAS ADDED TO THE DB-------\\ 
      $SQL6 = $pdo->prepare("SELECT * FROM vm2014res WHERE game_id = :game_id"); 
      $SQL6->execute(array(':game_id' => $game_id)); 
      $ra = $SQL6->fetchAll(PDO::FETCH_ASSOC); 
      foreach($ra as $row){ 

       $game_id = $row['game_id']; 
       $resultat = $row['resultat']; 
       $added = $row['added']; 

     echo "Resultatet är redan registrerat. Det registrerades: <strong>" . $added . "</strong> och det vart <strong>" . $resultat . "</strong> i matchen."; 
      } 
    } 

IVE包括代碼的整個部分,因爲我不知道在哪裏的代碼錯誤部分。它應該在以下部分:

//------------------Kolla om du ska få poäng för ditt tips---------------\\ 

但我不能看到問題。

IM輸入2-1進入比賽9,這是輸入到數據庫中:(我不知道如何使這個表本網站上)

 
    bet_id game_id tips resultat name  poäng 
    9   9 1  2-1   Player 1 2 
    57   9 x  1-1   Player 2 0 
    105   9 x  1-1   Player 3 0 
    153   9 1  2-0   Player 4 0 
    201   9 1  2-1   Player 5 2 
    249   9 1  3-0   Player 6 0 
    297   9 x  1-1   Player 7 0 
    345   9 x  0-0   Player 8 0 
    393   9 2  0-1   Player 9 1 
    441   9 1  1-0   Player 10 0 
    489   9 2  0-3   Player 11 1 
    537   9 x  0-0   Player 12 0 
    585   9 x  1-1   Player 13 0 
    633   9 1  2-0   Player 14 0 
    681   9 2  1-2   Player 15 1 
    729   9 2  0-1   Player 16 1 
    777   9 x  1-1   Player 17 0 
    825   9 1  3-0   Player 18 0 
    873   9 2  2-3   Player 19 1 
    921   9 2  0-1   Player 20 1 
    969   9 x  2-2   Player 21 0 
    1017  9 x  2-2   Player 22 0 
    1065  9 2  2-1   Player 23 3 
    1113  9 x  0-0   Player 24 0 
    1161  9 2  1-1   Player 25 1 

,正如你所看到的,一些球員因錯誤而獲得積分。有些人得到正確結果的積分,但沒有得到猜測誰贏了比賽。

有人可以幫助我搞清楚最新的錯誤嗎?

+2

首先您必須解釋如何輸出示例顯示什麼是對的。我不知道'2-2'或'2-1'的意思。而且我們不打算通讀基本上完全沒有文檔的代碼來嘗試猜測問題是什麼。 –

+0

2-1是結果。 2對1,我不知道要添加評論。我可以試試 –

+0

@MarcB ive添加了儘可能多的評論 –

回答

0

首先你calucate $tips

if ($lag1>$lag2){ 
    $tips="1"; 
} 

然後,您與數據庫的結果將其覆蓋:

//------------------CHECK IF YOU SHOULD BE GETTING POINTS FOR A CORRECT GUESSED RESULT---------------\\ 
/* ... */ 
$tips = $row['tips']; 

其中一個變量應該有不同的名稱。

一些進一步的問題:

$resultat= $_POST['namn']; 

我假設$resultat是博弈的結果,而'namn'是一個球員的名字。這不可能是正確的。

$lag1=substr($resultat, 0,1); 
$lag2=substr($resultat, 2,1); 

如果一個團隊在比賽中得分超過9個,該怎麼辦?你應該以'-'作爲分隔符explode的結果。

+0

,namn在這件事上並不是一個球員的名字。我只是使用我曾經做過的一個網站的舊部分,並沒有打算修復那部分。它的結果字符串。是的,我應該使用爆炸。但是對於這個版本,substr可以正常工作,因爲對於一個在一場比賽中獲得超過9個進球的球隊來說是驚人的,而且從未見過它發生過。謝謝你的幫助 –