2012-10-28 5 views
0

누군가가 MySQL/PHP 정렬 순서 문제를 도와 줄 수 있다고 생각합니다. 다음과 같이Ajax/PHP 드롭 다운 메뉴에서 MySQL 정렬 순서 문제

내가 뭐하는 거지에 대한 간략한 개요는 다음과 같습니다

I 세 (체인) 선택 상자가 있습니다. 첫 번째 상자의 출력은 고정되어 있습니다 (내 상점의 모든 최상위 범주가 포함되어 있음). 두 개의 후속 상자는 이전 상자에서 선택한 선택에 따라 채워집니다 ... 표준, 직접적인 물건, 나는 당신이 말하는 것을 들었습니다!

모두 훌륭하게 작동하며 마지막 상자의 선택 (문자열)이 "검색 결과"페이지에 추가됩니다. 두 번째 및 세 번째 상자 정렬 순서를 구성 할 때 내 문제가 온다.

 public function ShowType() 
    { 
     $sql = "SELECT categories.*, categories_description.categories_name FROM categories, categories_description WHERE categories.categories_id = categories_description.categories_id AND categories.parent_id = $_POST[category] ORDER BY categories_name"; 
     $res = mysql_query($sql,$this->conn); 
     $type = '<option value="0">Select...</option>'; 
     while($row = mysql_fetch_array($res)) 
     { 
     $type .= '<option value="' . $row['categories_name'] . '">' . $row['categories_id'] . '</option>'; 
     } 
     return $type; 
    } 

아약스는 (회색, 비 - 클릭)를 대체

<option value="0">Select...</option> 

부분을 선택 한 번

<option value="' . $row['categories_name'] . '">' . $row['categories_id'] . '</option> 

에 : 여기

내 코드의 샘플입니다 (이전 상자에 있음)이 작성되었습니다.

박스가 활성화되면 어레이가 표시되는 것이 문제는 알파벳 순서가 아닙니다. categories_name에 의해 선택 상자에서 출력을 정렬하고 싶지만 MySQL 쿼리에서 무엇을 시도해도 상관 없습니다!

"동적"태그의 출력이 Ajax에 의해 업데이트되는 방식으로 정렬되지 않았습니까? PHP를 사용하여 배열을 다시 정렬해야합니까? 그렇다면 누군가 초보자 수준으로 안내 할 수 있습니까 (필자는 중급자라고 부를 수는 없습니다!) 튜토리얼에서 어떻게 시작해야할까요?

나는 내가 지난 번에했던 것처럼 더 이상 논쟁을 일으키지 않기를 바란다. :-)

건배,

Andy. 당신의 SQL 쿼리에서

+0

[** mysql_ * 함수를 사용하지 마십시오. in new code **] (http://bit.ly/phpmsql). 더 이상 유지 관리되지 않으며 [deprecation process] (http://j.mp/Rj2iVR)가 시작되었습니다. [** red box **] (http://j.mp/Te9zIL)? 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http : // php. net/pdo) 또는 [MySQLi] (http://php.net/mysqli) - [이 기사] (http://j.mp/QEx8IB)를 통해 결정할 수 있습니다. 좋은 튜토리얼] (http://j.mp/PoWehJ) – hakre

+0

http://dev.mysql.com/doc/refman/5.0/en/select.html의 어느 부분에서 성공을 이끌지 못합니까? 값을 데이터베이스에 쿼리 할 때. – hakre

+0

감사합니다. 잉크, Hakre. mysql_ * 함수를 대체하는 방법을 살펴 보겠다. 나는 MySQL 쿼리에서 값을 정렬하려고한다. (나는 여러 가지 SORT BY 값을 시도했지만, 아무 것도하지 않는 것 같다.)하지만 두 번째 게시물에서도 링크를 읽는다. – user1742819

답변

0

은 당신이 :

ORDER BY categories_name

그러나, 드롭 다운을 채우는 코드에서 당신이 :

<option value="' . $row['categories_name'] . '">' . $row['categories_id'] . '</option>

당신은 categories_id를 표시하지만 categories_name에 의해 정렬되어, 결과 드롭 다운은 사용자에게 표시되지 않습니다.

+0

MitchS에게 의견을 보내 주셔서 감사합니다. 이전에 나는 이것에 대해 살펴 봤는데, 당신이 내 질문을하기 전에 언급 한 두 가지 값을 이미 바꿨지만 드롭 다운의 결과는 바뀌지 않았습니다. '$ row [ 'xxxxx_xxxxx']'엔트리 중 하나가 불필요하거나 그 중 하나에 다른 값을 가져야한다고 제안 하시겠습니까? – user1742819

0

것은 그것을 사용 ORDER를 categories_id에 의해

+0

제안 해 주신 Akhilesh에게 감사드립니다. 아무런 효과가 없습니다 ... 결과가 나타나더라도 알파벳순으로 결과를 원하며 ID는 알파벳순이 아니며 작성한 순서입니다. 사실, 쿼리에서 목록을 정렬하는 방법에 관계없이 항목이 표시되는 순서입니다. 나는'ORDER BY categories_id','ORDER BY categories_name','ORDER BY categories_description.categories_name'과 그 밖의 모든 것을 시도했다. 채워지는 드롭 다운 메뉴의 순서는 바뀌지 않습니다! 데이터베이스에서 카테고리 ID를 변경해야한다고 생각합니다. – user1742819

0

이 쿼리를 시도해보십시오. 는 "범주를 선택 *, categories_description.categories_name 카테고리, categories_description WHERE categories.categories_id = categories_description.categories_id 및 categories.parent_id = '$ _POST [ 카테고리 categories_name BY] ORDER "

또는

"는 카테고리를 선택한다. * categories_description.categories_description category.category_id = categories_description.categories_id AND categories.parent_id = ' ". $ _ POST [category]."ORDER BY categories_name "

관련 문제