2014-04-26 3 views
0

웹 서비스를 사용하여 JSON 형식의 값을 안드로이드 애플리케이션에 반환하려고합니다. 어떤 이유로 든 내 코드가 "잘못된 로그인입니다. 다시 시도하십시오."가 반환됩니다. 나는 사용자 이름이 입력되고 있다는 긍정적인데, 나는 작업이 적절하게 돌아오고 있다는 긍정적이다. 주석 처리 된 행으로 포함 된 테스트 코드를 사용하여 서비스에서 하나의 데이터 집합을 응용 프로그램에 반환하는지 확인합니다. 그것은 문제가 내 foreach 루프와 함께 나타납니다,하지만 난 어떻게 보이지 않습니다. 그것은 아주 간단한 물건입니다. 분명히 iterating 아니거나, 내 카운트가 증가하고 잘못된 로그인 오류가 나타나지 않을 것입니다. 내가 생각할 수있는 유일한 것은 foreach 루프를 사용해야한다는 것입니다. 그러나 나는 그다지 성공하지 못했습니다.PHP ForEach 루프가 반복/카운트하지 않습니다.

미리 도움을 요청 해 주셔서 감사합니다.

다음

foreach는 루프는 ...

//for reach task returned, add to array for later output 
      foreach ($row2['Description'] as $t) 
      { 
      $taskDisplay = array('task' => $t); 
      $taskCount++; 
      } 

카운트 ... 여기

if ($taskCount > 0)  
{ 
echo json_encode($taskDisplay); 
} 
else 
{ 
echo "Invalid login, please try again"; 
} 

모든 행에 걸쳐 foreach 전체

$taskDisplay = array(); 
$taskCount = 0; 

//do this portion if app gives key value "PART_ONE" 
if ($result['part'] == "PART_ONE") 

{ 
    //if username was entered, check user credentials 
    if(array_key_exists('user', $result)) { 

     $usercheck = $con->prepare("Select * from Employee 
         Where usr = ? 
         and pass = ?"); 
     $usercheck -> execute(array($result['user'], $result['password'])); 
     $row = $usercheck -> fetch(); 

     //if username was verified, select tasks from database 
     if($row['usr']) 
     { 

      $task = $con->prepare("Select * from Tasks 
         where Assigned_Employee = ?"); 
      $task -> execute(array($result['user'])); 
      $row2 = $task -> fetch(); 
      $statusCode = "Success"; 
      //$taskDisplay = $row2['Description']; 

      //for reach task returned, add to array for later output 
      foreach ($row2['Description'] as $t) 
      { 
      $taskDisplay = array('task' => $t); 
      $taskCount++; 
      } 

     } 


    else 
    { 
    $statusCode = "Fail"; 
    //bail if invalid username entered 
    exit; 
    } 


    //$arr = array('task' => $taskDisplay, 'status_code' => $statusCode); 
    //echo json_encode($arr); 

    if ($taskCount > 0) 
    { 
    echo json_encode($taskDisplay); 
    } 
    else 
    { 
    echo "Invalid login, please try again"; 
    } 

} 
} 
+0

내가 당신의 foreach는 내 문제와 $ ROW2 [ '설명'] 될 수있다 생각하는 것은하지 값을 가지고, 그건. –

+0

'$ row2 [ '설명']'은 아마도 배열이 아닙니다. – Linblow

+0

제안 해 주셔서 감사합니다. 그러나 SQL이 적절한 값을 반환하고 있음을 두 번 확인했습니다. 주석 처리 된 코드에서 저는 하나의 값을 안드로이드 애플리케이션으로 되돌릴 수 있습니다. – mbritton

답변

0

의 코드입니다 당신은 fetchAll()을 원할 것입니다. 그런 다음 각 행의 Description 열을 액세스 할 : 증가하지 카운트 이유

$row2 = $task->fetchAll(); 

// etc... 

foreach ($row2 as $t) 
{ 
    $taskDisplay[] = array('task' => $t['Description']); 
    $taskCount++; 
} 
+0

이것은 여전히 ​​하나의 결과 만 반환하고 있지만 작동합니다. 데이터베이스에서 두 세트의 데이터를 리턴해야합니다. – mbritton

+0

수정 됨. '$ taskDisplay []'가 필요합니다. – AbraCadaver

+0

네, 완벽 해요! 그 배열을 반환합니다. 내 안드로이드 앱에 실제로 목록을 채우는 데 여전히 문제가 있습니다.하지만 다른 게시물에는 문제가 있습니다. 도와 줘서 고마워! – mbritton

관련 문제