من نمی خوام برای استان ها و شهرها از دیتابیس استفاده کنم، پس ب راه هایی نیاز هست که با اسکریپت و کدنویسی سرو کار داره....
راهنمایی برای روش بهتر و ساده تر ....
سلام و روز خوش
شما میتونین دیتا رو به صورت JSON یا array تعریف کنین و این هم میتونه در یک فایل جدا از فایل html شما باشه.
من برای ساخت این دیتا از یک دیتابیس تقسیم بندی کشوری سال 1401 کمک میگیرم.
دیتا که من دارم به این شکل هست که تقسیم بندی به صورت:
1- استان
2- شهرستان
3- بخش
4- شهر یا دهستان
5- آبادی/روستا (فقط اگر سطح 4 دهستان باشه)
انجام شده و برای هر سطح هم جدول جدا داریم (جدول hierarchical هم درست کردم که اینجا فعلا به اون کاری نداریم)
حالا فرض کنین که فقط اطلاعات 4 سطح نیاز هست:
USE IRAN;
SELECT
States.State , States.StateID,
Counties.County , Counties.CountyID,
Districts.District , Districts.DistrictID,
Cities.City , Cities.CityID
FROM States
INNER JOIN Counties ON States.StateID=Counties.StateID
INNER JOIN Districts ON Counties.CountyID=Districts.CountyID
INNER JOIN Cities ON Districts.DistrictID=Cities.DistrictID
ORDER BY States.State, Counties.County, Districts.District, Cities.City
Screenshot 2024-05-09 204441.png
که این شکل دیتا در جاوااسکریپت قابل استفاده نیست،
پس:
USE IRAN;
SELECT
States.State , States.StateID,
Counties.County , Counties.CountyID,
Districts.District , Districts.DistrictID,
Cities.City , Cities.CityID
FROM States
INNER JOIN Counties ON States.StateID=Counties.StateID
INNER JOIN Districts ON Counties.CountyID=Districts.CountyID
INNER JOIN Cities ON Districts.DistrictID=Cities.DistrictID
ORDER BY States.State, Counties.County, Districts.District, Cities.City
FOR JSON AUTO
Screenshot 2024-05-09 205534.png
حالا این خروجی رو به عنوان یک متغیر جاوااسکریپت در یک فایل میریزیم (data.js)؛
به این ترتیب دیتا رو از html جدا میکنیم و دیگه کمبوهای ما hardcode نیست،
و این از بابت نگهداری و ویرایش های بعدی بسیار سودمند هست.
Screenshot 2024-05-09 210147.png
یا اگر بخواهیم pretty میکنیم (تاثیری در کار نداره و اینجا برای خوانایی انجام شده):
Screenshot 2024-05-09 210433.png