일반페이지에서 db에 저장된 데이터 불러오는 문제 문의

일반페이지에서 db에 저장된 데이터 불러오는 문제 문의

QA

일반페이지에서 db에 저장된 데이터 불러오는 문제 문의

본문

안녕하세요

일반페이지에서 DB에 저장된 데이터를 불러오려고 하는데 잘 안되서 이렇게 문의 드립니다.

소스코드는 다음과 같이 작성했습니다.

 

test.php


<?php
include_once('./_common.php');
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
add_stylesheet('<link rel="stylesheet" href="'.$g5_url.'/wm_page/map/style.css">', 0);    
 
$g5['title'] = $group['gr_subject'];
include_once(G5_PATH.'/board.head.php');
 
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
?>
 
<?php
$bo_table = "partner";
$wr_id = "wr_id";
 
$sql = "SELECT * FROM g5_write_".$bo_table." WHERE wr_id = '$wr_id'";
$result = sql_query($sql); // sql_query 함수를 사용하여 SQL 쿼리 실행
 
if ($result && mysqli_num_rows($result) > 0) {
    $data = array(); // 불러온 데이터를 저장할 빈 배열을 생성
 
    while ($row = mysqli_fetch_assoc($result)) {
 
        $data[] = array(
            'subject' => $row['subject'],
        );
    }
} else {
    $data = array();
}
 
// PHP 배열을 JSON 형식으로 변환하여 자바스크립트로 전달
echo '<script>';
echo 'const data = ' . json_encode($data) . ';';
echo '</script>';
?>

 
            <ul class="item_list">
            <script>
  // PHP에서 전달한 데이터를 사용
  const data = <?php echo json_encode($data); ?>;
 
  // ul 요소를 가져옵니다.
  const item_list = document.querySelector('.item_list');
 
  // data 배열을 순회하면서 li 요소를 추가
  data.forEach(item => {
    // 새로운 li 요소를 생성
    const li = document.createElement('li');
 
    // li 요소의 내용을 동적으로 생성
    li.innerHTML = `
      <div class="img">
      </div>
      <div class="info">
        <div class="tip">
          <div class="badge_wrap_mo"></div>
          <div class="badge_wrap">
            <div class="badge"></div>
          </div>
          <button class="wish_btn"><i class="fa fa-heart"></i></button>
          <p>테스트</p>
        </div>
        <div class="tit">
          <div class="price">${item.subject}</div>
 
        </div>
 
      </div>
    `;
 
    // ul 요소에 li 요소를 추가
    item_list.appendChild(li);
  });
</script>

이렇게 코드를 만들었는데 DB의 데이터를 불러오지 못하고 있습니다.

고수님들의 조언 부탁드리겠습니다.

즐거운 주말 되세요

이 질문에 댓글 쓰기 :

답변 4

include_once(G5_PATH.'/board.head.php');

// 데이터베이스에 연결

$conn = new mysqli(G5_MYSQL_HOST, G5_MYSQL_USER, G5_MYSQL_PASSWORD, G5_MYSQL_DB);

 

// 연결 확인

if ($conn->connect_error) {

    die("데이터베이스 연결 실패: " . $conn->connect_error);

} else {

    echo "데이터베이스 연결 성공<br>";

}

이렇게 해보세요

또는 다음과 같이 할수도 있습니다.

// 데이터베이스 연결 설정
/* $servername = "G5_MYSQL_HOST";
$username = "G5_MYSQL_USER";
$password = "G5_MYSQL_PASSWORD";
$dbname = "G5_MYSQL_DB";
 */
// 데이터베이스 연결
// $conn = new mysqli($servername, $username, $password, $dbname);

// 연결 확인
if ($conn->connect_error) {
    die("데이터베이스 연결 실패: " . $conn->connect_error);
}

8행에 있는 wr_id 가 잘못되었습니다

Test.php로 넘겨주는 곳이 없다면 삭제//쿼리에서도 삭제

 

 

