Posted
Filed under PHP
[원문 ] - http://semtle.tistory.com/entry/PHP%EC%97%90%EC%84%9C-%EB%8B%A4%EC%A4%91%EA%B0%92CheckBox-%EC%A0%84%EC%86%A1%ED%95%98%EA%B3%A0-%ED%8E%B8%EB%A6%AC%ED%95%98%EA%B2%8C-%EB%B0%9B%EA%B8%B0

현재 페이지에서 체크박스를 여러개 만들고 선택된 값을 넘겨서 받는것은 여간 귀찮은 일이 아니다.
우선 이제까지 해오던 방식을 살펴보면..


<input type="checkbox" name="cd0" value="20">x
<input type="checkbox" name="cd1" value="30">y
<input type="checkbox" name="cd2" value="100">z


[PHP Part]

$total = ;
for($i=0;$i<3;$i++){
$amount = $_POST['cd'.$i];
$total += $amount;
}
echo $total


위와 같이 폼네임을 각각 비슷하게(하지만 똑같지는 않게)만들고 PHP부분에서 포문을 돌려 폼네임을 만들어 POST값을 받아오는, 아주 불편한 방식이었다.

이제는 최근 알아낸 기법을 살펴보면..

<form action="testcheckbox.php" method="POST" name="form1">
<p>Name :
<input type="text" name="textfield">
</p>
<p>Course:
<input type="text" name="textfield">
</p>
<p>Tel No:
<input type="text" name="textfield">
</p>
<p>
<input type="checkbox" name="cd[]" value="20">
JAVA<br>
<input type="checkbox" name="cd[]" value="30">
PERL<br>
<input type="checkbox" name="cd[]" value="10">
PYTHON<br>
<input type="checkbox" name="cd[]" value="30">
C#<br>
<input type="checkbox" name="cd[]" value="90">
JYTHON<br>
<input type="checkbox" name="cd[]" value="100">
C++<br>
<input type="checkbox" name="cd[]" value="120">
PHP</p>
<p align="center">
<input type="submit" name="Submit" value="Join Now">
</p>
<p align="left"> <br>
</p>
</form><form action="testcheckbox.php" method="POST" name="form1">
<p>Name :
<input type="text" name="textfield">
</p>
<p>Course:
<input type="text" name="textfield">
</p>
<p>Tel No:
<input type="text" name="textfield">
</p>
<p>
<input type="checkbox" name="cd[]" value="20">
JAVA<br>
<input type="checkbox" name="cd[]" value="30">
PERL<br>
<input type="checkbox" name="cd[]" value="10">
PYTHON<br>
<input type="checkbox" name="cd[]" value="30">
C#<br>
<input type="checkbox" name="cd[]" value="90">
JYTHON<br>
<input type="checkbox" name="cd[]" value="100">
C++<br>
<input type="checkbox" name="cd[]" value="120">
PHP</p>
<p align="center">
<input type="submit" name="Submit" value="Join Now">
</p>
<p align="left"> <br>
</p>
</form>

[PHP Part]

<?php
$totalprice = 0;
foreach($_POST['cd'] as $cd) $totalprice += $cd;
echo "$totalprice";
?>


폼네임을 "cd[]" 이런식으로 네임 끝에 배열 기호인 '[]' 을 붙이면, POST값으로 넘어가서는 '[]' 부분을 뺀 나머지 부분 즉 'cd' 부분이 POST의 배열의 연관배열 인덱스가 되어 참조할수 있다.
2010/12/02 11:24 2010/12/02 11:24