بدست آوردن تعداد رکوردهای دیتابیس
سلام دوستان
قبل از اینکه سوالم رو مطرح کنم دلیل اینکه می خوام تعداد ستون های یک دیتابیس را بدست بیارم میگم، اگر روش بهتری وجود داشت لطفا راهنماییم کنید.
دارم یه گالری تصویر می سازم که یکی از قسمت های اون دسته بندی نام داره که در این بخش تصاویر رو متناسب با موضوع دسته بندی میکنم (مثلا تصاویر ماشین ، تصاویر موتور و ...). حالا می خوام این بخش دوتا خاصیت داشته باشه:
- اطلاعاتش رو از سرور بخونه: چون وقتی در آینده یه دسته اضافه کردم بدونه اینکه کاربر برنامه رو آپدیت کنه اون بخش به برنامه اش اضافه شه.
- وقتی که کاربر به اینترنت وصل نیست، قسمت دسته بندی رو بتونه ببینه.
حالا برای اینکه هم شماره 1 و هم شماره 2 رو عملی کنم تصمیم گرفتم که در گوشی کاربر یه دیتابیس بسازم و اطلاعات دیتابیس سرور روا داخلش بریزم و قسمت دسته بندی، اطلاعاتش رو از دیتابیس موجود در گوشی بخونه. ولی مشکلی که هست اینه که با هر بار اجرای برنامه اطلاعات دیتابیس سمت سرور دوباره ریخته میشه تو دیتابیس سمت لوکال.
برا همین تصمیم گرفتم که قطعه کد اضافه کردن اطلاعات دیتابیس سمت سرور به دیتابیس سمت لوکال رو داخل یه شرط بزارم که اگر تعداد رکوردهای دیتابیس سمت لوکال کمتر از دیتابیس سمت سرور بود، ابتدا اطلاعات دیتابیس سمت لوکال رو پاک کن سپس داخلش اطلاعات سمت سرور رو بریز .
به همین دلیل نحوه بدست آوردن تعداد رکوردهای دیتابیس رو میخوام.
به نظرتون این روش منطقیه؟
ممنون که وقت گذاشتید
به نظر میرسه در سوالتون اشتباها به جای کلمه سطر از ستون استفاده کردید. اما خوب من راهی که من به نظرم میرسه رو بتون میگم. برای کاری که شما میخواید میتونید از دستور زیر استفاده کنید. خروجی در فیلدی به نام (resultcount) قابل استفاده س.
select count(*) from tablename as resultcount
اما اگه تعداد دسته بندی هاتونم زیاد باشه بازم این روش جالب نیس . چون نمیتونی تشخیص بدی کدوم سطرها آپدیت شده و کدوم ها نه.باید هر بار همه دسته ها دانلود بشه و دسته های قبلی پاک و جدیدها جایگزین بشه. یکی از روش هایی که میشه استفاده کرد که برای هر سطرتون یک تاریخ درج رو هم بزنید. بعد سمت کاربر تو یک جایی آخرین تاریخ آپدیت رو مشخص کنید و هر بار بعد از تشخیص اینکه تعداد سطرهای کلاینت از سرور کمتره (با دستوری که بالا هست) میتونید زمان آخرین آپدیت رو بفرستید سرور و سطرهایی رو دانلود کنید که بعد از این تاریخ تو سرور درج شده. بعد دوباره سمت کلاینت بیاید تاریخ رو به تاریخ لحظه آپدیت کنید. البته یک سری بهینه سازی ها هم این وسط هست که مطمینا خودتون بش برمیخورید. راه های دیگم هست. کلا فک نکنید همیشه یک الگوریتم یک راه مشخص داره. ممکنه خودتون به راهی برسید که از روش من جالب تر و کم هزینه تر باشه و برنامه نویسی یعنی لذت همین فک کردن.
پس از برنامه نویسی لذت ببرید و اگه راه جدیدی کشف کردید اینجا برای ما به اشتراک بگذارید.
موفق باشید.
1- منظور شما سطر هست نه ستون
2- منظور جدول هست نه دیتابیس
3 - منم این برنامه رو نوشتم ! ، دیر به فکرت رسید !
البته من پروژه ای نوشتم ، در حال اکسپورت نهایی برای بازبینی هستم ، چون خودم نوشتم این رو بگم که کار با دیتابیسش از اونی که فکر میکنی و فکر میکردم سنگین تر هست ! ، خوب اول بهت جواب رو میدم ، بعد میگم چرا سنگین هست !
شما دسته هاتون ID ثابت داره ، یعنی کلید اصلی هست ! ، پس وقتی تو دیتابیس لوکال ببینی مثلا آخرین ID ما 13 هست ، یعنی باید 13 به بعد رو بگیری که بهینه باشه ! ، پس باید یه offset به سرور post کنی بگی
SELECT * FROM `cats` offset $offset
اما چرا پروژه نسبتا پیچیده هست ! ، البته سمت سرور :|
Appserver.php حدود 500 خط شده ، و این هم کوئری انتخاب تصاویر (برای امنیت برنامه نام جداول و ستون ها و متغییر ها تغییر کرد) ، خوب من از ارتباط استفاده کردم :|
$query="Select a.a , a.b,a.c,a.d
From a
Join b
Join c
On c.a = b.a AND a.a = c.a
where b.a in (".$x.") AND `published`='1'
GROUP by a.a order by a.a desc limit ".$offset.",".$count;
میشه از طریق خواندن id آخرین آیتم تعداد آیتم ها رو بدست آورد( Auto_Increment رو برای item_id فعال کردم)
$result = mysqli_query($c, "SELECT * FROM task ORDER BY task_id DESC LIMIT 1");
مثل خواندن سایر اطلاعات از دیتابیس یک متد براش تعریف کنی
برای دسته بندی هم میشه لحظه آخرین ویرایش کاربر رو روی دیتابیس ذخیره کرد، در صورت تغییر تاریخ دوباره اطلاعات بارگیری بشه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .