PDA

View Full Version : جدول های دیتابیس این سیستم به چه صورت است؟



abbas3zaar
شنبه 01 خرداد 1395, 23:46 عصر
سلام.در یک تاپیک دیگه یه سوال در مورد سیستم کارنامه توضیح داده بودم ولی الان سیستم یکم تغییر کرد و میخواستم راهنمایی کنید و یک تاپیک جدا زدم.

یه سیستم نمرات دانش آموزی آنلاین داریم که میخوام جداولش رو در phpmyadmin بسازم.

توضیح سیستم:

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

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


خروج
ارسال پیام به مدیر
مشاهده نمرات



کدهای خروج و ارسال پیام به مدیر رو هم درست کردم و مشکلی ندارم. فقط میمونه مشاهده نمرات

چهار تا شاخه داریم: دوم فنی، سوم فنی، دوم کاردانش، سوم کاردانش

سه تا هم رشته داریم: حسابداری، کامپیوتر، معماری

نمرات به این صورته که در مدرسه هر ماه یک کارنامه ماهانه داریم.

مثلا 5 تا درس داریم


عربی
دین و زندگی
زبان تخصصی
اصول حسابداری
شبکه


من مشکلی که دارم سلکت کردن با چند تا دستور هست مثلا:

نمرات کد دانش آموز 100203 که شاخه دوم فنی هست و رشته اش کامپیوتر هست رو درس های مهر ماهش رو نشون بده

نکته: ماه ها از مهر تا خرداد است.

چهار تا شرط داره! میشه راهنمایی کنید؟
چه table هایی باید داشته باشم؟

جدول دروس (عربی، دین و زندکی، زبان تخصصی و...)
جدول شاخه ها (دوم فنی، سوم فنی، دوم کاردانش، سوم کاردانش)
جدول دانش آموزان (شامل فیلد های مشخصات فردی)
جدول رشته ها (حسابداری، معماری، کامپیوتر و ....)

نکته: نام دروی هر رشته متفاوته.

دیگه چی لازم داریم؟ سلکت کردن اون شرط بالا چججوریه؟

numberone1
یک شنبه 02 خرداد 1395, 15:32 عصر
سلام

میتونی 2 تا جدول درست کنی
یکی پروفایل کاربران
یکی هم درسها و پایه تحصیلی و رشته ها
توی تیبل دوم یک فیلد parent id میتونی بزاری و ستون پایه تحصیلی و رشته تحصیلی و درس و بهم مرتبط کنی.
ممکنه بعضی درسها بین همه رشته ها مشترک باشه مثل دین و زندگی میتونی یه سرشاخه براش ایجاد کنی و parent_id شو صفر بزاری و اسمشو هم دروس عمومی بزاری و درسهای عمومی رو کلا با parent_id این علامت گذاری بکنی
توی تیبل پروفایل کاربر هم میتونی آیدی پایه تحصیلی و رشته تحصیلی رو بزاری و از طریق کلید خارجی ارتباط بدی به این جدول و درسهای هر کاربر و با یک join راحت بدست بیاری

abbas3zaar
دوشنبه 03 خرداد 1395, 02:08 صبح
سلام

میتونی 2 تا جدول درست کنی
یکی پروفایل کاربران
یکی هم درسها و پایه تحصیلی و رشته ها
توی تیبل دوم یک فیلد parent id میتونی بزاری و ستون پایه تحصیلی و رشته تحصیلی و درس و بهم مرتبط کنی.
ممکنه بعضی درسها بین همه رشته ها مشترک باشه مثل دین و زندگی میتونی یه سرشاخه براش ایجاد کنی و parent_id شو صفر بزاری و اسمشو هم دروس عمومی بزاری و درسهای عمومی رو کلا با parent_id این علامت گذاری بکنی
توی تیبل پروفایل کاربر هم میتونی آیدی پایه تحصیلی و رشته تحصیلی رو بزاری و از طریق کلید خارجی ارتباط بدی به این جدول و درسهای هر کاربر و با یک join راحت بدست بیاری

همه چی رو اوکی کردم تنها مشکلی که دارم اینه که:

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

الان با این دستور زیر نمرات مهر ماه دانشجوی کد 3 که در سال 1395 تحصیل میکنه رو میاره:


SELECT * FROM `tbl_scores` WHERE `student_scores_id` = 3 AND `scores_year` = 1395 AND `scores_month` = 7

