2012-07-22 2 views
0

나는 게시물을 쓰고 태그를 지정할 수있는 프로젝트를 진행하고 있습니다. 결국 다른 사용자가 와서 최고의 게시물에 투표합니다.Codeigniter의 게시물에 대한 태그 작업

내가 태그 도전에 직면하기 전까지는 모든 것이 매력처럼 느껴졌습니다. 어떻게 처리 할 수있는 가장 쉬운 방법을 찾아야합니까?

나는 각 태그에 많은 태그를 할당하기 위해 다 대다 관계를 사용했습니다. 하지만 난 그들을 데이터베이스에 삽입하기 전에 어려움을 발견. 이러한 어려움에는 '이 태그가 이미 DB에 저장되어 있는지 어떻게 알 수 있습니까?'(물론 이름 필드를 UNIQUE로 지정했지만 누군가 미리 저장된 태그를 입력하면 codeigniter 오류가 발생합니다. . t 그것이 표시 할) .. 짧은 단어에 따라서

,이 솔루션을 내놓았다 :

  1. 이 DB에서 모든 태그를 가져옵니다.
  2. $ all 배열에 저장하십시오.
  3. 사용자가 입력 한 태그를 가져옵니다. 배열 $ 사용자
  4. 에서
  5. 스토어 그들은 교차 $는 foreach 루프
    • 쿼리 posts_has_tags 테이블의 ID를 삽입 현재 태그
    • 의 ID에 대한 태그 표
    • 을 존재합니다. 내가 태그 테이블에 태그를 삽입 각
      • 또 다른 만들 것 다른 배열
    • .
    • insert_id() $ id 가져 오기
    • posts_has_tags 테이블에 $ id를 삽입하십시오.

글쎄, 내가 그것을 혼란의 종류의 것을 알고있다. 특히 시간이 지남에 따라 조금씩 늘어날 수있는 배열을 반복 할 수 있습니다. 그래서 여러분에게 묻습니다 : 내가 맞습니까? 더 쉬운 방법이 있습니까 ..?

감사합니다.

SELECT * FROM `tags` WHERE `name`=:name_1 OR `name=:name_2 ... 

그런 다음 결과 태그를 가지고 사용자의 태그 배열에서 제거 할 수 있습니다 :

+0

태그가 실제로 고유해야하는 이유는 무엇입니까? –

+0

여행과 같은 특정 태그에 태그를 추가하려면 하나 이상의 게시물이 필요합니다. – adel

답변

0

이 작업을 수행 할 수있는 경우에만 두 개의 쿼리이 방법이

foreach ($user_tags as $tag) { 
    if (!in_array($tag, $db_tags)) { 
     $new_tags[] = $tag; 
    } 
} 

,하지만 난 경쟁 조건에서이 코드를 보호하는 방법에 대해 말할 수는 없습니다.