체크박스 저장 질문이요

체크박스 저장 질문이요

QA

체크박스 저장 질문이요

답변 3

본문

저장하는 버튼 이구요


<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'])) {
저장하는 페이지의 이 부분이 잘못되어 있습니다.
지금은 시간이 없어서 작성은 못해 드리는 데 
나중에 샘픔 올려놓겠습니다.

<input type=checkbox name=chk_od_id[] value='<?=$row[od_id]?>'>

for($i=0;$i<count($chk_od_id);$i++){
        sql_query(" DELETE FROM {$write_table}_order WHERE od_id = '{$chk_od_id[$i]}' ");
        sql_query(" DELETE FROM {$write_table}_order WHERE wr_parent = '{$chk_od_id[$i]}' ");
}

삭제하는 것인데 참고해서 하면 될것입니다.

<input type="checkbox" name="checkbox_name[]" value="<?php echo $i; ?>">

for($i=0;$i<count($checkbox_name);$i++){
$sql = "UPDATE memo SET counseling_check = $counseling_check WHERE some_condition";


$counseling_check 이 부분이 배열 값이 들어가야 할 것입니다.

이렇게 한번 해보시는건 어떠실까요?

 

<?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>';

}

?>

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 226
© SIRSOFT
현재 페이지 제일 처음으로