2017-10-03 29 views
-2

私は、1回に最大10の携帯電話番号を入力できる数字を検索するためにテキスト領域を使用しています。私は2つの数字でテストしようとすると、私は私のdbにそのプロファイルを持っている最初の番号でキーを押すと、出力が正しいです。しかし私が私達のdbのプロフィールを持っていない番号で第1の値をキー入力すれば、出力は正しくなくなり、第2の値をループしません。エラーが発生しました。誰もこのケースで私を助けることができますか?事前にありがとう出力結果が正しくありません

if (isset($_POST['search']) && $_POST['search'] == 'Search') { 
    $police = new police(); 

    $user = $_SESSION['username']; 
    $searchuser = $_POST['searchby']; 

    $_SESSION['searchby'] = $_POST['searchby']; 

    $param = explode("\n", trim($_POST['info'])); 
    for ($i = 0; $i < count($param); $i++) { 
     $param[$i] = str_replace(array("\r", "\n", "\r\n"), "", $param[$i]); 
    } 

    try { 
     if ($_POST['searchby'] == 'select') { 
      throw new Exception("Please select your identity search"); 
     } 
    } catch (Exception $ex) { 
     $errmsg = $ex->getMessage(); 
     $tbs->VarRef['searchFail'] = 'true'; 
     $tbs->VarRef['searchFailMsg'] = $errmsg; 
     $user = $_SESSION['username']; 
    } 

    if (isset($param) && $_POST['searchby'] == 'msisdn') { 

     $ptrnmsisdn = "/^(\+?6?01)[0|1|2|3|4|6|7|8|9]\-*[0-9]{7,8}$/"; 

     for ($i = 0; $i < count($param); $i++) { 
      $param[$i] = preg_replace("/^(6)(\d+)/", "$2", $param[$i]); 
     } 

     try { 
      if (empty($param)) { 
       throw new Exception("Please enter your search"); 
      } else { 
       foreach ($param as $item) { 
        if (!preg_match($ptrnmsisdn, $item)) { 
         throw new Exception("Please enter correct mobile number"); 
        } 
       } 
      } 
      $tbs->LoadTemplate('msisdnprofile1.html'); 
      //$_SESSION["msisdnlist"] = $police->getSubsInfo($param[0],$searchmsisdn); 

      try { 
       $searchResult = array(); 
       foreach ($param as $paramValue) { 
        $search = "NRIC"; 
        $msisdnList = $police->getSubsInfo($paramValue, $search); 
        $searchResult[$paramValue] = $msisdnList; 
       } 
      } catch (Exception $ex) { 
       $searchResult[$paramValue] = $ex->getMessage(); 
      } 

      $listMsisdn = ""; 
      $arryTemp = array(); 


      foreach ($searchResult as $searchValue => $subValue) { 

       array_push($arryTemp, $searchValue); 

       $listMsisdn .= '<div> 
<h3>' . $searchValue . '</h3> 
<table> 
    <thead> 
    <tr> 
     <th width="300">Mobile Number</th> 
     <th width="300">Status</th> 
     <th width="300">View</th> 
    </tr> 
    </thead> 
    <tbody> 

';

    $listMsisdn .= '<tr> 

'。 $ subValue ['msisdn']。 ' ' $ subValue ['Reg_Status']。 ' ';

   $listMsisdn .= '  </tbody> 
</table> 

';

  } 
      $_SESSION['$searchValue'] = $searchValue; 
      $_SESSION['$listMsisdn'] = $listMsisdn; 
      $_SESSION['$listOfSearchValue'] = $arryTemp; 
      $tbs->Show(); 
      die(); 

     } catch (Exception $ex) { 
      $user = $_SESSION['username']; 
      $errmsg = $ex->getMessage(); 
      $tbs->VarRef['searchFail'] = 'true'; 
      $tbs->VarRef['searchFailMsg'] = $errmsg; 
     } 
    } 

}

+0

ここで '$ param'を設定しますか? – apokryfos

+0

テキスト領域はどこですか? また、最大10桁まで入力する必要がある場合は、代わりに入力を使用するべきですか? – cmprogram

+0

こんにちは@apokryfos if文の前に設定しました – nikzara

答えて

0

あなたはtry/catch周り全体foreachループを持っています。したがって、いずれかのパラメータにエラーがある場合、ループはその時点で停止します。あなたはgetSubsInfo()への呼び出しのまわりでそれを置く必要がありますので、$param配列の残りの部分でループを続けることができます。

$searchResult = array(); 
    $search = "NRIC"; 
    foreach ($param as $paramValue) { 
     try { 
      $msisdnList = $police->getSubsInfo($paramValue, $search); 
      $searchResult[$paramValue] = $msisdnList; 
     } catch (Exception $ex) { 
      $searchResult[$paramValue] = $ex->getMessage(); 
     } 
    } 
+0

ありがとう@Barmaarその作品は今良い – nikzara