2011-01-13 3 views
3

나는 tag1, tag2, tag3와 같은 DB에 태그를 제출하고 있습니다. 내가 그들을 어떻게 링크하여 그들을 pharse 수있는 그런 다음 태그를 사용하여 다른 제출에 대한 DB를 쿼리 그들을 분할에 갈까요?PHP와 태그가있는 데이터베이스

+0

당신은 MySQL 데이터베이스를 사용하고 있습니까? 나눌 원래 입력은 무엇입니까? – amosrivera

+0

예, MySQL. 현재 데이터는 tag1, tag2, tag3 형식의 텍스트 상자를 통해 제출됩니다. – NikkiW

답변

4

태그를 별도의 테이블에 유지하고 레코드의 ID가 들어있는 필드를 사용하여 레코드에 링크해야합니다.

데이터베이스 내의 대부분의 일대 다 관계가 개별 테이블을 호출합니다. 쉼표로 분리 된 값은 데이터베이스를 그렇게 훌륭하게 만듭니다.

1

는 이해하기가 매우 잘 모르겠어요하지만 당신은 당신의 태그 문자열을 구문 분석하려면 다음을 사용할 수 있습니다

<?php 
    str=" tag1, tag2, tag3 "; 
    $array = explode(', ', trim(str)); 
?> 

당신은 일반적으로 내부에 3 개의 태그는 A 배열을 얻을 것이다.

하지만 태그를 하나씩 다른 테이블에 삽입하여 참조를 만들어야합니다.

+1

사소한 질문이지만 분해 후 트림해야하며 트림 후 분해하지 않아야합니다. 쉼표 앞뒤에 공백이있을 수 있습니다. 나는'array_map ('trim', explode (',', strtolower ($ str)))' – kijin

+0

사실을 사용한다. –

0

매우 간단하지만 매우 해킹하는 접근법은 시작과 끝 콤마로 태그를 입력하는 것이므로 ,tag1,tag2,tag3,tag4,입니다. where tag LIKE '%,tag2,%'을 쿼리하여 tag2를 얻을 수 있기 때문에 느립니다. 1을 통해 이것을 수행하는 방법이 있습니다. 많은 관계. 태그를 링크로 만들려면 1 개의 테이블에 게시물이 있고 1 개의 테이블에 태그가있는 구조를 살펴보아야합니다. http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html에는 몇 가지 테이블 구조와이 작동 방식에 대한 설명이 있습니다.