체크박스 저장 질문이요
본문
저장하는 버튼 이구요
<form action="memo_save.php" method="post" enctype="multipart/form-data">
<button class="btn" style="float: right; margin-bottom: 20px;">저장하기</button>
</form>
체크박스 부분입니다.
<td rowspan="2" style="text-align: center; width: 10px;">
<input type="checkbox" name="checkbox_name[]" value="<?php echo $i; ?>">
</td>
이게 저장하는 파일입니다.
<?php
include_once('./_common.php');
// POST 데이터 가져오기
$counseling_check = isset($_POST['checkbox_name']) && in_array('1', $_POST['checkbox_name']) ? 1 : 0; // 불리언 값을 1 또는 0으로 저장
// b_write, v_write 데이터 확인
$sql = "SELECT b_write, v_write FROM memo";
$row = sql_fetch($sql);
if (!empty($row['b_write']) || !empty($row['v_write'])) {
// 이미 데이터가 있는 경우, 업데이트 쿼리 실행
$counseling_check = $counseling_check === 1 ? 0 : 1; // 값 반전
$sql = "UPDATE memo SET counseling_check = $counseling_check WHERE some_condition"; // some_condition은 실제 조건을 적용해야 함
if (sql_query($sql)) {
echo '<script>alert("저장되었습니다.");</script>';
echo '<script>window.location.href = "mybuyers.php";</script>';
} else {
echo '<script>alert("저장에 실패했습니다.");</script>';
echo '<script>window.history.back();</script>';
}
} else {
// 데이터가 없는 경우, 삽입 쿼리 실행
$counseling_check = $counseling_check === 1 ? 0 : 1; // 값 반전
$sql = "INSERT INTO memo (counseling_check) VALUES ($counseling_check)";
if (sql_query($sql)) {
echo '<script>alert("저장되었습니다.");</script>';
echo '<script>window.location.href = "mybuyers.php";</script>';
} else {
echo '<script>alert("저장에 실패했습니다.");</script>';
echo '<script>window.history.back();</script>';
}
}
?>
이렇게 했을때
no 상담여부 ------ ------
1 체크박스
2 체크박스
이렇게 있다고 하면 1번 2번 체크를 하면 두개다 저장이 되야 하는데 한개만 저장이 됩니다.
어떻게 수정을 해야하는 알려주실 수 있으신가여......ㅠㅠ
!-->!-->!-->답변 3
if (!empty($row['b_write']) || !empty($row['v_write'])) {
저장하는 페이지의 이 부분이 잘못되어 있습니다.
지금은 시간이 없어서 작성은 못해 드리는 데
나중에 샘픔 올려놓겠습니다.
이렇게 한번 해보시는건 어떠실까요?
<?php
include_once('./_common.php');
// POST 데이터 가져오기
$checkbox_values = isset($_POST['checkbox_name']) ? $_POST['checkbox_name'] : array();
// b_write, v_write 데이터 확인
$sql = "SELECT b_write, v_write FROM memo";
$row = sql_fetch($sql);
$counseling_check_values = array();
if (!empty($row['b_write']) || !empty($row['v_write'])) {
// 이미 데이터가 있는 경우, 기존 상담 여부 값을 가져옴
$counseling_check_values = array($row['b_write'], $row['v_write']);
}
foreach ($checkbox_values as $checkbox_value) {
if (in_array($checkbox_value, $counseling_check_values)) {
// 이미 상담 여부가 있는 경우, 값을 반전시켜 업데이트
$counseling_check_values = array_diff($counseling_check_values, array($checkbox_value));
} else {
// 상담 여부가 없는 경우, 값을 추가하여 삽입
$counseling_check_values[] = $checkbox_value;
}
}
// 업데이트 또는 삽입 처리
$sql = "UPDATE memo SET b_write = {$counseling_check_values[0]}, v_write = {$counseling_check_values[1]} WHERE some_condition";
if (sql_query($sql)) {
echo '<script>alert("저장되었습니다.");</script>';
echo '<script>window.location.href = "mybuyers.php";</script>';
} else {
echo '<script>alert("저장에 실패했습니다.");</script>';
echo '<script>window.history.back();</script>';
}
?>
앞뒤 내용을 알아야
적당한 코드를 적어 볼 수 있겠네요.