جداولم رو میزارم عکساشو تا بفهمیدچه فیلد هایی دارم و چه فیلدهایی نیاز هست

http://8pic.ir/images/lnpy67m34y6x0caruogs_thumb.jpg (http://8pic.ir/viewer.php?file=lnpy67m34y6x0caruogs.jpg)
http://8pic.ir/images/kbfd3unv4qx7l7c7e5dr_thumb.jpg (http://8pic.ir/viewer.php?file=kbfd3unv4qx7l7c7e5dr.jpg)
http://8pic.ir/images/ss9ambk07wain87bnv0p_thumb.jpg (http://8pic.ir/viewer.php?file=ss9ambk07wain87bnv0p.jpg)

abbas3zaar
دوشنبه 03 خرداد 1395, 05:40 صبح
یه سوال دیگه:

کلا مشکل من با درسای مشترک مثل تربیت بدنی که توی همه رشته ها و پایه ها هست دارم.

الان در مدیریت من یک درس میخوام اضافه کنم. مثل عکس زیر:

http://8pic.ir/images/fo8k6mdq37yeuyqxqbq5.jpg


بخوا تک تک وارد کنم باید برای هر رشته و پایه یک تربیت بدنی اضافه کنم!
الان که اینو insert میکنم در دیتابیس، میره توی جدول دروس مثل عکس زیر:

http://8pic.ir/images/h35fwi2uql19t4o13mlj.jpg

الان توی جدول درس تربیت بدنی رو فقط برای رشته شماره 3 و پایه تحصیلی 2 ثبت کردیم. ولی...
حالا الان چیکار کنم یه دونه تربیت بدنی 3 داشته باشم و نخوام تک تک به همه رشته ها و پایه تحصیلی ها اضافه کنم!؟؟
کلا این مسئله parent id رو متوجه نشدم

numberone1
دوشنبه 03 خرداد 1395, 12:45 عصر
توی همین عکس آخر یک ردیف جدید دستی ایجاد کن . اسمشو بزار "دروس عمومی" بقیه فیلد هاشو صفر بده. یک ستون هم باید ایجاد کنی به اسم parent_id اونم صفر بده
بعد درس های غمومی رو ایجاد کن مثل تربیت بدنی و ... توی فیلد parent_id شون مقدار id ردیف "دروس عمومی" رو بزار
برای رشته و پایه تحصیلی هم همینکار و باید بکنی
مثلا رشته کامپیوتر پدر دروس مربوط به خودش میشه و توی فیلد parent_id مقدار id خودشو میگیره

abbas3zaar
سه شنبه 04 خرداد 1395, 01:42 صبح
این عکس رو نگاه کنید:
سیستم دانش آموز اینه کلا.... با زدن روی هر ماه نمره های دروس اون ماه نمایش داده میشه
الان در زیر ماه نوشته 7 یعنی مهر ماه، نام درس کدشو آورده ولی چون نمیدونم چجوری ایدی درس رو با نام درس ارتباط بدم.

http://8pic.ir/images/iq1era006xc04bsak07d.jpg



الان این کد بالا رو من select میکنم با دستور زیر




$query = "SELECT * FROM `tbl_scores` WHERE `student_scores_id` = 3 AND `scores_year` = 1395 AND `scores_month` = 7 ";
$select_scores_query = mysqli_query($connection,$query);

while($row = mysqli_fetch_assoc($select_scores_query)) {
$scores_month = $row['scores_month'];
$scores_score = $row['scores_score'];
$scores_lesson = $row['scores_lesson'];



echo '<tr>';
echo '<td>' . $scores_month . '</td>';
echo '<td>' . $scores_lesson . '</td>';
echo '<td>' . $scores_score . '</td>';
echo '</tr>';

}




آخرای کدها متغییر $scores_lesson آی دی درس رو نشون میده. چیکار کنم که این آیدی بره از جدول دروس نام درس رو بیاره؟
هم میخوام به جای ماه که نوشته7 بنویسه مهر

numberone1
سه شنبه 04 خرداد 1395, 12:02 عصر
بجای table2 همون تیبلی که اسم آیدی 7 داخلش هست و بنویس.
بجای column هم همون فیلد و بنویس



SELECT *
FROM `tbl_scores`
INNER JOIN tbl_name2
ON `scores_month` = tbl_name2.column_name
WHERE `student_scores_id` = 3 AND `scores_year` = 1395 AND `scores_month` = 7

