묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
배열에 관한 질문입니다.억지로 만들다 보니 한계에 부딪혀서...
2003.06.05 18:54
쉽게 설명드리고자 예를 하나듭니다.
미팅사이트에서 여성그룹회원들이 있고 남성 그룹회원들이 있습니다.
남성중 한명이 여성회원들의 프로필을 열람하면서 맘에드는 여성을 데이트 상대로 10명까지 선택을 해놓을 수 있는 기능을 만들고자 합니다.
맘에드는 여성회원들의 번호를 선택할 때 마다
|45
|67
|19
.
.
.
이런식으로 업데이트 되어서 남성회원의 candi라는 필드에 10개정도의 번호가 저장이 됩니다.
위에것들 대로 저장된 candi 필드값을 불러보면
|45|67|19 ... 이라는 값들이 들어있습니다.
이것을
$array = explode("|",$row[candi]);
$list = array ($array[1],$array[2],$array[3],$array[4],$array[5],$array[6],$array[7],$array[8],$array[9],$array[10]);
해주고 echo $array[1]; 하면 45 라는 값이 출력되고
echo $array[2]; 하면 67
echo $array[3]; 하면 19
이런식으로 얻은 번호를 이용해서 데이터 베이스에서 상대방 필드값들을 불러옵니다.
제가 막히는 부분이 여기서 부터인데
선택기능이 있듯이 삭제 기능을 만들어 주려고 합니다.
가령 $array[] 값중에 하나를 선택해서 지우는 것이지요.
제가 가진책에 배열에 관한 함수들을 보면 배열중의 특정값을 택해서 지우는 함수가 나와 있지를 않은데
특정값을 택해서 지우는 방법이 혹시 있을까요?
만약 없다면 다른 어떤방법으로 구사하면 될지 조언좀 부탁드립니다.
미팅사이트에서 여성그룹회원들이 있고 남성 그룹회원들이 있습니다.
남성중 한명이 여성회원들의 프로필을 열람하면서 맘에드는 여성을 데이트 상대로 10명까지 선택을 해놓을 수 있는 기능을 만들고자 합니다.
맘에드는 여성회원들의 번호를 선택할 때 마다
|45
|67
|19
.
.
.
이런식으로 업데이트 되어서 남성회원의 candi라는 필드에 10개정도의 번호가 저장이 됩니다.
위에것들 대로 저장된 candi 필드값을 불러보면
|45|67|19 ... 이라는 값들이 들어있습니다.
이것을
$array = explode("|",$row[candi]);
$list = array ($array[1],$array[2],$array[3],$array[4],$array[5],$array[6],$array[7],$array[8],$array[9],$array[10]);
해주고 echo $array[1]; 하면 45 라는 값이 출력되고
echo $array[2]; 하면 67
echo $array[3]; 하면 19
이런식으로 얻은 번호를 이용해서 데이터 베이스에서 상대방 필드값들을 불러옵니다.
제가 막히는 부분이 여기서 부터인데
선택기능이 있듯이 삭제 기능을 만들어 주려고 합니다.
가령 $array[] 값중에 하나를 선택해서 지우는 것이지요.
제가 가진책에 배열에 관한 함수들을 보면 배열중의 특정값을 택해서 지우는 함수가 나와 있지를 않은데
특정값을 택해서 지우는 방법이 혹시 있을까요?
만약 없다면 다른 어떤방법으로 구사하면 될지 조언좀 부탁드립니다.
댓글 6
-
오한호
2003.06.07 20:34
-
힘찬연못
2003.06.05 22:51
다른 좀 고수적인 방법은 몰르겠구요..^^;
일단 |45|67|19 요값을 불러옵니다.
여기서 str_replace("|45","",$array);
뭐이런식으로 지울수 있겠죠.
그런다음
update set으로 다시 저장하는방식이 있을수도 있겠내요. -
오한호
2003.06.06 00:09
힘찬님 답변주셔서 감사합니다.^^
힌트좀 얻으려고 공개쇼핑몰 소스부분중에 "장바구니 담기" 소스부분과 "액션" 부분(구현방식이 비슷할것 같아서) 을 보았더니
저같이 이렇게 힘들게 만들지 않고 따로 테이블과 필드를 생성해주고 그곳에 입력을 했더라구요.그렇게 되면 회원이 많아지고 상품을 많이 장바구니에 담아 놓는다면 너무 많은 데이터 베이스 저장 공간이 필요해질텐데...(초보자의 괜한 걱정인가?)
지금 구현하는 방식을 성공한다면 데이터 베이스 효율면에서는 더낳을 것도 같은데요.
어쨋든, 님께서 주신 방법과 더불어 좀더 연구해봐야 겠네요.
하다가 정 안되면 하는 수 없이 테이블과 필드를 만들어주면 그렇게 어렵지는 않을 것 같기도 합니다.
다시한번 감사드리고 행복하세요. -
힘찬연못
2003.06.06 00:47
^^ 너무 감사한말씀을 내 님도 행복하세요 -
오한호
2003.06.06 01:07
금방 다녀가셨네요^^
님덕분에 성공한것 같습니다.
변수 찍어보니 님의 말씀대로 되는데요.
소스 적어보겠습니다.
$array = explode("|",$row[ggim]);
$list = array ($array[1],$array[2],$array[3],$array[4],$array[5],$array[6],$array[7],$array[8],$array[9],$array[10]);
$rearray = "|$array[1]|$array[2]|$array[3]|$array[4]|$array[5]|$array[6]|$array[7]|$array[8]|$array[9]|$array[10]";
$res = str_replace("|$num","",$rearray);
echo ("$res");
이렇게 하니까 신기하게 되더라구요.
조금더 보완해야 할 것이 남아 있지만 완성할 수 있을 것 같구요.
다시한번 감사드리구요.오늘 다시 이글을 보실지 모르겠지만
좋은꿈 꾸세요.
제가 사실 이 것을 에러없이 해내느라고 거의 열흘 이상을 헤맷답니다.^^ -
힘찬연못
2003.06.06 01:31
^^ 아 그러셧다니 다행이내요..
좀더 말씀드릴것이 ^^
$res = '';
$array = explode("|",$row[ggim]); // explode의 return 값은 배열로 이미 $array[] 값이 들어가있습니다.
for($i=1;$i<count($array);$i++){
if(eregi($num,$array[$i]){
$res .= str_replace($num,"",$array[$i]);
}else{
$res .= "|".$array[$i];
}
}
이게 될지는 몰르겠지만..
뭐 이렇게하면 타이핑하는 귀차늠이 좀 덜할듯 해서요..^^;;;
이해가 되지 않는 부분이 있지만 이기회에 정규표현식에 대해 공부좀 해야 겠네요.^^
하여튼 너무 감사합니다.