여분필드에 배열로 추가하고 빼기

여분필드에 배열로 추가하고 빼기

QA

여분필드에 배열로 추가하고 빼기

답변 3

본문

wr_1 = ,aaa,bbb,ccc,ddd

라고 이미 기록이 되어있다고 예를 들어봅니다.

저것은 특정멤버 id 들의 나열입니다.

 

그 게시글에 A,B 두개의 버튼이 있습니다.

 

A 버튼을 클릭하면

클릭한멤버(로그인한멤버)가 wr_1에 자신의 아이디(eee)가 없다면

저 나열 뒤에 ,eee (콤마와 자신의 아이디)를 추가합니다.

wr_1 = ,aaa,bbb,ccc,ddd,eee

 

1. 이걸 기록할수 있는 sql식

 

B 버튼을 클릭하면

클릭한멤버(로그인한멤버)가 wr_1에 자신의 아이디(bbb)가 있다면

,bbb (콤마와 자신의 아이디)를 나열에서 삭제합니다 

wr_1 = ,aaa,ccc,ddd

 

2. 이걸 수정할수 있는 sql식

 

이 두개를 알고싶습니다

 

콤마가 아니라 다른 특수한 부호를 넣어도 상관없으니

이게 가능할까요?

저게 된다면 여러가지를 구현할 수 있을것 같아서

질문드려봅니다!

 

+) 추가

그리고 확인식을 제가

preg_match($member['mb_id'],$view['wr_1'])

라고 만들어봤는데 왜 1이 안나오는지 모르겠네요 ㅠㅠ

먼저 db로 wr_1에 넣어놨고

분명 $member['mb_id'] 랑 $view['wr_1'] 는 따로 echo해보니 둘다 잘 뜨는데

왜 id가 일치하는 멤버임에도 preg_match 가 안나올까요...?

 

이 질문에 댓글 쓰기 :

답변 3

2번은 sql의 replace로 구현할수 있겠네요..

 

추가로 1번은 replace 먼저하고(없으면 변화가 없을테니까), concatenate 하면 되겠네요

replace가 정확하게 동작하려면
id1,id2,id3,
이런 식으로 끝에 ,가 있어야 하고
replace( wr_1, "$mb_id,", '')
이렇게 해 주어야,
id끼리 서로 포함관계가 생기는 경우 문제점을 해결할 수 있습니다.
(회원 1 번은 id가 abc,
회원 2 번은 id가 abcd,
이런 경우)

감사합니다
replace와 cacat로 해결했습니다!

왜인지 콤마나 다른 특수문자들로 구분하면 preg_match가 안먹고
엑스엠엘님 말처럼 아이디 앞부분까지 일치하는 회원이 있을수 있기에
아이디에는 들어갈수 없는 한글 ㄱ과ㄴ을 앞뒤에 추가해서
ㄴ1번회원idㄱㄴ2번회원idㄱ
으로 나열했습니다!

preg_match로 미리 ㄴ멤버idㄱ 가 있는지 판단후
있다면 replace로 삭제버튼
없다면 concat으로 덧붙이는 버튼을 보여주도록 했습니다

그리고 varchar(255)가 짧아서 문제될것 같아 그부분만 db에서 text로 바꾸어주었습니다
짧은 두줄이었지만 많은 도움이 되었습니다

보통?은 이런 관계를 위해서 별도의 테이블을 만듭니다.

bo_table, wr_id, mb_id, etc, 정도의 컬럼을 갖게 되겠죠.

 

추천하지는 않지만, 단순 문자열 data type(varchar,text 등등)으로 한다면

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_find-in-set

find_in_set()을 활용해 보세요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 806
© SIRSOFT
현재 페이지 제일 처음으로