آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

بدست آوردن تعداد رکوردهای دیتابیس

hosseinAmini  12 سال پیش  12 سال پیش
0 0

سلام دوستان 
قبل از اینکه سوالم رو مطرح کنم دلیل اینکه می خوام  تعداد ستون های یک دیتابیس را بدست بیارم میگم، اگر روش بهتری وجود داشت لطفا راهنماییم کنید.
دارم یه گالری تصویر می سازم که یکی از قسمت های اون دسته بندی نام داره که در این بخش تصاویر رو متناسب با موضوع دسته بندی میکنم (مثلا تصاویر ماشین ، تصاویر موتور و ...). حالا می خوام این بخش دوتا خاصیت داشته باشه:

  1. اطلاعاتش رو از سرور بخونه: چون وقتی در آینده یه دسته اضافه کردم بدونه اینکه کاربر برنامه رو آپدیت کنه اون بخش به برنامه اش اضافه شه.
  2. وقتی که کاربر به اینترنت وصل نیست، قسمت دسته بندی رو بتونه ببینه.

حالا برای اینکه هم شماره 1 و هم شماره 2 رو عملی کنم تصمیم گرفتم که در گوشی کاربر یه دیتابیس بسازم و اطلاعات دیتابیس سرور روا داخلش بریزم و قسمت دسته بندی، اطلاعاتش رو از دیتابیس موجود در گوشی بخونه. ولی مشکلی که هست اینه که با هر بار اجرای برنامه اطلاعات دیتابیس سمت سرور دوباره ریخته میشه تو دیتابیس سمت لوکال.

برا همین تصمیم گرفتم که قطعه کد اضافه کردن  اطلاعات دیتابیس سمت سرور به دیتابیس سمت لوکال رو داخل یه شرط بزارم که اگر تعداد رکوردهای دیتابیس سمت لوکال کمتر از دیتابیس سمت سرور بود، ابتدا اطلاعات دیتابیس سمت لوکال رو پاک کن سپس داخلش اطلاعات سمت سرور رو بریز .
به همین دلیل  نحوه بدست آوردن تعداد رکوردهای دیتابیس رو میخوام.
به نظرتون این روش منطقیه؟
 ممنون که وقت گذاشتید

 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
na3er-faraji  12 سال پیش
+1 0

به نظر میرسه در سوالتون اشتباها به جای کلمه سطر از ستون استفاده کردید. اما خوب من  راهی که من به نظرم میرسه رو بتون میگم. برای کاری که شما میخواید میتونید از دستور زیر استفاده کنید. خروجی در فیلدی به نام (resultcount) قابل استفاده س.

 select count(*) from tablename as resultcount

اما اگه تعداد دسته بندی هاتونم زیاد باشه بازم این روش جالب نیس . چون نمیتونی تشخیص بدی کدوم سطرها آپدیت شده و کدوم ها نه.باید هر بار همه دسته ها دانلود بشه و دسته های قبلی پاک و جدیدها جایگزین بشه. یکی از روش هایی که میشه استفاده کرد که برای هر سطرتون یک تاریخ درج رو هم بزنید. بعد سمت کاربر تو یک جایی آخرین تاریخ آپدیت رو مشخص کنید و هر بار بعد از تشخیص اینکه تعداد سطرهای کلاینت از سرور کمتره (با دستوری که بالا هست) میتونید زمان آخرین آپدیت رو بفرستید سرور و سطرهایی رو دانلود کنید که بعد از این تاریخ تو سرور درج شده. بعد دوباره سمت کلاینت بیاید تاریخ رو به تاریخ لحظه آپدیت کنید. البته یک سری بهینه سازی ها هم این وسط هست که مطمینا خودتون بش برمیخورید. راه های دیگم هست. کلا فک نکنید همیشه یک الگوریتم یک راه مشخص داره. ممکنه خودتون به راهی برسید که از روش من جالب تر و کم هزینه تر باشه و برنامه نویسی یعنی لذت همین فک کردن.

پس از برنامه نویسی لذت ببرید و اگه راه جدیدی کشف کردید اینجا برای ما به اشتراک بگذارید. 

موفق باشید.

0 0
ببخشید اشتاهی به جای سطر، ستون نوشتم. واقعا ممنونم ازت خیلی عالی بود. روش بیشتر فکر می کنم اگه روش بهتری به ذهنم رسید حتما اطلاع میدم. (12 سال پیش)
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
+1 0

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;
0 0
ببخشید اشتاهی به جای سطر ستون نوشتم. برنامه گالری تصویر چیزه عجیبی نیست که کسی زودتر به ذهنش برسه. توو بازار خودمون کلی گالری تصویر هست منم این پروژه رو برای اینکه درگیره کار شم و چیزای جدید یاد بگیرم واسه خودم تعریف کردم، تا الان هم خیلی چیزا توو این پروژه یاد گرفتم مطمئنم هستم که کاری که من می خوام بکنم زمین تا آسمون با کاره شما فرق داره :)  ممنونم که وقت گذاشتید (12 سال پیش)
0 0
مطمئنا خیلی چیز واسه یاد گرفتن تو این پروژه هست ، منم خیلی چیز ها یاد گرفتم :) ، موفق باشید (12 سال پیش)
0 0
مرسی، شما هم موفق باشید (12 سال پیش)
پاسخ به سوال 
SaM MP  12 سال پیش
+1 0

میشه از طریق خواندن id آخرین آیتم تعداد آیتم ها رو بدست آورد( Auto_Increment رو برای item_id فعال کردم)

 $result = mysqli_query($c, "SELECT * FROM task ORDER BY task_id DESC LIMIT 1");

مثل خواندن سایر اطلاعات از دیتابیس یک متد براش تعریف کنی

برای دسته بندی هم میشه لحظه آخرین ویرایش کاربر رو روی دیتابیس ذخیره کرد، در صورت تغییر تاریخ دوباره اطلاعات بارگیری بشه

0 0
یه راه طولانی تره ولی بار اول چون در مورد کد گرفتن تعداد آیتم آگاهی نداشتم از این روش ابتکاری استفاده کردم :) (12 سال پیش)
0 0
روش راحت تر هم هست :) به هر حال ممنون (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .