2014-11-05 42 views
0

我正在創建一個頁面,您可以保存足球匹配的預測。 每週有9場比賽,用戶可以通過表單發佈他的比賽預測。 這種形式的結果將導致以下數組中:從表單輸入簡化數組的php驗證

 
Array 
(
    [week] => 12 
    [game_id_1] => 28 
    [game_1_home] => 2 
    [game_1_away] => 2 
    [game_id_2] => 29 
    [game_2_home] => 2 
    [game_2_away] => 1 
    [game_id_3] => 31 
    [game_3_home] => 4 
    [game_3_away] => 0 
    [game_id_4] => 30 
    [game_4_home] => 2 
    [game_4_away] => 0 
    [game_id_5] => 32 
    [game_5_home] => 0 
    [game_5_away] => 2 
    [game_id_6] => 33 
    [game_6_home] => 1 
    [game_6_away] => 0 
    [game_id_7] => 35 
    [game_7_home] => 1 
    [game_7_away] => 1 
    [game_id_8] => 34 
    [game_8_home] => 2 
    [game_8_away] => 4 
    [game_id_9] => 36 
    [game_9_home] => 3 
    [game_9_away] => 0 
)

我已經寫了一個驗證的一部分,第一場比賽,但不是抄襲這8次,我認爲這是可以去要容易得多。 任何想法如何做到這一點,請給我建議,如果我可以改善這段代碼。

$blnOK = true; 
$strResult = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    if (isset($_POST['game_id_1']) && !empty($_POST['game_1_home']) && !empty($_POST['game_1_away'])) 
    //check if the posts are not empty, then put in variables 
    { 
     $strGame_id_1 = $_POST['game_id_1']; 
     $strGame_1_home = $_POST['game_1_home']; 
     $strGame_1_away = $_POST['game_1_away']; 

     //Check if strings are numeric 
     if ((ctype_digit($strGame_1_home)) && (ctype_digit($strGame_1_away))) 
     { 
      //Check if prediction already exists in database for user 
      $strQueryPrediction = "SELECT count(id) amount FROM prediction where player_id = 1 and game_id = $strGame_id_1"; 
      $resultQueryPrediction = mysql_query ($strQueryPrediction); 

      $intPredictionKnown = mysql_result($resultQueryPrediction, 0); 

      if ($intPredictionKnown == 0) 
      { 
       //NOT KNOWN so INSERT 
       $blnOK = executeQuery("INSERT INTO prediction (player_id, game_id, predict_home, predict_away) VALUES (1, $strGame_id_1, $strGame_1_home, $strGame_1_away)", $strErrorText, $db); 
       echo "Your prediction is saved"; 
      } 
      else 
      { 
       //KNOWN so UPDATE 
       $blnOK = executeQuery("UPDATE prediction SET predict_home = $strGame_1_home, predict_away = $strGame_1_away WHERE player_id = 1 AND game_id = $strGame_id_1", $strErrorText, $db); 
       echo "Your prediction is updated"; 
      } 
     } 
     else 
     { 
      $strResult = "Too bad, your prediction could not saved."; 
      $blnOK = false; 
     } 

    } 
    else 
    { 
     echo "Input is empty"; 
    } 
} 

回答

0

你可以,也可以說應該使用循環來保存你複製代碼多次。你說還有9場比賽,這樣你就可以做到以下幾點:

$blnOK = true; 
$strResult = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    for ($i = 1; $i <= 9; $i++) 
    { 
     if (isset($_POST['game_id_' . $i]) && !empty($_POST['game_' . $i . '_home']) && !empty($_POST['game_' . $i . '_away'])) 
     //check if the posts are not empty, then put in variables 
     { 
      $strGame_id = $_POST['game_id_' . $i]; 
      $strGame_home = $_POST['game_' . $i . '_home']; 
      $strGame_away = $_POST['game_' . $i . '_away']; 

      //Check if strings are numeric 
      if ((ctype_digit($strGame_' . $i . '_home)) && (ctype_digit($strGame_' . $i . '_away))) 
      { 
       //Check if prediction already exists in database for user 
       $strQueryPrediction = "SELECT count(id) amount FROM prediction where player_id = 1 and game_id = $strGame_id"; 
       $resultQueryPrediction = mysql_query ($strQueryPrediction); 

       $intPredictionKnown = mysql_result($resultQueryPrediction, 0); 

       if ($intPredictionKnown == 0) 
       { 
        //NOT KNOWN so INSERT 
        $blnOK = executeQuery("INSERT INTO prediction (player_id, game_id, predict_home, predict_away) VALUES (1, $strGame_id, $strGame_home, $strGame_away)", $strErrorText, $db); 
        echo "Your prediction is saved"; 
       } 
       else 
       { 
        //KNOWN so UPDATE 
        $blnOK = executeQuery("UPDATE prediction SET predict_home = $strGame_home, predict_away = $strGame_away WHERE player_id = 1 AND game_id = $strGame_id", $strErrorText, $db); 
        echo "Your prediction is updated"; 
       } 
      } 
      else 
      { 
       $strResult = "Too bad, your prediction could not saved."; 
       $blnOK = false; 
      } 

     } 
     else 
     { 
     echo "Input is empty"; 
     } 
    } 
} 

只要你有做一些事情多次,想使用一個循環,如果可能的話,或創建您可以多次調用一個函數。