نکتهآموزشی: update & delete شهرها و validation اونها
ایجاد شده در ۲۲ بهمن ۱۴۰۱
سلام
میتونید توسط گیت، به گامهای مدنظرتون برگردید..
موفق باشید
نکتهای که شاید در کدهای بالا، قابلیت توضیح رو داشته باشه:
در جایی که متد PUT پیاده سازی میشه، برای ولیدیشن نام جدید شهر در خط ۵۳، از تابعی به نام mb_strlen استفاده شده.
بزارید اول مشکل رو بگم، شاید بهتر قابل درک باشه:
زمانی که ما قراره در یک ولیدیشن، محدودیت کاراکتر اعمال کنیم و مثلا بگیم نام شهر جدید، نباید از سه کاراکتر کمتر باشه یا مثالهایی از این دست، به مشکل طول کاراکترها برخورد میکنیم. البته به شرطی که کاراکترهای ما، قرار باشه فارسی یا عربی باشند.
نمیدونم تلفظ درستیه یا خیر، ولی اگه قرار باشه مثلا اندازه یک کاراکتر انگلیسی رو (a) ، 1 بایت در نظر بگیریم، طول یک کاراکتر فارسی، 2 بایت هستش.
با توجه به پاراگراف بالا، اگه توی ولیدیشن گفته باشیم طول و اندازه نام یک شهر حتما باید از سه کاراکتر، بیشتر باشه، در حقیقت اگر به صورت فارسی نوشته بشه، کاربر میتونه دوتا حرف بزاره و به اروری نخوره.
چرا؟ چون کاراکترهای فارسی، اندازشون دو برابر کاراکترهای انگلیسیه و سیستم فکر میکنه مثلا نام (قم) که وارد شده، برابر با ۴ کاراکتر هستش. نه ۲ کاراکتر. پس به همین علت اروری ران نمیشه و برنامه به درستی کار میکنه.
اینجاست که تابع mb_strlen کاربرد داره و تنها تفاوتش با تابع srtlen اینه که ما میتونیم بگیم بیا از فلان تایپی هم که ما میگیم، استفاده کن. به این صورت:
mb_strlen(str $string, str $encoding)
شاید استفاده از برخی تلفظها صحیح نبوده باشه یا کلماتی درست ادا نشده باشند. علتش اینه که تونسته باشم ساده مفهوم رو برسونم.
اگر مشکلی داشت، خوشحال میشم بیان کنید.
پن: این موضوع، باید در متد POST هم اعمال میشده که من فراموش کردم.