10/10/2018, 10:25
box select thành phố - quận huyện [php + mysql]
db mình gồm có 2 bảng là thongtin và noidung, trong đó các cột trong bảng:
thongtin: id, thanhpho, quan.
noidung : idtp, idq, noidung.
khi mình tạo form nhập liệu thì có phần select thành phố và quận/huyện tương ứng, bằng cách sử dụng javascript sau:
với ý tưởng dùng $_POST để lấy id của thanhpho và quan từ bảng thongtin để ghi vào bảng noidung, mình code:
xem như việc lấy id của thành phố đã xong, nhưng công việc lấy id của quận/huyện thì mình bế tắc hoàn toàn. mong các bác cho ý kiến! thanks!
hoặc có thể có cách khác giải quyết vấn đề mong mọi người chỉ dùm.
thongtin: id, thanhpho, quan.
noidung : idtp, idq, noidung.
khi mình tạo form nhập liệu thì có phần select thành phố và quận/huyện tương ứng, bằng cách sử dụng javascript sau:
Code:
<script type="text/javascript"> var states = new Array(); states['1'] = new Array('Quận 1','Quận 2','Quận 3'); states['2'] = new Array('Quận 4','Quận 5','Quận 6'); function setStates() { cntrySel = document.getElementById('country'); stateList = states[cntrySel.value]; changeSelect('state', stateList, stateList); setCities(); } function changeSelect(fieldID, newOptions, newValues) { selectField = document.getElementById(fieldID); selectField.options.length = 0; for (i=0; i<newOptions.length; i++) { selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]); } } function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { if (oldonload) { oldonload(); } func(); } } } addLoadEvent(function() { setStates(); }); </script>
Code:
<select name="country" id="country" onchange="setStates();"> <?php $query_thongtin=mysql_query('select * from thongtin') or die (mysql_error()); while($row_thongtin=mysql_fetch_array($query_thongtin)) { echo '<option value="'.$row_thongtin['id'].'">'.$row_thongtin['thanhpho'].'</option>'; } ?> </select> <select name="state" id="state"> <option value="1">Quận 1</option> <option value="2">Quận 2</option> <option value="3">Quận 3</option> </select>
hoặc có thể có cách khác giải quyết vấn đề mong mọi người chỉ dùm.
Bài liên quan
Nó có sử lý chức năng như bạn cần. Chịu khó đọc code đi nhé.
nhưng e vẫn ko biết cách trong lúc post tin ta có thể gán id quận/huyện cho tin đc?
Thì cuối cùng chỉ lưu 1 cái ID của thằng cuối cùng. ví dụ ID của xã phường. Và lưu như 1 ID category bình thường.
Sau này dựa vào ID này ta sẽ biết được cả quận huyện và tỉnh thành.
Ví dụ, TP có id XX, quận của TP này có id là YY, phường là ZZ
Khi đó ta lưu vào DB id là XXYYZZ. Khi muốn tìm sản phầm của quận này ta tìm những sp có id = XXYY*, còn muốn tìm sp trong TP này ta tìm sp có id=XX*
Cách này có lợi thế là khoanh vùng chi tiết theo từng cấp độ
mà bác làm sao để lấy id của cấp 2 (quận/huyện)?
như javascript e đang dùng thì khi cấp 1 (tỉnh/tp) thay đổi thì cấp 2 (quận/huyện) thay đổi theo, khi đó giá trị của nó lấy từ biến $_POST chì là chuỗi tương tự như quận 1, quận 2, quận ... mà không thể lấy theo số thứ tự?
cám ơn bác nhiều!
bảng 1:
+ MaTinh
+ TenTinh
Bang 2:
+ MaHuyen
+ TenHuyen
+ MaTinh
Bang 3:
+ MaPhuong
+ TenPhuong
+ MaHuyen
Bảng 1 quan hệ 1->nhiều với bảng 2 và bảng 2 quan hệ 1 nhiều với bảng 3
Nhưng tôi làm thì gộp chung vào 1 bảng dạng category
+ ID
+ Name
+ parentID
Trường hợp 1 như vậy thì fix cứng chỉ có 3 loại. Còn trường hợp 2 có thể n cấp. Khi viết code hơi trừu tượng chút nhưng được cái rút ngắn code.
bạn s.code ơi nếu làm theo cách 2 thì phải viết theo mấy cái api ạ