채택완료

/data/dbconfig.php 에러

2023-07-17 (월) 20:47:40 3,947

안녕하세요.

이렇게 뜨는데 어떤 문제일까요?

고수님들의 조언 부탁드립니다.

감사합니다.

오류내용입니다.

Warning: include_once(/data/dbconfig.php): failed to open stream: No such file or directory in /www/alphastim.godohosting.com/bbs/qa_add_rusult.php on line 7

Warning: include_once(): Failed opening '/data/dbconfig.php' for inclusion (include_path='.:') in /www/alphastim.godohosting.com/bbs/qa_add_rusult.php on line 7

insert into g5_member_alphastim_anxiety (mb_id, mb_qa01, mb_qa02, mb_qa03, mb_qa04, mb_qa05) value ('abc', '예', '아니오', '1', '', '')

1062 : 중복된 입력 값 'abc': key 'g5_member_addinfo'

error file : /bbs/qa_add_result.php

qa_add.php 파일 내용입니다.

Copy
<form id="fregisterform" name="fregisterform" action="/bbs/qa_update.php" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
 
<input type="hidden" name="mb_id" value="<?php echo $_POST['$member["mb_id"]']; ?>">

<td class="qa01-a01"> <input type="radio" name="mb_qa01" value="예"<?php echo ($member['mb_qa01'] == "예") ? " checked" : "";?> required > 예 <br><br><input type="radio" name="mb_qa01" value="아니오"<?php echo ($member['mb_qa01'] == "아니오") ? " checked" : "";?>> 아니오 </td>

<br>

<td class="qa01-a01"> <input type="radio" name="mb_qa02" value="예"<?php echo ($member['mb_qa02'] == "예") ? " checked" : "";?> required > 예 <br><br><input type="radio" name="mb_qa02" value="아니오"<?php echo ($member['mb_qa02'] == "아니오") ? " checked" : "";?>> 아니오 </td>
<br>

<td class="qa02-a01">원하는 단계는?</td>
<td class="qa02-a01"><select name="mb_qa03" required><option value="1">1 단계</option><option value="2">2 단계</option><option value="3">3 단계</option><option value="4">4 단계</option><?php echo ($member['mb_qa03']) ? " checked" : "";?></select></td>
 
<div class="btn_confirm">
<input type="submit" value="<?php echo $w==''?'완료':'완료'; ?>" id="btn_submit" class="btn_submit" accesskey="s">
</div>

qa_add_result.php 내용입니다.

Copy
<?php

include_once('./_common.php');

include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');

include_once(G5_LIB_PATH.'/register.lib.php');

include_once(G5_LIB_PATH.'/mailer.lib.php');

include_once(G5_LIB_PATH.'/thumbnail.lib.php');

include_once('/data/dbconfig.php');


$mb_qa01 = $_POST['mb_qa01'];

$mb_qa02 = $_POST['mb_qa02'];

$mb_qa03 = $_POST['mb_qa03'];

$mb_qa04 = $_POST['mb_qa04'];

$mb_qa05 = $_POST['mb_qa05'];

$mb_id     = $_POST['mb_id'];


//===============================================================

    $sql = "insert into g5_member_addinfo

                (mb_id, mb_qa01, mb_qa02, mb_qa03, mb_qa04, mb_qa05)

                value ('$mb_id', '$mb_qa01', '$mb_qa02', '$mb_qa03', '$mb_qa04', '$mb_qa05')";

                 sql_query($sql,true);

echo $sql;


if($result)

{

    echo "<script>location.href='/bbs/qa_add_success.php'</script>";

} else {

    echo "<script>location.href='/bbs/qa_add_success.php'</script>";

}

?>

이렇게 했습니다.

그리고,

/data/dbconfig.php 에는 이렇게 추가했구요.

Copy
$g5['member_addinfo_table'] = G5_TABLE_PREFIX.'member_addinfo'; // 회원 추가 정보 테이블

3가지 조언 부탁드립니다.

1. 파일 경로에 dbconfig.php 파일이 없거나 dbconfig.php 오픈 권한이 없는 에러라고 하는데 어떻게 하면 될까요?

그리고,

2. 

<td class="qa02-a01">원하는 단계는?</td>
<td class="qa02-a01"><select name="mb_qa03" required><option value="1">1 단계</option><option value="2">2 단계</option><option value="3">3 단계</option><option value="4">4 단계</option><?php echo ($member['mb_qa03']) ? " checked" : "";?></select></td>

이 부분도 확인 부탁드립니다.

열심히 찾아봐서 만들었는데 오류가 생겼다 또 되었다 하는 것 같습니다.

3.

if($result)

{

    echo "<script>location.href='/bbs/qa_add_success.php'</script>";

} else {

    echo "<script>location.href='/bbs/qa_add_success.php'</script>";

}

?>

이 부분은 잘 모르겠어서 이렇게 했는데 제대로 할려면 어떻게 해야 할까요?

고수님들의 감사한 조언 부탁드립니다.

감사합니다.

답변 3개 / 댓글 5개

채택된 답변
+20 포인트
2023-07-17 (월) 21:27:15

원하시는 답변이 될지는 모르겠지만 다음과 같이 수정해 볼 수 있을 것 같습니다.

qa_add.php

Copy
<?php
include_once('./_common.php');
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
include_once(G5_LIB_PATH.'/register.lib.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
?>

<form id="fregisterform" name="fregisterform" action="/bbs/qa_update.php" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
  <input type="hidden" name="mb_id" value="<?php echo htmlspecialchars($_POST['$member["mb_id"]'] ?? '', ENT_QUOTES); ?>">

  <td class="qa01-a01">
    <input type="radio" name="mb_qa01" value="예"<?php echo ($member['mb_qa01'] == "예") ? " checked" : ""; ?> required> 예<br><br>
    <input type="radio" name="mb_qa01" value="아니오"<?php echo ($member['mb_qa01'] == "아니오") ? " checked" : ""; ?>> 아니오
  </td>

  <br>

  <td class="qa01-a01">
    <input type="radio" name="mb_qa02" value="예"<?php echo ($member['mb_qa02'] == "예") ? " checked" : ""; ?> required> 예<br><br>
    <input type="radio" name="mb_qa02" value="아니오"<?php echo ($member['mb_qa02'] == "아니오") ? " checked" : ""; ?>> 아니오
  </td>

  <br>

  <td class="qa02-a01">원하는 단계는?</td>
  <td class="qa02-a01">
    <select name="mb_qa03" required>
      <option value="1"<?php echo ($member['mb_qa03'] == "1") ? " selected" : ""; ?>>1 단계</option>
      <option value="2"<?php echo ($member['mb_qa03'] == "2") ? " selected" : ""; ?>>2 단계</option>
      <option value="3"<?php echo ($member['mb_qa03'] == "3") ? " selected" : ""; ?>>3 단계</option>
      <option value="4"<?php echo ($member['mb_qa03'] == "4") ? " selected" : ""; ?>>4 단계</option>
    </select>
  </td>
 
  <div class="btn_confirm">
    <input type="submit" value="<?php echo ($w == '') ? '완료' : '완료'; ?>" id="btn_submit" class="btn_submit" accesskey="s">
  </div>
</form>

필요한 PHP 라이브러리 파일들을 include_once를 통해 포함시킴
$member['mb_qa01']과 $member['mb_qa02'] 변수를 사용하여 라디오 버튼의 상태를 확인하고, checked 속성을 추가
$member['mb_qa03'] 변수를 사용하여 <select> 요소의 기본 선택 옵션을 설정하기 위해 selected 속성을 추가
전송 버튼의 값을 <?php echo ($w == '') ? '완료' : '완료'; ?>로 설정하여, $w 변수에 따라 버튼의 라벨을 다르게 표시

qa_add_result.php

Copy
<?php
include_once('./_common.php');
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
include_once(G5_LIB_PATH.'/register.lib.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
include_once(G5_LIB_PATH.'/thumbnail.lib.php');

$mb_qa01 = $_POST['mb_qa01'];
$mb_qa02 = $_POST['mb_qa02'];
$mb_qa03 = $_POST['mb_qa03'];
$mb_qa04 = $_POST['mb_qa04'];
$mb_qa05 = $_POST['mb_qa05'];
$mb_id = $_POST['mb_id'];

//===============================================================
$sql = "insert into g5_member_addinfo
            (mb_id, mb_qa01, mb_qa02, mb_qa03, mb_qa04, mb_qa05)
            values ('$mb_id', '$mb_qa01', '$mb_qa02', '$mb_qa03', '$mb_qa04', '$mb_qa05')";
$result = sql_query($sql, true);

if ($result) {
    echo "<script>location.href='/bbs/qa_add_success.php'</script>";
} else {
    echo "<script>alert('입력을 처리하는 동안 오류가 발생했습니다.');</script>";
    // 필요에 따라 추가적인 오류 처리 로직을 구현하시면 됩니다.
}
?>

include_once('/data/dbconfig.php'); 부분은 제거
$result 변수가 $sql 쿼리의 실행 결과로 설정
if ($result) 블록에서는 성공적으로 쿼리가 실행되었을 때의 동작을 수행
else 블록에서는 오류 처리에 대한 메시지 출력과 추가적인 오류 처리 로직 구현

답변에 대한 댓글 5개

안녕하세요.
답변 너무 감사니다.

그런데,
말씀하신데로 했는데 이런 에러가 뜹니다.
어떻게 하면 될까요?



insert into g5_member_aaddinfo (mb_id, mb_qa01, mb_qa02, mb_qa03, mb_qa04, mb_qa05) values ('abc', '예', '아니오', '1', '', '')

1062 : Duplicate entry 'abc' for key 'mb_id'

error file : /bbs/qa_add_result.php

감사합니다.
다음과 같이 추가해 보시는 건 어떨까요?

qa_add_result.php
[code]
$mb_id = $_POST['mb_id'];

// 중복된 항목 제거
$sql_check = "SELECT mb_id FROM g5_member_addinfo WHERE mb_id = '$mb_id'";
$result_check = sql_query($sql_check);
if (sql_num_rows($result_check) > 0) {
$mb_id = $mb_id . '_new';
}
[/code]

중복된 항목이 제거되면, 다시 데이터를 입력할 수 있습니다. 'mb_id' 값을 변경한 경우, 'qa_add.php' 파일에서 해당 값을 변경해주어야 합니다.
감사합니다.
행복한 하루 되세요.
안녕하세요.

답변 정말 감사드립니다.
그런데 추가 질문하나 드려도 될까요?


[code]
<td class="qa02-a01">원하는 단계는?</td>
<td class="qa02-a01">
<select name="mb_qa03" required>
<option value=""<?php echo ($member['mb_qa03'] == "") ? " selected" : ""; ?>>=선택=</option>
<option value="1"<?php echo ($member['mb_qa03'] == "1") ? " selected" : ""; ?>>1 단계</option>
<option value="2"<?php echo ($member['mb_qa03'] == "2") ? " selected" : ""; ?>>2 단계</option>
<option value="3"<?php echo ($member['mb_qa03'] == "3") ? " selected" : ""; ?>>3 단계</option>
<option value="4"<?php echo ($member['mb_qa03'] == "4") ? " selected" : ""; ?>>4 단계</option>
</select>
</td>
[/code]

이렇게 했을때
option value=""<?php echo ($member['mb_qa03'] == "") ? " selected" : ""; ?>>=선택=</option>
이 부분의 맨 위 값이 default 값으로 설정되어 "=선택=" 이 설정되는 것으로 알고 있는데 계속 "2단계"가 default 값으로 나오더라구요.
그러면 유저가 선택을 안하고 그냥 넘어가도 "2단계" 값이 선택되어 완료 버튼이 눌러지더라구요.

그래서

option value=""<?php echo ($member['mb_qa03'] == "") ? " selected" : ""; ?>selected>=선택=</option>

이렇게 해도 안되고

option value=""<?php echo ($member['mb_qa03'] == "") ? " selected" : ""; ?>selected disabled hidden>=선택=</option>

이렇게 해도 안되네요.

어떻게 하면 될까요?
조언 부탁드립니다.
감사합니다.
가능성이 높은 이유는 $member['mb_qa03']의 값이 항상 "2"로 설정되어 있거나 값이 비어있지 않기 때문인 것 같습니다. 다음과 같이 해볼 수 있을 것 같습니다.

[code]
<option value=""<?php echo ($member['mb_qa03'] == "") ? " selected" : ""; ?>>=선택=</option>
<option value="1"<?php echo ($member['mb_qa03'] == "1" || $member['mb_qa03'] == "") ? " selected" : ""; ?>>1 단계</option>
<option value="2"<?php echo ($member['mb_qa03'] == "2") ? " selected" : ""; ?>>2 단계</option>
<option value="3"<?php echo ($member['mb_qa03'] == "3") ? " selected" : ""; ?>>3 단계</option>
<option value="4"<?php echo ($member['mb_qa03'] == "4") ? " selected" : ""; ?>>4 단계</option>
[/code]


insert into g5_member_aaddinfo (mb_id, mb_qa01, mb_qa02, mb_qa03, mb_qa04, mb_qa05) values ('abc', '예', '아니오', '1', '', '')

1062 : Duplicate entry 'abc' for key 'mb_id'

error file : /bbs/qa_add_result.php
 

g5_member_aaddinfo 테이블에 동일한 값이 들어가서 중복 처리 되었다는 부분입니다.

중복으로 insert가 안되도록 처리해주시면 해결될꺼 같네요  

Copy
include_once('/data/dbconfig.php');

이 코드를 왜 넣으셨나요?

기본적으로 

Copy
include_once('./_common.php');

을 하시면 자동으로 dbconfig.php를 불러옵니다.

Copy
Warning: include_once(/data/dbconfig.php): failed to open stream: No such file or directory in /www/alphastim.godohosting.com/bbs/qa_add_rusult.php on line 7

이건 경로를 잘못 넣으셔서 나오는 경로 입니다.

다른곳에서 넣으실꺼면

Copy
include_once(G5_DATA_PATH.'/dbconfig.php');

으로 하시면 됩니다.

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