كنترل پنل             جستجو               پرسشهای متداول            .:: آخرین پست‌های انجمن ::.            لیست اعضا            مدیران سایت             درجات        ورود
فهرست انجمن‌ها -> مباحث مرتبط با انواع پایگاه داده‌ها
پاسخ دادن به این موضوع
طریقه به روز رسانی انواع فیلدها در mysql
پست تاریخ: دوشنبه 29 اسفند 1390 - 11:01    
Gytyonline
مديريت كل انجمن‌ها
مديريت كل انجمن‌ها


پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
iran.gif


امتياز: 8184

عنوان: طریقه به روز رسانی انواع فیلدها در mysql خواندن مشخصات فردی ارسال پیام شخصی ارسال email

سلام
حتما تاحالا خیلی برای شما هم پیش اومده که در اسکریپت‌هایی که می‌نویسید قسمت ویرایش هم قرار داده باشید برای برنامه خودتون، همون طوری که خودتون می‌دونید برای به روز رسانی کردن یک فیلد در mysql از کوئری زیر استفاده می‌کنیم:
کد:
update Table_Name set Field=New_Value where ....

و این دستور میادش و فیلد مورد نظر ما رو با مقدار جدیدی که براش در نظر گرفتیم به روز رسانی می‌کنه.
تا اینجای کار ساده بود اما خوب اگر فرض کنیم که data type فیلد ما از نوع عددی باشه ( صحیح، اعشار و ... ) و ما بخواییم مقدار اون رو به روز رسانی کنیم اما به این گونه که مقداری رو به مقدار قبلی اون فید اضافه کنیم، مثلا می‌خواییم فیلدی رو که عدد تعداد نمایش یک پست رو در خودش نگه داری می‌کنه رو به روز رسانی کنیم در این صورت با هر بار دیده شدن اون پست باید مقدار قبلی فیلد با عدد یک جمع بشه و دوباره تو خودش ذخیره سازی بشه و به روز رسانی بشه و ما برای به روز رسانی اون به مقدار قبلیش هم وابسته هستیم، خوب برای این نوع از به روز رسانی باید چی کار کنیم؟
باید بار اول درخواست بفرستیم به پایگاه داده و مقدار اون فیلد رو بدست بیاریم و بعد با php یک مقدار به اون اضافه کنیم و دوباره یه درخواست به پایگاه داده بفرستیم و مقدار جدید رو با همون دستور اولی update که گفتیم به روز رسانی کنیم؟!
مسلما این راه، راه بهینه و مناسبی نیستش و ما باید هدفمون این باشه که تا جایی که ممکن هستش از ایجاد و ارسال درخواست‌های بیهوده به سمت سرور و دیتابیس جلوگیری کنیم تا کدی بهینه و اصولی داشته باشیم اما خوب بهترین راه حل این مسئله چی هست؟
بهترین و اصولی ترین راه این کار استفاده از توابع خود mysql هستش، و با به جای اینکه از دو query برای این کار استفاده کنیم ( یکی select برای بدست اوردن مقدار اولی و دیگری update برای به روز رسانی مقدار جدید فیلد ) می‌تونیم از query زیر استفاده کنیم:
کد:
update Table_Name set Field=(Filed+Value) where ....

و به جای value مقدار عدد مورد نظر خودمون رو قرار بدیم.

اما خوب حالا اگر data type فیلد ما عددی نبودش و کاراکتری بودش چی؟ اون موقع تکلیف چیه؟
مثلا ما فیلدی داریم که توش این نوشته ذخیره شده "Aftabgardan Cultural" و ما می‌[واییم مقدار "Center" رو به انتهای اون اضافه کنیم، شاید پیش خودتون بگید خوب از همون درستور اولی استفاده می‌کنیم و کل رشته رو یکجا به فیلد می‌دیم! اما خوب بعضی وقتا مقدار قبلی رو نداریم و وابسته هستیم به اون مثل مثال به روز رسانی تعداد بازدید پست و باید حتما در همون لحظه مقدار قبلی فیلد رو از دیتابیس به دست بیاریم. خوب پس حالا باید چی کار کنیم؟ باز هم می‌تونیم از روش دومی که گفته شد استفاده کنیم؟!
جواب : خیر، اگر به روشی که بالا گفتیم برای data type های کاراکتری استفاده کنید مقدار 0 در فیلد شما ذخیره سازی میشه! برای این کار شما باید به روش زیر عمل کنید و از تابع concat()‎ استفاده کنید:
کد:
update Table_Name set field=CONCAT(field,'new string') where ...


تابع contact()‎ از توابع mysql هستش ، و در اینجا ما بهش دو تا آرگومان می‌دیم که آرگومان اولی اسم فیلدی هستش که می‌خواییم به روز بشه و مقداری رو به انتهای اون اضافه کنیم و آرگومان دوم رشته‌ای هستش که می‌خواییم به انتهای اون فیلد اضافه بشهEmbarassed و به این شکل دیگه نیازی به استفاده از دو query و راه های دیگه نیست.
تابع concat()‎کاربردهای دیگه‌ای هم داره که در آینده با هم بررسی می‌کنیم.
موفق باشید.
امین شفیعی;

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست: Ariya_67 (پنج‌شنبه 31 اردیبهشت 1394 - 13:56)

پست تاریخ: پنج‌شنبه 31 اردیبهشت 1394 - 13:57    
Ariya_67
تازه به جمع ما پيوسته
تازه به جمع ما پيوسته


پست: 1
عضو شده در: 31 اردیبهشت 1394



امتياز: 9

عنوان: پاسخ به «طریقه به روز رسانی انواع فیلدها در mysql» خواندن مشخصات فردی ارسال پیام شخصی

hi myfriend
thanks for your informatiom

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست:


نمایش پستها:                 مشاهده موضوع قبلی :: مشاهده موضوع بعدی  
پاسخ دادن به این موضوع
 

صفحه 1 از 1

تمام زمانها بر حسب GMT + 3.5 Hours می‌باشند
 Related Topics 


 information 

 

پرش به:  
شما نمی توانید در این بخش موضوع جدید پست کنید
شما نمی توانید در این بخش به موضوعها پاسخ دهید
شما نمی توانید موضوع های خودتان را در این بخش ویرایش کنید
شما نمی توانید موضوع های خودتان را در این بخش حذف کنید
شما نمی توانید در این بخش رای دهید


Copyright 2004-2024. All rights reserved.
© by Aftabgardan Cultural Center : Aftab.cc