Nội quy chuyên mục: Để được trợ giúp nhanh nhất, vui lòng cung cấp các thông tin về phiên bản NukeViet 3, môi trường thử nghiệm (Máy chủ, phiên bản php, phần mềm server....).
#151928 gửi bởi dangquan045
Ngày 10 Tháng 01 2014 , 22:45
Mình đang làm 1 trang địa ốc (hao hao trang này: http://diaoconline24h.vn/).
Trong này có 2 cái block: Danh mục Quận huyện và block tìm kiếm đều sử dụng Ajax để lấy danh sách quận huyện khi select 1 tỉnh nào đó.
Mình có 1 bảng là: nv_vi_diaoc_rows(id, province_id, district_id, ...)
Ngoài ra còn có thêm bảng province và district để lưu tên tỉnh và tên quận.
Do chưa biết sử dụng trong nuke nó như thế nào cả. Bạn nào biết chỉ giùm mình với.
Xin đa tạ ạ.
Sửa lần cuối bởi ciara205 vào Ngày 11 Tháng 01 2014 , 22:51, với tổng số 1 lần sửa.
#151946 gửi bởi dangquan045
Ngày 11 Tháng 01 2014 , 06:03
Không ai trả lời thì mình tự trả lời.

- Trong blocks/block.xxx.php dùng đoạn code này để truy vấn danh sách tỉnh thành
Mã: Chọn hết
$sql = "SELECT * FROM `" . NV_PREFIXLANG . "_location_province` order by `title` ASC ";
$result = $db->sql_query($sql);
while ( $row = $db->sql_fetchrow( $result ) )
{
$sl = ( $idtinh == $row['id'] ) ? " selected=\"selected\"" : "";
$xtpl->assign( 'selected_tinhthanh', $sl );
$xtpl->assign( 'key_tinhthanh', $row['id'] );
$xtpl->assign( 'value_tinhthanh', $row['title'] );
$xtpl->parse( 'main.tinhthanh' );
}


- Trong blocks/block.xxx.tpl:
Mã: Chọn hết
<div class="columns">
<span class="col1">Tỉnh TP</span>
<span class="col2">
<select name ="province_select" id="" onchange="gettinh(province_select);">
<option value="0">--Chọn--</option>
<!-- BEGIN: tinhthanh -->
<option value="{key_tinhthanh}" {selected_diaoc}>{value_tinhthanh}</option>
<!-- END: tinhthanh -->
</select>
</span>
</div>

<div class="columns">
<span class="col1">Huyện</span>
<span class="huyen" id="huyenthi">
</span>
</div>
<script type="text/javascript">
function gettinh( obj ){
var id = $(obj).val();
$("#huyenthi").load(nv_siteroot + 'index.php?'+ nv_lang_variable +'='+nv_sitelang+'&'+nv_name_variable + '=diaoc&' + nv_fc_variable + '=loadtinh&id='+id);
}
</script>

Hàm gettinh() các bạn có thể viết ở trong file user.js để dùng chung cho những chỗ khác.

- Và đây là file loadtinh.php (Trong thư mục funcs):
Mã: Chọn hết
<?php
/**
* @Project NUKEVIET 3.0
* @Author Dang Quan
* @Copyright (C) 2010 VINADES ., JSC. All rights reserved
* @Createdate Jan 10, 2014 11:32:04 AM
*/
if ( ! defined( 'NV_IS_MOD_DIAOC' ) ) die( 'Stop!!!' );
$id = $nv_Request->get_int( "id", "get", 0 );
$idhuyen = $nv_Request->get_int( "idhuyen", "get", 0 );
$html = "<select name=\"huyenthi\" onchange='getValueContryBlock(this);'>";
if ( $id > 0 )
{
//$html .= "<option value=\"0\">".$lang_module['tinhthanh']."</option> ";

$sql = "SELECT `id`, `title` FROM `" . NV_PREFIXLANG . "_location_district` WHERE `status` =1 AND `idprovince` = " . $id . " ORDER BY `weight` ASC";
$result = $db->sql_query( $sql );
while ( $row = $db->sql_fetchrow( $result ) )
{
$sl = ( $idhuyen == $row['id'])? "selected='selected'" : "";
$html .= "<option value=\"" . $row['id'] . "\" ".$sl.">" . $row['title'] . "</option> ";
}
}
//else $html .= "<option value=\"0\">--Chọn--</option>";
$html .= "</select>";
include ( NV_ROOTDIR . "/includes/header.php" );
echo $html;
include ( NV_ROOTDIR . "/includes/footer.php" );

?>