안녕하세요 님 늦은 시간에 답변 주셔서 감사드립니다.
현재 DB에는 정상적으로 연결이 되었다고 나옵니다. 그런데 데이터를 불러오지를 못하는데요
혹시 시간이 되신다면 한번 검토해 주시겠어요.

조언 부탁드리겠습니다.

test.php


            <?php

$conn = new mysqli(G5_MYSQL_HOST, G5_MYSQL_USER, G5_MYSQL_PASSWORD, G5_MYSQL_DB);

// 연결 확인
if ($conn->connect_error) {
    die("데이터베이스 연결 실패: " . $conn->connect_error);
}/* else {

    echo "데이터베이스 연결 성공<br>";    
}*/

// 쿼리 작성 및 실행
$sql = "SELECT * FROM partner"; 
$result = $conn->query($sql);

// 데이터를 담을 배열 초기화
$data = array();

// 쿼리 결과 확인 및 데이터 추출
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        // 쿼리 결과에서 필요한 필드들을 배열로 저장
        $item = array(
            'wr_subject' => $row['wr_subject']
        );
        // 배열에 추가
        $data[] = $item;
    }
}

$conn->close();

echo json_encode($data);
?>

            <script>
  // ul 요소를 가져옴
  const item_list = document.querySelector('.item_list');

  // data 배열을 순회하면서 li 요소를 추가
  data.forEach(item => {
    // 새로운 li 요소를 생성
    const li = document.createElement('li');

    // li 요소의 내용을 동적으로 생성
    li.innerHTML = `
      <div class="img">
      </div>
      <div class="info">
        <div class="tip">
          <div class="badge_wrap_mo"></div>
          <div class="badge_wrap">
            <div class="badge"></div>
          </div>
          <button class="wish_btn"><i class="fa fa-heart"></i></button>
          <p>테스트 10098</p>
        </div>
        <div class="tit">
          <div class="price">${item.wr_subject}</div>
          <div class="desc">${item.desc}</div>
          <div class="loca">${item.loca}</div>
        </div>
        <div class="kwd">
          <span>${item.type}</span>
          <span>테스트 ${item.area}</span>
          <svg></svg>
        </div>
      </div>
    `;

    // ul 요소에 li 요소를 추가
    item_list.appendChild(li);
  });
</script>

// 쿼리 결과 확인 및 데이터 추출
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        // 쿼리 결과에서 필요한 필드들을 배열로 저장
        $item = array(
            'wr_subject' => $row['wr_subject']
        );
        // 배열에 추가
        $data[] = $item;
    }


디비가 제대로 연결되어다니 뭐 할말이좀 그렇긴한데요 그래도 이부분 체크해보세요.
이 부분은 쿼리 결과가 있을 경우에만 내부의 코드를 실행하는 부분이라는건 아시겠지만,
따라서 쿼리 결과가 없으면 데이터가 배열에 추가되지 않게 된다는거죠;;
<div class="price">${item.wr_subject}</div>
          <div class="desc">${item.desc}</div>
          <div class="loca">${item.loca}</div>

다음과 같이 해보세요..
// 쿼리 결과 확인 및 데이터 추출
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        // 쿼리 결과에서 필요한 필드들을 배열로 저장
        $item = array(
            'wr_subject' => $row['wr_subject'],
            'desc' => $row['desc'],
            'loca' => $row['loca'],
            'type' => $row['type'],
            'area' => $row['area']
        );
        // 배열에 추가
        $data[] = $item;
    }
}

코드를 만들었는데 DB의 데이터를 불러오지 못하고 있습니다.
==
이렇게 판단하신 증상이 무엇인가요?
JavaScript 에러가 있는지 확인해 보세요

echo 'const data = ' . json_encode($data) . ';';

이렇게 하면 JavaScript 에러가 날 듯하네요

echo 'const data = "' . json_encode($data) . '";';

따옴표가 필요 할 듯하네요

 

답변을 작성하시기 전에 로그인 해주세요.
전체 147
QA 내용 검색
filter #json ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT