2011-11-20 2 views
-1

그래서 "db"테이블과 "metro"라는이 테이블의 열이 있습니다. 내가 같은 문자열 "역 이름 1, 역 이름이, 역-이름 5"array_unique가 explode()에서 작동하지 않는 이유는 무엇입니까?

지금 선택 지하철역과 검색 양식을하고있어,이 같은 내 코드 모양이 "지하철"에 :

<select name="categoryID"> 
<? 

$metro_sql=mysql_query("SELECT metro FROM schools"); 
while($metro=mysql_fetch_array($metro_sql)){ 
    $metro_pieces = explode(", ", $metro['metro']); 
     foreach (array_unique($metro_pieces, SORT_REGULAR) as $metro_all) { 
      echo "<option value=\"".$metro_all."\">".$metro_all."</option>\n "; 
    } 
} 

그리고 결과 : 지하철 역 1 지하철 역이 지하철 역 3 지하철 역 1 지하철 역 4 지하철 역 5 등 내가 잘못 무엇입니까? p.s. 내 영어로 미안해.

+1

가능성이 가장 높은 문제가 귀하의 질문에 관련없는 –

+0

을 그들 고유하지 않은 구성하는 필드 값에 공백이지만, 더 정상화되었으므로 이런 식으로 처리하지 않아도됩니다. 관계형 데이터베이스에 쉼표로 구분 된 데이터를 저장하는 것은 거의 항상 나쁜 생각입니다. – Corbin

답변

1

루프의 내부 var_dump($metro);에서

시작은 내가 더 나은 데이터베이스 설계를 제안했다.

CREATE TABLE school (
    school_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(255) 
); 

CREATE TABLE station (
    station_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name VARCHAR(255) 
); 

CREATE TABLE metro (
    school_id INT NOT NULL, 
    station_id INT NOT NULL, 
    UNIQUE INDEX (school_id, station_id) 
); 

당신은 station에서 school에서 학교와 방송국을 만들 수 있습니다. 학교를 역에 연결해야하는 경우 metro에 레코드를 추가합니다. 이로 인해 database normalized이됩니다. 그런 다음 방송국을 얻을 필요하면

, 당신은 단순히 수행하여 데이터 경우

SELECT station.* 
FROM metro 
INNER JOIN station 
ON metro.station_id = station.station_id 
WHERE metro.school_id = $school_id 
+0

네, 가지고있는 것보다 훨씬 낫지 만 불행히도 학교 정보에 대한 양식을보고 편집하고 업데이트 할 수있는 코드를 이미 작성했습니다.이 모든 것을 다시 작성하는 데 많은 시간이 걸릴 것입니다. – user1056252

+0

나중에 수정해야하는 경우 더 많은 시간이 걸릴 수 있습니다. 디자인 할 때 문제를 해결하는 것이 더 쉽고, 코드를 작성할 때 문제를 해결하기가 어렵고, 배포 할 때 더 어려워지며 코드를 새로 도입해야 할 때 어려워집니다. 가능한 한 빨리 오류를 수정하는 것이 좋습니다. 길게 길수록 시간과 비용이 많이 듭니다. –

2

논리적 인 문제가 있습니다.
엄밀히 말하면 "array_unique가 작동하지 않는다"고 말할 수 없습니다.
12 개의 다른 기능이 관련되어 있기 때문에.
그리고이 함수가 정확한 데이터와 함께 제공되는지는 알 수 없습니다.

코드를 디버그하려면 을 알아야합니다.
코드에 디버깅 출력을 추가하고 모든 변수의 상태가 원하는 데이터를 포함하는지 확인하십시오.

+0

조언을 주셔서 감사합니다. bool (false) – user1056252

+0

**를 ** 루프 내부에서 ** 외부로 반환하지 않습니다! –

+0

죄송합니다. 루프 내부에 아무것도 없습니다. – user1056252

관련 문제