하나의 폼안에서 2개이상의 액션이 필요할때

좋은 방법들이 많이 있군요. 🙂
자바스크립트를 이용한 방법은 일단 제쳐 두고, 하나의 폼 안에 여러개의 submit 버튼을 이용한 경우를 정리해 보겠습니다.

1. submit 버튼의 name을 동일하게 한 경우.





myscript.php:
switch ($_POST[‘action’]) {
case ‘주소록에 기록’:

break;
case ‘스팸목록에 기록’:

break;
case ‘삭제’:

break;
}

2. submit 버튼의 name을 동일하게 한 경우 두번째 예제.





myscript.php:
$keys = array_keys($action);
$action = $action[0];
$match = “/[a-zA-Z0-9]+/”;
if (preg_replace($match, ”, $action)) die (“액션 오류!!”);
if (!file_exists(“./$action.php”)) die (“파일을 찾을 수 없음”);
else include “./$action.php”;

3. 이미지 버튼을 이용할 경우.





myscript.php:
if ($_POST[‘add_address_x’] { … }
else if ($_POST[‘add_spam_x’] { … }
else if ($_POST[‘remove_x’] { … }
else { … }

참고: 이미지 버튼의 경우 $_POST 배열에 [이미지_x] => 20, [이미지_y] => 12 이런식으로 들어가기 때문에 ‘_x’를 이미지 이름 뒤에 붙였습니다.

마지막으로 PHP의 경우 submit 버튼의 name에 직접 key=value&key2=value2 식으로 하던 것을 2번째 예에서 처럼 배열로 넘기는 것이 더 간결하고 효율적일 것 같습니다.

참고로 Perl에서 구현하여 사용하고 있는 것은 다음과 같습니다. 넘어 온 submit 버튼의 name 쿼리를 파싱하여 $IN에 넣어 사용합니다.
$query가 CGI.pm의 개체라고 가정합니다.
my $IN;
for ($query->param) {
for (split /&/) {
/^([^=]+)=(.*)/ or next;
my ($key, $val) = ($query->unescape($1), $query->unescape($2));

$query->param($key => $val);
}
}

foreach ($query->param) {
$IN->{$_} = join “”, $query->param($_);
}

바쁘다 바빠~~

같은 데이터베이스를 사용하는 사이트 2개를 동시에 리뉴얼하려니
머리가 쑥쑥 빠진닷!!!
8시에 출근해서 밥 먹기전까지 초비상상태~
대충 마무리 됐고 밥먹고 지금은 휴식중…. 휴..

잘지내고 있네 ^^

넘 오랫만이라 쑥쓰럽네 ^^;;
서울나와 산지 이제 2년이 되가나보다.
가끔 문자 받을 때마다 못간다고 답하기도 미안하고 해서 안하던게
점점 더 미안해져 답을 계속 못하고.. 반복되고.. ㅡㅡㅋ

2세 많이 컸는걸? 똘망똘망하니.. 귀엽네..
이사한다 소리 한~~~참전에 들었는데 어디사누?
밑에 용학이도 보이는데.. 언제 얼굴함 봐야할텐데 말여.. ^^

리눅스마스터 1급

한 3년전엔가 리눅스마스터 1급 시험을 봤고 1회차 시험에서 합격을 했다.
민간자격증이라 그냥 잊어버리고 있었는데 올해초 국가공인자격증으로 전환이
됐고 기존 자격증소지자에 대한 협회의 방침때문에 난리가 난 적이 있었다.
평소에도 무용지물이라 그냥 버릴까 하다가 오늘 접속해보니 기존 민간자격증
소지자들에 대해 1회에 한해 무료로 응시할 수 있게 공지를 해놨다.
8월 21일이 필기시험이니까 한달전쯤부터는 공부를 시작해야지싶다.
필기야 붙을거고 12월 4일 실기가 문제네.. 공부하기 싫은데… ^^;
그래도 붙어서 면허증빼고 국가공인자격증 하나 가져보자~~~~