테스트 사이트 - 개발 중인 베타 버전입니다

체크박스 저장 질문이요 채택완료

swy11 2년 전 조회 2,664

저장하는 버튼 이구요

</p>

<p><form action="memo_save.php" method="post" enctype="multipart/form-data"></p>

<p><button class="btn" style="float: right; margin-bottom: 20px;">저장하기</button></p>

<p></form></p>

<p>

 

체크박스 부분입니다.

</p>

<p><td rowspan="2" style="text-align: center; width: 10px;"></p>

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

<p></td></p>

<p>

 

이게 저장하는 파일입니다.

</p>

<p><?php</p>

<p>include_once('./_common.php');</p>

<p> </p>

<p>// POST 데이터 가져오기</p>

<p>$counseling_check = isset($_POST['checkbox_name']) && in_array('1', $_POST['checkbox_name']) ? 1 : 0; // 불리언 값을 1 또는 0으로 저장</p>

<p> </p>

<p>// b_write, v_write 데이터 확인</p>

<p>$sql = "SELECT b_write, v_write FROM memo";</p>

<p>$row = sql_fetch($sql);</p>

<p> </p>

<p>if (!empty($row['b_write']) || !empty($row['v_write'])) {</p>

<p>// 이미 데이터가 있는 경우, 업데이트 쿼리 실행</p>

<p>$counseling_check = $counseling_check === 1 ? 0 : 1; // 값 반전</p>

<p>$sql = "UPDATE memo SET counseling_check = $counseling_check WHERE some_condition"; // some_condition은 실제 조건을 적용해야 함</p>

<p>if (sql_query($sql)) {</p>

<p>echo '<script>alert("저장되었습니다.");</script>';</p>

<p>echo '<script>window.location.href = "mybuyers.php";</script>';</p>

<p>} else {</p>

<p>echo '<script>alert("저장에 실패했습니다.");</script>';</p>

<p>echo '<script>window.history.back();</script>';</p>

<p>}</p>

<p>} else {</p>

<p>// 데이터가 없는 경우, 삽입 쿼리 실행</p>

<p>$counseling_check = $counseling_check === 1 ? 0 : 1; // 값 반전</p>

<p>$sql = "INSERT INTO memo (counseling_check) VALUES ($counseling_check)";</p>

<p>if (sql_query($sql)) {</p>

<p>echo '<script>alert("저장되었습니다.");</script>';</p>

<p>echo '<script>window.location.href = "mybuyers.php";</script>';</p>

<p>} else {</p>

<p>echo '<script>alert("저장에 실패했습니다.");</script>';</p>

<p>echo '<script>window.history.back();</script>';</p>

<p>}</p>

<p>}</p>

<p>?></p>

<p>

 

이렇게 했을때 
no     상담여부        ------   ------  
1        체크박스

2        체크박스

이렇게 있다고 하면 1번 2번 체크를 하면 두개다 저장이 되야 하는데 한개만 저장이 됩니다.

어떻게 수정을 해야하는 알려주실 수 있으신가여......ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

if (!empty($row['b_write']) || !empty($row['v_write'])) {
저장하는 페이지의 이 부분이 잘못되어 있습니다.
지금은 시간이 없어서 작성은 못해 드리는 데 
나중에 샘픔 올려놓겠습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

s
swy11
2년 전
네 감사합니다!
설국열차
2년 전
<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]}' ");
}

삭제하는 것인데 참고해서 하면 될것입니다.
설국열차
2년 전
<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 이 부분이 배열 값이 들어가야 할 것입니다.

댓글을 작성하려면 로그인이 필요합니다.

앞뒤 내용을 알아야

적당한 코드를 적어 볼 수 있겠네요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

2년 전

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

 

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

}

?>

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인