2010-07-02 2 views
0

사이트를 만들고 사용자가 사용자 지정 양식을 만들 수 있도록 허용해야합니다. 문제가있는 부분은 이러한 형식의 데이터를 저장하는 방법입니다. 사용자가 만든 필드이므로 데이터베이스에 해당 필드가 없습니다. 이것에 대해 가장 좋은 방법은 무엇입니까? 테이블을 수정하는 것은 잘못된 방법이라고 생각합니다. 모든 데이터를 배열에 넣고 직렬화 한 다음 필드에 저장하면 좋은 방법일까요?사용자 지정 양식 만들기 허용 및 데이터 저장

답변

1

겠습니까를 직렬화, 배열로 모든 데이터를 넣어 , 그리고 그것을 필드에 저장하는 것이 좋은 방법일까요?

데이터를 저장하면 데이터를 저장하더라도 개별 요소를 쿼리 할 수 ​​없습니다. 놀라 울 정도로 나쁜 장기적으로 아이디어입니다.

entity-attribute-value 모델을 살펴보십시오. 일부 엄격한 외래 키 검사로 백업 된 EAV를 사용하여 양식의 필드와 양식에 채워진 데이터까지도 표현할 수 있어야합니다.

이제 EAV는 완벽하지 않습니다. MySQL의 한계로 인해 특정 쿼리를 작성하는 것은 어려울 수 있지만 외부 코드로 해결할 수없는 것은 아닙니다. 그것은 여전히 ​​직렬화 된 데이터보다 10 배 더 낫습니다.

+0

감사합니다. 그것은 대단한 시작 인 것 같습니다. 그리고 나는 프로젝트의 전반적인 목적 인 무언가를 배우게 될 것입니다. 다시 한 번 감사드립니다! – birderic

0

아마도 완전한 양식의 값을 직렬화하여 blob에 데이터베이스에 저장할 수 있습니다.

0

아마 당신은 고체 형태 빌더 프레임 워크를 제공 (또는 기존 솔루션 수정) 모든 사용자 생성 필드가 이런 식으로 제어 할 수 있습니다 : 당신이 가고있다

//input elements named by a custom namespace: 
`<input type="text" name="mycustomelement[user_defined_name]" />` 

를 실행 한 다음, 사용자가 양식을 제출하면, 'mycustomelement'요소를 모두 잡아서 DB에 저장하도록 직렬화 할 수 있습니다.

0

그때 테이블 사용자 정의 폼 {ID, 사용자, 인덱스, 필드 이름, fieldtype} 및 userformresponses {ID, userformid, 필드 이름, 응답을} 저장하는 것

관련 문제