채택완료

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

2021-10-20 (수) 15:13:50 2,078

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개 / 댓글 4개

채택된 답변
+20 포인트
2021-10-20 (수) 15:25:18

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

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

답변에 대한 댓글 2개

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로 바꾸어주었습니다
짧은 두줄이었지만 많은 도움이 되었습니다
2021-10-21 (목) 02:29:36

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

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()을 활용해 보세요.

답변에 대한 댓글 2개

소중한 댓글 정말 감사합니다
앞에분 댓글을 보고 연구해서 replace와 concat으로 구현했습니다

php explode, implode , in_array 를 활용하면 될거같네요

답변을 작성하려면 로그인이 필요합니다.