Hướng dẫn thay đổi bảng hay trường dữ liệu mà không cần cài đặt lại module

Thứ ba - 07/07/2020 21:36
Trong quá trình phát triển hoặc chỉnh sửa module trong Nukeviet bạn cần thay đổi csdl mà không cần đăng nhập vào mysql hoặc cần update dữ liệu cho khách hàng mà không làm ảnh hướng tới dữ liệu hiện tại của website. Dưới đây là cách thực hiện.
Ở đây mình sẽ hướng dẫn làm với module shops, các bạn có thể áp dụng với các module khác.

- B1 : Tạo 1 file php với nội dung như bên dưới . Ở đây mình đặt là shops.update.php 
 
<?php
/**
 * @Project NUKEVIET 4.x
 * @Author VINADES.,JSC (contact@vinades.vn)
 * @Copyright (C) 2015 VINADES.,JSC. All rights reserved
 * @License GNU/GPL version 2 or any later version
 * @Createdate Wed, 02 Dec 2015 08:26:04 GMT
 */
define('NV_SYSTEM', true);

// Xac dinh thu muc goc cua site
define('NV_ROOTDIR', pathinfo(str_replace(DIRECTORY_SEPARATOR, '/', __file__), PATHINFO_DIRNAME));

require NV_ROOTDIR . '/includes/mainfile.php';
require NV_ROOTDIR . '/includes/core/user_functions.php';

// Duyệt tất cả các ngôn ngữ
$language_query = $db->query('SELECT lang FROM ' . $db_config['prefix'] . '_setup_language WHERE setup = 1');
while (list ($lang) = $language_query->fetch(3)) {
    $mquery = $db->query("SELECT title, module_data FROM " . $db_config['prefix'] . "_" . $lang . "_modules WHERE module_file = 'shops'");
    while (list ($mod, $mod_data) = $mquery->fetch(3)) {
        $_sql = array();

        $_sql[] = "ALTER TABLE " . $db_config['prefix'] . "_" . $mod_data . "_rows ADD product_test VARCHAR(50) NOT NULL DEFAULT '';";

        // Đối với website đa ngôn ngữ thì bạn cần thêm biến $lang
        $_sql[] = "ALTER TABLE " . $db_config['prefix'] . "_" . $mod_data . "_rows ADD " . $lang . "_product_test2 VARCHAR(50) NOT NULL DEFAULT '';";
        if (! empty($_sql)) {
            foreach ($_sql as $sql) {
                try {
                    $db->query($sql);
                } catch (PDOException $e) {
                    //
                }
            }
            $nv_Cache->delMod($mod);
        }
    }
}

die('OK');

- B2 : Bạn upload file vừa tạo lên ngang hàng với index.php . Sau đó chạy file này lên . Có thông báo ok là bạn đã thành công.

- B3 : Sau khi chạy xong bạn nên xoá file trên.

Chúc các bạn thành công !

Tổng số điểm của bài viết là: 10 trong 2 đánh giá

Xếp hạng: 5 - 2 phiếu bầu
Click để đánh giá bài viết

  Ý kiến bạn đọc

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây