PDA

View Full Version : کمک در خصوص گزارشگیری در php



morypory
دوشنبه 09 بهمن 1396, 22:21 عصر
درود بر عزیزان من در php تازه کارم و متاسفانه چندین سوال در انجمن مطرح کردم که هیچگونه پاسخی دریافت نکردم ولی ایندفعه با یک مشکل بزرگ روبرو شدم که هرچه جستجو کردم پاسخ مناسبی دریافت نکردم
من روی یک پروژه دارم کار میکنم و میخواهم کاربران روزانه اجناسی را که به فروش می رسانند در یک سیستم تحت وب وارد کنند تا اینجای کار هیچ مشکلی ندارم
مشکل اساسی من این است که مثلا کاربر A وقتی لاگین میکند میخواهد ببیند مثلا از کالای X طی بازه زمانی 10 روزه سر جمع چقدر فروخته و چه مبلغی گرفته است اینجا نمیدانم جدول را چگونه برنامه نویسی کنم که مثلا بیاید از یک combobox مثلا جنس x را دریافت کند و دو تاریخ هم انتخاب کند بعد در جدولی جنس x سرجمع فروش تعداد و سرجمع قیمت بدست آمده را نمایش دهد لطفا راهنمائیم کنید

plague
سه شنبه 10 بهمن 1396, 13:23 عصر
من متوجه نشدم مشکلت کدوم بخشه کاره ... آیا sql رو مشکل داری نمیدونی چجوری کوئری دیتابیس رو بنویسی ؟

morypory
سه شنبه 10 بهمن 1396, 15:06 عصر
مشکل من کدنویسی php است مثالی میزنم من یک جدول در mysql دارم که شامل , date,id_user,inco,id,code,code_details است که inco همان مبلغ است حال من یک combobox و دو textbox دارم که در combo کدها را قرار دادم که وقتی یک کد را انتخاب میکنم شرح ان کد در یکی از تکس بوکسها ظاهر میشود حال من قیمت و تاریخ را وارد میکنم و سیو میکنم تا اینجا هیچگونه مشکلی ندارم و در جدول بر اساس هر کاربر و تاریخ مشخص اطلاعات در دیتابیس ذخیره میشود مشکل من این است که من میخواهم در بخش گزارشات مثلا بازه زمانی 10 روزه را انتخاب کنم که برای این منظور دو تا textbox تاریخ از تا قرار دادم حال مثلا از یکم تا دهم ماه را میخواهم گزارش به من بدهد مثلا سرجمع کد 1 را نشان دهد مثلا x ریال فروخته نه اینکه بیایید و کل آن کد را یکی یکی نمایش دهد امیدوارم منظورم را متوجه شده باشید
لطفا راهنمائیم کنید

plague
سه شنبه 10 بهمن 1396, 17:26 عصر
ببین دوست عزیز یه وب اپ خیلی ساده بخایم بگیم 3 قسمت داره
1 - قالب سمت کلاینت که css&html هستش
2 - منطق برنامه نویسی که شامل شرط ها و حلقه ها و آرایه ها و متغیر ها و ..... میشه که با php هستش
3 - ارتباط با دیتبایس و خوندن داده ها از دیتبایس که بهش میگن کوئری نویسی

الان من متوجه نمیشم شما کدوم یکی از این موارد رو مشکل داری
به نظر میاد که شما میخای بدونی که چجوری میشه جمع فروش یک محصول رو بین 2 بازه زمانی از دیتبایس خوند که میشه کوئری زدن
ولی وقتی من بهت میگم مشکلت کوئری هست میگی نه که حالا یا من اشتباه میکنم یا شما نمیدونی منظور از کوئری چیه

morypory
سه شنبه 10 بهمن 1396, 18:49 عصر
فکر میکنم همون قسمت دوم باشد چون قالب بندی رو انجام دادم و قسمت سوم وقتی کوئری میزنم راحت اطلاعات را از دیتابیس برام میخونه و جمع کل را نمایش میدهد مشکل من این است که من میخواهم مثلا اگر در بازه زمانی من از یک محصول در روزهای متفاوت در دیتابیس اطلاعاتش ذخیره شده است وقتی میخواهم در گزارشم تاریخ این بازه 10 روزه را بگیرم فقط یک محصول در جدول نمایش داده شود و در قسمت قیمت سر جمع قیمت 3 روز را بنویسد

plague
سه شنبه 10 بهمن 1396, 21:02 عصر
شما هرچی از دیتبایس خوندی رو نمایش میدی اگه نمیخای تک تک نمایش بده همه فروش ها رو باید کوئری مناسب بزنی که جمع کل رو بخونه
اینجوری نیست که همه فروش ها رو از دیتبایس بخونی بعد بخای با php جمعشون کنی و 1 ردیف نمایش بدی و یا محدودیت تاریخ بزاری روشون البته میشه از نظر فنی اینکارو کرد ولی خب کار اشتباه و بیخودیه

با دستوراتی مثل SUM عملیات ریاضی روی فیلد میتونی انجام بدی مثلا جمع کنی فیلد مورد نظرت رو

مثل اگه من یه تیبل فروش محصولات داشته باشم بخام بدونم که محصولی با شناسه 2 جمع کل فروشش چقدر بوده اینجوری کوئری میزنم

SELECT sum(price) as total_price from table where product_id = 2

اگه بخام بدونم در یه باز0 زمانی چقدر فروخته اینجوری کوئری میزنم

SELECT sum(price) as total_price from table where product_id = 2 AND date >= '2018-05-01' AND date <= '2018-06-01'

خروجی این دو کوئری یه عدد هستش که جمع کل فروش اون محصوله و در متغیری به نام total_price قرار میگیره


با group by میتونی گروه بندی کنی ردیف های دیتبایس رو در دسته های متناظر (مثلا بر اساس شناسه کاربر یا محصول )
مثلا اگه بخایدجمع فروش کل به ازای هر محصول رو بدونی


SELECT product_id , sum(price) as total_price from table group by product_id

اینجوری همه محصولاتت رو خروجی میگیری ولی بجای اینکه تک تک ردیف های فروششون رو ببینی به ازای هر محصول فقط 1 ردیف میبینی که جمع کل فروشش رو نشون میده
سعی کن تو phpmyadmin این کوئری هات رو بنویسی که با خروجیشون به شکل گرافیکی آشنا بشی بعد با php این کوئری ها رو نوشتی بدونی چی خروجی خواهی گرفت

morypory
سه شنبه 10 بهمن 1396, 23:17 عصر
واقعا ازتون ممنونم دقیقا مشکلم حل شد فقط یک مشکل دارم من تاریخ رو که میلادی انتخاب میکنم همه چی ok و جوابمو میگیرم ولی وقتی تاریخ شمسی را انتخاب میکنم ردیفها درست می آید اما جمع کل را نمی دهد

plague
چهارشنبه 11 بهمن 1396, 00:22 صبح
نوع فیلدت تاریخت چیه و چه کوئری استفده میکنی

morypory
چهارشنبه 11 بهمن 1396, 07:29 صبح
نوع فیلدت تاریخت چیه و چه کوئری استفده میکنی

فیلد تاریخ را varchar استفاده کردم و کوئری هم به اینصوزت که select tarikh from table where tarikh between input1 and input2

morypory
چهارشنبه 11 بهمن 1396, 10:02 صبح
این مشکل رو تونستم حل کنم یونیکد را در mysql به utf-8 persian تغییر دادم مشکلم حل شد .بابت راهنمائی هاتون واقعا ممنونم فقط البته میبخشید خیلی سوال میکنم چون من در برنامه نویسی صفرم و تازه میخواهم یاد بگیرم من دو تا صفحه درست کردم یکی با عنوان مطالبات ایجادی و یکی هم مطالبات وصولی مثلا من در بهمن ماه اجناسی رامیفروشم و مبلغ آنها را دریافت نمیکنم که در جدول مطالبات ایجادی ذخیره میشود حال در ماه بعد من این مطالباتی را که در بهمن وصول کرده ام را دریافت میکنم و این را در صفحه مطالبات وصولی ذخیره میکنم و همانطور که راهنمائی فرمودید گزارشات هم به درستی میگیرم و تنها یک مشکل دارد من میخواهم مطالباتی که وصول کردم وقتی وارد میکنم از مطالبات ایجادیم کم بشود اگر ممکن در این خصوص هم راهنمائیم بفرمائید ممنون میشوم

plague
چهارشنبه 11 بهمن 1396, 14:08 عصر
خب کوئری بنویس کم کن مثلا بخای از یه فیلد 5000 کم کنی

update table set fild = fild - 5000 where id = 1111


فیلد تاریخ رو هم از نوع datetime بزار varchar برای اون کار نیست