728x90
다중으로 보내야 하는 경우 [] 괄호로 배열로 보내곤 하는데 이때 [] 괄호 안에 유니크한 번호를 넣으면 해당 번호를 기준으로 그룹 단위로 데이터를 테이블에 쌓을 수 있다. 요즘은 json 형태의 트리 구조로 데이터를 많이 잡기도 해서 조금 예스러운 코딩 일 수 있지만 종종 필요할 때가 있으니 참고하면 좋겠다.
아래는 form 태그와 php 백 단에서 어떻게 처리되는지 에시를 보여준다.
<form method="POST" action="/your-endpoint">
<table>
<tr>
<th>엘리베이터 여부</th>
<td>
<div class="com_chk__wrap">
<input type="hidden" name="cost_type[0]" value="189"> <!-- categories 189 : 엘리베이터여부 -->
<label><input type="radio" name="elevator_avail[0]" value="y">있음</label>
<label><input type="radio" name="elevator_avail[0]" value="n">없음 (있으나 사용 못 함)</label>
</div>
</td>
<td class="td_center"><input type="number" name="labor_cost[0]" class="input num" value=""></td>
<td class="td_center"><input type="number" name="margin_cost[0]" class="input num" value=""></td>
<td class="td_center"><span class="">30,000원</span></td>
</tr>
<tr>
<th>짐 여부</th>
<td>
<div class="com_chk__wrap">
<input type="hidden" name="cost_type[1]" value="188"> <!-- categories 188 : 짐 여부 -->
<label><input type="radio" name="luggage_avail[1]" value="y">있음</label>
<label><input type="radio" name="luggage_avail[1]" value="n">없음 (있으나 사용 못 함)</label>
</div>
</td>
<td class="td_center"><input type="number" name="labor_cost[1]" class="input num" value=""></td>
<td class="td_center"><input type="number" name="margin_cost[1]" class="input num" value=""></td>
<td class="td_center"><span class="">30,000원</span></td>
</tr>
<!-- 추가적인 tr 요소들... -->
</table>
<button type="submit">제출</button>
</form>
<?php
// 데이터베이스 연결
$mysqli = new mysqli("localhost", "username", "password", "database");
// 연결 확인
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// POST 데이터 수신
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 각 항목 반복 처리
foreach ($_POST['cost_type'] as $index => $costType) {
// 엘리베이터 여부
$availKey = 'elevator_avail[' . $index . ']';
$laborCostKey = 'labor_cost[' . $index . ']';
$marginCostKey = 'margin_cost[' . $index . ']';
$avail = isset($_POST[$availKey]) ? $mysqli->real_escape_string($_POST[$availKey]) : '';
$laborCost = isset($_POST[$laborCostKey]) ? (int)$_POST[$laborCostKey] : 0;
$marginCost = isset($_POST[$marginCostKey]) ? (int)$_POST[$marginCostKey] : 0;
$totalCost = $laborCost + $marginCost;
// INSERT 쿼리 작성
$query = "INSERT INTO estimate_extra_cost (est_number, cost_type, add_postion, title, title_code, etc1, labor_cost, margin_cost, total_cost) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
// 준비된 문을 사용하여 실행
$stmt = $mysqli->prepare($query);
// 필요한 값을 설정
$estNumber = 'E001'; // 실제 사용하려는 값으로 변경
$addPosition = 'etc'; // 필요에 따라 조정
$title = ($costType == 189) ? '엘리베이터 여부' : '짐 여부'; // 조건에 따라 제목 설정
$titleCode = ($costType == 189) ? 'CATEGORY_ELEVATOR' : 'CATEGORY_LUGGAGE'; // 카테고리 코드 설정
// 문장에 파라미터 바인딩
$stmt->bind_param("sssssiiiii", $estNumber, $costType, $addPosition, $title, $titleCode, $avail, $laborCost, $marginCost, $totalCost);
$stmt->execute();
}
// 준비된 문 종료
$stmt->close();
}
// 데이터베이스 연결 종료
$mysqli->close();
?>
728x90
'PHP' 카테고리의 다른 글
특정 영역 pdf 파일로 다운 스크립트(무료) (0) | 2024.11.26 |
---|---|
php mysql 견적서 번호 생성 유니크하게 (0) | 2024.11.24 |
php 파일을 pdf 로 다운로드 하는 방법 (0) | 2024.11.23 |
음수, 양수 변환 해서 저장하기 (1) | 2024.11.10 |
php 엑셀다운로드 업로드 spreadsheet (3) | 2024.11.09 |