디비저장관련 질문 하겠습니다.

디비저장관련 질문 하겠습니다.

QA

디비저장관련 질문 하겠습니다.

답변 3

본문

안녕하세요 여러분?

그누보드에 입문한지 얼마안되서 어려운부분이 많습니다. 이번에는 저장관련부분 테스트 중인데요

다음과 같이 테이블G5_test_resultus을 임의로 하나 만들어 습니다. 그리고 저장 할려구 테스트 중인데요.. 그게 잘 않되네요... 고수님들 부탁드립니다.. 

<?php
include_once ('./_common.php');

if ($is_guest || !$is_member) {
    alert('회원만 이용하실 수 있습니다.', G5_URL);
    exit;
}

$mb_id = $member['mb_id'];
$mb = get_member($mb_id);

// 사용자 ID
$user_id = $mb['mb_id'];

// 데이타 생성 함수
function generateNumbers($max, $count) {
    $numbers = range(1, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $count);
}

// 데이타 생성
$test_numbers = generateNumbers(10, 20);

// 결과 데이터베이스에 저장
$numbers_json = json_encode($g5_test_numbers); 
$query = "INSERT INTO g5_test_results (user_id, numbers, created_at) VALUES ('$user_id', '$numbers_json', NOW())";
if ($conn->query($query) === TRUE) {
    echo "성공적으로 저장되었습니다.";
} else {
    echo "저장에 실패했습니다.";
}

// 데이터베이스 연결 종료
$conn->close();
?>

이렇게 하면 저장되어야 할것 같은데 실패 로 나타납니다. 어디에 문제점이 있을까요?
 

이 질문에 댓글 쓰기 :

답변 3

다음과 같이해볼 수 있을것 같습니다


<?php
include_once ('./_common.php');
if ($is_guest || !$is_member) {
    alert('회원만 이용하실 수 있습니다.', G5_URL);
    exit;
}
$mb_id = $member['mb_id'];
$mb = get_member($mb_id);
// 사용자 ID
$user_id = $mb['mb_id'];
// 데이타 생성 함수
function generateNumbers($max, $count) {
    $numbers = range(1, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $count);
}
// 데이타 생성
$test_numbers = generateNumbers(10, 20);
// 결과 데이터베이스에 저장
$numbers_json = json_encode($test_numbers); 
$query = "INSERT INTO g5_test_results (user_id, numbers, created_at) VALUES ('$user_id', '$numbers_json', NOW())";
// 데이터베이스 연결
$conn = sql_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);
if (!$conn) {
    die('데이터베이스 연결에 실패했습니다.');
}
if (sql_query($query, $conn)) {
    echo "성공적으로 저장되었습니다.";
} else {
    echo "저장에 실패했습니다.";
}
// 데이터베이스 연결 종료
sql_close($conn);
?>

 

1. $test_numbers 변수와 $g5_test_numbers 변수를 일치하게 수정.
2. $conn 변수를 데이터베이스 연결에 사용하도록 수정.
3. 테이블 이름을 g5_test_results로 수정.


<?php
// 그누보드 공통 파일 포함
include_once('./_common.php'); // 실제 경로로 수정

// 로그인 여부 체크
if ($is_guest || !$is_member) {
    alert('회원만 이용하실 수 있습니다.', G5_URL);
    exit;
}

// 사용자 ID
$user_id = $member['mb_id'];

// 데이타 생성 함수
function generateNumbers($max, $count) {
    $numbers = range(1, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $count);
}

// 데이타 생성
$test_numbers = generateNumbers(10, 20);

// 결과 데이터베이스에 저장
$numbers_json = json_encode($test_numbers);

// 데이터베이스에 저장
$sql = "INSERT INTO {$g5['test_results_table']} (user_id, numbers, created_at) VALUES ('$user_id', '$numbers_json', NOW())";
$result = sql_query($sql);

// 저장 결과 확인
if ($result) {
    echo "성공적으로 저장되었습니다.";
} else {
    echo "저장에 실패했습니다.";
}
?>



$mysql_host, $mysql_user, $mysql_password, $mysql_db 변수 대신 $g5 전역 변수를 사용으며. $g5 변수는 그누보드에서 정의되는 데이터베이스 정보를 포함하고 있습니다.

g5_test_results 테이블 대신 $g5['test_results_table'] 변수를 사용함. 이 변수는 그누보드 설정 파일에서 정의된 테이블 이름을 가져옵니다.

sql_query() 함수를 사용하여 쿼리를 실행. sql_query() 함수는 그누보드에서 데이터베이스 작업을 수행하는 데 사용되는 함수입니다.

g5_test_results 테이블이 데이터베이스에 올바르게 생성되었는지 확인.
데이터베이스 접속 정보가 올바른지 확인합니다. 그누보드 설정 파일(dbconfig.php)에서 $mysql_host, $mysql_user, $mysql_password, $mysql_db 값을 확인합니다.

참고로

$conn = sql_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);
if (!$conn) {
    die('데이터베이스 연결에 실패했습니다. 오류: ' . sql_error());
}

오류 메시지가 출력되어 데이터베이스 연결에 문제가 있는 경우 더 자세한 원인을 파악 할 수 있습니다

참고하셔서 테스트 해보세요

위에서  수정해야할게 뭐가있죠 디비 접근 방식이 틀린건가요? 아니면 개인적 테이블 접속은 로직세워야하는지요? 여러 방법으로 save를 시도 해봤지만 저장을안하니 미치겟습니다.. ㅋㅋ ajax 문제 있나 j쿼리가 문제 있나 다 확인 테스트 해보구 하다못해 text 데이타 저장식으로 했봣지만 다 정상적으로 세이브가 됩니다. 근데 디비만 안되요 ㅋ;; 환장하겠음.

구체적으로 원하시는게 어떤건지 파악하기가 어렵네요..
그냥 DB 저장하는 거라면 위의 방식으로하면 DB저장은 될텐데요..


$conn = sql_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);
if (!$conn) {
    die('데이터베이스 연결에 실패했습니다. 오류: ' . sql_error());
}

 이부분을 참고하셔서 DB 연결실패시 어떠한 오류 메세지가 출력되는지 확인해보세요

내 해결은 되었습니다 많은 답변 감사합니다.^^

참고로 요문제를.... 필드명도 체인지하고 암튼 이틀밤세서 요래 간략 하게 해결봄요 ---;;; 

<?php

include_once('./_common.php');

 

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    $mb_id = $_POST['mb_id'] ?? '';

    $numbers = $_POST['numbers'] ?? '';

 

    // 데이터베이스에 저장

    $numbers_json = json_encode($numbers);

 

    $sql = "INSERT INTO g5_test_results (mb_id, numbers, created_at) VALUES ('$mb_id', '$numbers_json', NOW())";

    $result = sql_query($sql);

 

    echo $result ? 'success' : 'error: ' . sql_error();

} else {

    echo 'Invalid request';

}

?>

 

근데 그누에서는 디비테이블 명 적을때 접두사명 안적도 되는것 아닌가요?

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