abbas3zaar
سه شنبه 04 خرداد 1395, 23:36 عصر
مرسی با دستور زیر خروجی زیر رو گرفتم:




<?php

$query = "SELECT * FROM tbl_scores
INNER JOIN tbl_lessons ON tbl_scores.scores_lesson = tbl_lessons.lessons_id
INNER JOIN tbl_months ON tbl_scores.scores_month = tbl_months.month_id
INNER JOIN tbl_dabir ON tbl_scores.scores_dabir_id = tbl_dabir.dabir_id
WHERE student_scores_id = 3 AND `scores_year` = 1395 AND `scores_month` = 8";
$select_scores_query = mysqli_query($connection,$query);

while($row = mysqli_fetch_assoc($select_scores_query)) {
$student_scores_id = $row['student_scores_id'];
$scores_year = $row['scores_year'];
$scores_month = $row['scores_month'];
$scores_score = $row['scores_score'];
$scores_lesson = $row['scores_lesson'];
$lessons_name1 = $row['lessons_name'];
$month_name = $row['month_name'];
$dabir_name = $row['dabir_name'];

echo '<tr>';
echo '<td>' . $month_name . '</td>';
echo '<td>' . $scores_year . '</td>';
echo '<td>' . $lessons_name1 . '</td>';
echo '<td>' . $dabir_name . '</td>';
if($scores_score < 10){
echo '<td style="color:red;font-weight: 700;font-size: 18px;">' . $scores_score . '</td>';
}
elseif($scores_score < 15) {
echo '<td style="color:#ff9900;font-weight: 700;font-size: 18px;">' . $scores_score . '</td>';
} else {
echo '<td style="color:green;font-weight: 700;font-size: 18px;">' . $scores_score . '</td>';
}

echo '</tr>';
}
?>







http://8pic.ir/images/hieoyro96g45igpwdljw.jpg

abbas3zaar
سه شنبه 04 خرداد 1395, 23:49 عصر
حل شد. داخل حلقه while باید صدا میزدیم اون ستون هاش رو! من صدا نزده بودم اون ستون ها رو..
یعنی همه مشکلای sql ام با inner join حل شد. مرسی داداش. بیشتر کارام راه افتاد و همچنین یک دستور مهم از sql یاد گرفتم. مرسی زنده باشی


فقط یه مشکل دیگه دارم:

قضیه دروس عمومی که در همه رشته ها و شاخه ها هست رو متوجه نشدم.
این بخش "افزودن درس جدید" هست (عکس زیر)
من اینجوری طراحیش کردم که نام درس، نام دبیر و تعداد واحد رو که وارد میکنیم اون دوتای بعدی (پایه و رشته) اینا رو چیکار کنم؟ چون آخه درس عمومی هست نمیخوام رشته و پایه انتخاب کنم.، اون parent id رو متوجه نشدم. من چون تغییرانی در جداولم دادم دوباره در زیر عکس لیست جداولم رو میزارم ببینید.

مشکل دروس مشترک رو هم حل کنم کل سیستم کارش تموم میشه

http://8pic.ir/images/wf6i55k4az1ct53lf3yq.jpg






لیست کل جداولم:

http://8pic.ir/images/4ed7cbb2zrmejjkyjkqu.jpg


جدول tbl_dabir

http://8pic.ir/images/2q7tljjvmdaj9cu58zmv.jpg


جدول tbl_paye

http://8pic.ir/images/a9viij2h1w1b7c6k8wql.jpg



جدول tbl_lessons

http://8pic.ir/images/w7ow8ul51ojvq5ddj03j.jpg


جدول tbl_reshte
http://8pic.ir/images/fxlv7edzx75kvwn9eecd.jpg


جدول tbl_scores

http://8pic.ir/images/gsjs8m625lrztb4sy3a2.jpg


جدول tbl_months

http://8pic.ir/images/bl06injmkzwrs7dc387m.jpg




جدول tbl_students
http://8pic.ir/images/jl3oja5vn8pxj71i6doi.jpg

abbas3zaar
چهارشنبه 05 خرداد 1395, 16:13 عصر
دوستان فقط مشکلم درس های عمومی هست. موقع اضافه کردن درس جدید (عکس زیر صفحه اضافه کردن درس هست) چیکار کنم درس عمومی برای همه رشته ها باشه چون در این صفحه من باید رشته رو پایه هم انتخاب گنم!

http://8pic.ir/images/wf6i55k4az1ct53lf3yq.jpg