2011-03-18 4 views
0

배경 : 특정 "역할"을 가진 사용자 (읽기 : 순위)가 하위 사용자를 만들고 유지할 수있게 해주는 제어판. foreach() 루프는 계정과 연결된 모든 하위 사용자를 쉽게 편집 할 수 있도록 텍스트 필드에 표시합니다. 아직 개발 중이지만 하위 사용자가 작성한 순서대로 표시되도록 쿼리를 주문하려고합니다.foreach 루프에서 ORDER BY하는 방법?

내가 주문하지 않는 이유는 루프마다 하나의 항목 만 선택하는 쿼리 때문입니다. 따라서 정렬 할 항목이 없습니다. 이 문제는 루프의 각 패스에서 동적이기 때문에 'username'필드의 배열 값으로 인해 루프 내부에 있어야하는 쿼리에서 발생합니다.

 // check for existing subusers 
    $findsubusers = mysql_query("SELECT * FROM `custportal` WHERE `parentid` = '". $_SESSION['id'] ."'"); 
    $subusernum = mysql_num_rows($findsubusers); 
    if ($subusernum > 0) { 
     // subusers present, print them to editable form 
     echo "<h2>Edit Existing Users</h2><br />"; 
     echo "<form method=\"post\" action=\"edit.php\">"; 
     for ($num=1; $num <= $subusernum; $num++) { 
      // print all subusers 
      $subuserinfo = mysql_fetch_array($findsubusers); 
      echo "<p>Name: "; 
      echo "<input type=\"text\" name=\"subusername[]\" value=\"". $subuserinfo['username'] ."\" /></p>"; 
      echo "<p>Password: "; 
      echo "<input type=\"text\" name=\"subuserpass[]\" value=\"". $subuserinfo['password'] ."\" /></p>"; 
      echo "<input type=\"hidden\" name=\"subuserid[]\" value=\"". $subuserinfo['id'] ."\" />";; 
     } 
      echo "<input type=\"submit\" name=\"submitchanges\" value=\"Submit Changes\" />"; 
      echo "</form><br /><br />"; 
    } 

해결 방법 : 기본적으로

$names = array() 
foreach ($_POST as $name) { 
    $names[] = "'" . mysql_real_escape_string($name) "'"; 
} 

$where_in = implode(",", $names); 

$query = "SELECT ... WHERE username IN ($where_in) ORDER BY username"; 
$stmt = mysql_query($query) or die(mysql_error()); 

를 A는 "어디에서"절은 이렇게 하나의 쿼리가 모두 가져 오는에 사용자 이름의 배열을 변환 :

$findsubusers = mysql_query("SELECT * FROM `custportal` WHERE `parentid` = '". $_SESSION['id'] ."' ORDER BY username ASC"); 
+0

코드 스 니펫이 업데이트되었습니다.이 코드는 더 적절합니다. – SQueryL

+0

나는 바보, 문제 해결. – SQueryL

답변

1

당신은 이런 식으로 뭔가를 할 수 일치하는 레코드는 쿼리 내에서 정렬 할 수 있습니다.

+0

다른 사람이 그다지 관련이 없다는 것을 알았을 때 내가 게시 한 코드 스 니펫을 업데이트했지만이 방법을 어떻게 적용해야할지 모르겠습니다. – SQueryL

관련 문제