2013-05-10 3 views
0

저는 PHP에 비교적 익숙하지 않고 한 가지 문제 만 고집합니다. 내 index.php 파일은 상태 목록을 표시하고 해당 상태를 올바르게 표시합니다. 각 주에는 알파벳순으로 나열된 상태에 해당하는 p_id 필드가 있습니다.올바른 부모의 데이터가 표시되지 않는 자식

고양이 테이블에 다음 필드가 포함 된 테이블이 있습니다 : p_id (부모 ID), 주 (주 이름), 도시 및 ID (모든 새 상태에 대해 재설정되는 자식의 ID).

select distinct state, p_id from cat order by state asc 

List_cities.php이 상태를 클릭 한 후 표시 다음 페이지입니다 : 이 나는 ​​상태를 채우기 위해 사용하는 쿼리입니다. 알라바마는 알파벳 순으로 첫 번째 상태이므로 부모 (p_id) = 1이됩니다. 알라바마 (또는 다른 모든 주)를 클릭하면 도시가 표시되지 않습니다. 그들은 고양이 테이블에 모두 나열되어 있습니다.

이것은 내가 도시를 표시하는 데 사용하는 쿼리는 다음과 같습니다

select p_id, id, city, state from cat where p_id="'.$p_id.'" order by p_id, id 

어떤 도움을 크게 감상 할 수있다! 감사합니다.

답변

1

것은 당신이 상상이 같은 상태 테이블 :

------------- 
id | state 
------------- 
1 | California 
2 | New York 
3 | Arizona 

하고 City 테이블과 같은 :

------------------------------ 
id | state_id | name 
------------------------------ 
1 |  1  | Los Angeles 
2 |  1  | San Diego 
3 |  1  | San Jose 

올바른 쿼리 상태를 검색 할은 다음과 같습니다

SELECT id, state FROM states ORDER BY state ASC; 

상태를 기반으로 도시를 검색하는 올바른 쿼리는 다음과 같습니다.

SELECT id, name, state_id FROM cities WHERE state_id = ?; 

분명히 PDO 클래스를 사용하면 작성할 수있는 것보다 더 안전하기 때문에 데이터베이스에 연결할 수 있습니다. 자세한 내용은 pdo manual을 확인하십시오. 그 '?' 실제로 PDO와 바인딩하는 매개 변수이므로 혼동하지 마십시오.

내가 알기로는 도시와 주 이름을 모두 지정하는 테이블 하나를 만들었습니다. 나는 분명히 그것들을 분리 할 것이고, 위에서 한 것처럼 두 개의 테이블을 만들 것입니다.

+0

대단히 감사합니다. Savas! 나는 pdo 매뉴얼을 읽을 것이고, 당신의 추천을 시도 할 것이다. – wilcan

+0

사용자가 어떤 답변이 귀하의 질문을 해결했는지 이해할 수 있도록 올바른 답을 표시하십시오. @wilcan – Shaokan

+0

도움이 된 것을 환영합니다. :) –

관련 문제