سیستم کارنامه آنلاین مدرسه - گسترش سیستم

mohsen_r

Member
با سلام به دوستان گرامی:
من یه php کار تقریبا متوسط هستم.
من می خواستم برای این که هم کارم تقویت بشه و هم نوشتن یه پروژه رو یاد بگیرم ، اودم و دست بکار شدم و شروع کردم ببینم که مردم به چه چیزی نیاز دارن که متن باز نیست و تصمیم که خودم از پایه بنویسم و بصورت متن باز منتشر کنم.
بعد از بررسی هایی که کردم دیدم تقاضا برای سیستم کارنامه آنلاین خیلی زیاده و این سیستم بصورت متن بازی فارسی و بومی پیدا نمیشه..!
پس شروع کردم به نوشتن و یه چیزایی رو نوشتم.
حالا می خواستم به یاری این اسکریت رو گسترش بدم و امید وار که انشاا... چیز خوبی از آب در بیاد.
برای این که شما هم متوجه بشین من چیکار کردم پس از اول شروع می کنم.


  1. چون من این اشکریت رو برای مدرسه خودمون نوشتم سایت مدرسه خودمون نوشتم و سایت مدرسه ما ، چنتا مدرسه دیگه رو قراره بیازه زیر پوشش خودش اومدم یه فایل ساختم به نام AddSchool.php
  2. بعد چون هر مدرسه چند کلاس داره اومدم به فایل دیگه ساختم به نام AddClass.php
  3. یه فایل دیگه ساختم به نام AddLesson.php که درس ها رو براش تعریف کنم.
کوئری های دیتابیس این اسکرپت رو تو فایل install.php و نام دیتابیس رو sch گذاشتم.
و حالا می خوام با کمک شما این اسکریت رو گسترش بدم.
فایل هایی رو که نوشتم پیوست کردم.
هر کار و برنامه ای رو که دارم از این به بعد با تو این اینجا مطرح می کنم.

اگه سوالی در باره دیتابس بود که چرا مثلان این فلان Table و این فلان فلید رو ایجاد کردی پاسخ میدم.

با تشکر​
 

پیوست ها

  • sch.rar
    20.2 کیلوبایت · بازدیدها: 71

mohsen_r

Member
با سلام مجدد به دوستان گرامی:
این کوئری رو به دیتابس خودتو اضامف کنید.

PHP:
CREATE TABLE `sch`.`terms` (
`term_id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`term_name` VARCHAR( 255 ) NOT NULL ,
`term_year` INT( 5 ) NOT NULL ,
PRIMARY KEY ( `term_id` )
) ENGINE = MYISAM ;
» این کوئری برای مشخص کردن سال تحصیلی هست بصورتی که :
term_id: برای ردیف ترم های ترم هر سال است که با ستفاده از این برای فراخوانی اطلاعات از دیتابس استفاده میشه.
term_name: برای عنوان ترم است برای مثال :میان ترم اول ، ترم اول ، میان ترم دوم ترم دوم ...
term_year: برای مشخص کردن سال تحیلی است...

مثال جمع بندی table ترم:
1 میان ترم اول 1389
2 ترم اول 1389
3 میان ترم دوم 1389
4 ترم دوم 1389
5 میان ترم اول 1390
.
.
.
 
آخرین ویرایش:

mohsen_r

Member
این کوئری رو هم به دیتابس خودتون اضافه کنید.
PHP:
CREATE TABLE `sch`.`grades` (
`grade_id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`grades` VARCHAR( 10 ) NOT NULL ,
`grade_lesson_id` INT( 11 ) NOT NULL ,
`grade_student_id` INT( 11 ) NOT NULL ,
PRIMARY KEY ( `grade_id` )
) ENGINE = MYISAM ;

» این کوئری برای مشخص کردن نمراد دانش آموز هست بصورتی که :
grade_id: برای ردیف نمرات است که با ستفاده از این برای فراخوانی اطلاعات از دیتابس استفاده میشه.
grades: برای درج نمراد دانش آموز در این فیلد تعبیه شده است.
grade_lesson_id: برای گرفتن ردیف درس هست که با استفاده از این شناسه ، نام درس فراخوانی می شود.
grade_student_id: برای گرفتن ردیف دانش آموز است که این این شناسه برای گرفتن اطلاعات دانش از دیتابیس استفاده می شود.

امیدوارم واضح توضیح داده باشم.
 

mohsen_r

Member
فکر کنم دیگه کارمون با دیتابیس تما ده باشه.
حالا دیگه تمام انرژی ام رو میذارم رو توشتن کد های php
خوشحال می شم که شما در راستای گسترش این اکریت کمکم کنید.
من هرکاری کردن و فایل رو همراه با توضیحات اینجا قرار میدم.

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

باتشکر
 
آخرین ویرایش:

Masoud1365

مدیر انجمن
با سلام
به نظرتون بهتر نیست که هدف کلی مشخص باشه تا اینکه تیکه تیکه اضافه بشه ؟
برای یه پروژه بزرگ و خوب از اول باید بدونی که آخرش میخوایی به کجا برسی بعد میایی و مثلا 20% کار که مهمتر هست رو پیاده میکنی و منتشر میکنی و بهد گسترش میدی تا به اون 100% برسی بعد اگر دیدی بازم نیاز همست چیزی بهش اضافه کنی . به علاوه اینکه دیتابیس رو خوب طراحی کنی که قابلیت گسترش داشته باشه البته هم دیتا بیس هم نوع کد نویسی !
موفق باشید :wink:
 

k2-4u

Well-Known Member
این تاپیک رو مهم می کنم
اگر . مطالب این تاپیک خوب مدیریت بشه تاپیک مفیدی میشه
----
در صورتی که نیازی داشتی با پیام خصوصی خبرم کن

تشکر کورش
 

mohsen_r

Member
با سلام
به نظرتون بهتر نیست که هدف کلی مشخص باشه تا اینکه تیکه تیکه اضافه بشه ؟
برای یه پروژه بزرگ و خوب از اول باید بدونی که آخرش میخوایی به کجا برسی بعد میایی و مثلا 20% کار که مهمتر هست رو پیاده میکنی و منتشر میکنی و بهد گسترش میدی تا به اون 100% برسی بعد اگر دیدی بازم نیاز همست چیزی بهش اضافه کنی
دست عزیز گفتم که من اون قدر مثل شما حرفه ای نیستم.
هدف هم که مشخص هست.
«ایجاد یک پایگاه اعلاعات کارنامه آنلاین که دانش آموزان برای دریافت کارنامه تحصیلی شماره دانش آموزی و شماره شناشنامه خود رو به عنوان کلمه عبور وارد کرده و کارنامه های سال تحصیلی خود رو دریافت کنند.»

با سلام
به علاوه اینکه دیتابیس رو خوب طراحی کنی که قابلیت گسترش داشته باشه البته هم دیتا بیس هم نوع کد نویسی!
در اینجاست که شما باید یه کمک من بیایید و من رو راهنمایی کنید که از چه شیوه ای برای نوشتن این اسکریپت استفاده کنم.
من که در ابتدا گفتم برای یادگیری بیشتر این پروژه رو شروعو با کمک شما ادامه خواهم دارد.
 

mohsen_r

Member
ایجاد فایل AddTerm.php برای ایجاد دروه جدید تحصیلی

ایجاد فایل AddTerm.php برای ایجاد دروه جدید تحصیلی:

با سلام به دوستان گرامی:

PHP:
<?php

/**
 * @author Mohsen Rasouli
 * @copyright 2010
 */

require_once ('../inc/function.php');
require_once ('../inc/config.php');
$db = new Database($db_host, $db_user, $db_pass, $db_name);
$db->connect();

$step= '0';
if(isset($_POST['require'])){
$_SESSION['step'] = '1';
$step= '1';
}
if(isset($_GET['step'])){
$step= $_GET['step'];
if(empty($step)){$step= '0';}
}

echo $header;
echo $sidebar;
$date = jdate("Y");

if ($step == '0') {

echo <<<HTML
<form method="POST" action="$PHP_SELF?step=1">
           <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دوره تحصیلی</td>
            </tr>
            <tr>
                <td width="100" style="padding:2px 0">ایجاد دروه 
                  <select name="term_name" >
                    <option value="نیم سال اول">نیم سال اول</option>
                    <option value="سال اول">سال اول</option>
                    <option value="نیم سال دوم">نیم سال دوم</option>
                    <option value="سال دوم">سال دوم</option>
                </select> در سال تحصیلی <input name="term_year" type="text"  style="width:40px" value="$date" /></td>
                
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><input name="submit" class="btn-g" type="submit" value="ثبت" /></td>
            </tr>
</table>

HTML;
}

if ($step == '1') {
    
$data['term_name'] = $_POST['term_name'];
$data['term_year'] = $_POST['term_year'];
if ($_POST['term_name']) {
    if ($_POST['term_year']) {
        if ($db->query_insert("terms", $data)) {
    
echo <<<HTML
                 <table width="700" border="0" cellpadding="0" cellspacing="0" >
                    <tr valign="top">
                        <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دوره تحصیلی</td>
                    </tr>
                    <tr>
                        <td align="center">عملیات با موفقیت انجام شد!</td>
                    </tr>
                    <tr valign="top">
                        <td colspan="2" align="center"><br /><a href="AddTerm.php"  class="btn-g" >دوره جدید</a>&nbsp;&nbsp;<a href="index.php" class="btn-y">بازگشت</a></td>
                    </tr>
                </table>   
HTML;
} else {
echo <<<HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">عملیات با خطا مواجه شد!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      

HTML;
}
}else {
echo <<<HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">خطا در ورود اطلاعات!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;

}
}else {
echo <<<HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">خطا در ورود اطلاعات!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;

}
}
echo $footer;

$db->close();

?>
این کد هایی رو که می بینید برای ایجاد دروه تحصیلی بود که قبلا دبیتا بس اون را ساخته بودیم.
حالا می پدازیم به توضیحات کد های نوشته شد:

PHP:
require_once ('../inc/function.php');
require_once ('../inc/config.php');
$db = new Database($db_host, $db_user, $db_pass, $db_name);
$db->connect();
کد هایی که در بالا مشاهده می کنید برای وارد کردن توابع و کلاس هایی که قبلا در فایل اولیه آورده شده بکار می بریم.
من برای سادگی انجام کا برای این اسکریپت کلاس Database رو مورد استفاده قرار میدم که آموزش و نمونه های اون به نام examples.html در فایل اولیه آروده شد.

PHP:
$step= '0';
if(isset($_POST['require'])){
$_SESSION['step'] = '1';
$step= '1';
}
if(isset($_GET['step'])){
$step= $_GET['step'];
if(empty($step)){$step= '0';}
}
این کد ها برای تعریف کردن این هست که چک کنه اگه ما اطلاعات یه فرم رو فرستادیم ، اطلاعات رو دوباره به همین صفحه برگردونه و به قسمت بعدی که توسط if ($step == 'part number') //sharte enteghal تعریف می شود رو پردازش کنه.

PHP:
echo $header;
echo $sidebar;
$date = jdate("Y");

if ($step == '0') {
این قسمت برای نمایش دادن قسمت هایی هست که در فایل function.php نوشته شده که برای نمایش سربرگ و منو های و تعریف کردن متغیر سال شمسی برای برای نمایش سال تحصیلی نوشته شده اند.

PHP:
echo <<<HTML
<form method="POST" action="$PHP_SELF?step=1">
           <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دوره تحصیلی</td>
            </tr>
            <tr>
                <td width="100" style="padding:2px 0">ایجاد دروه
                  <select name="term_name" >
                    <option value="نیم سال اول">نیم سال اول</option>
                    <option value="سال اول">سال اول</option>
                    <option value="نیم سال دوم">نیم سال دوم</option>
                    <option value="سال دوم">سال دوم</option>
                </select> در سال تحصیلی <input name="term_year" type="text"  style="width:40px" value="$date" /></td>
               
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><input name="submit" class="btn-g" type="submit" value="ثبت" /></td>
            </tr>
</table>

HTML;
}
در این قسمت همون طور که مشاهده می کنید با استفاده از [LTR]if (step =='0')[/LTR] تعریف کردیم که وقتی مرورگر صفحه رو درخواست می کنه فرم رو نشون بده و بعد از دریافت اطلاعات مورد نظر اون رو به [LTR]$_PHPSELF?step=1[/LTR] که در واقع همان صفحه است ما به if استپ 1 رجوع کرده و اطلاعات رو به قسمت دوم ارسال کنه.

PHP:
if ($step == '1') {
    
$data['term_name'] = $_POST['term_name'];
$data['term_year'] = $_POST['term_year'];
if ($_POST['term_name']) {
    if ($_POST['term_year']) {
        if ($db->query_insert("terms", $data)) {
    
echo <<<HTML
                 <table width="700" border="0" cellpadding="0" cellspacing="0" >
                    <tr valign="top">
                        <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دوره تحصیلی</td>
                    </tr>
                    <tr>
                        <td align="center">عملیات با موفقیت انجام شد!</td>
                    </tr>
                    <tr valign="top">
                        <td colspan="2" align="center"><br /><a href="AddTerm.php"  class="btn-g" >دوره جدید</a>&nbsp;&nbsp;<a href="index.php" class="btn-y">بازگشت</a></td>
                    </tr>
                </table>   
HTML;
} else {
echo <<<HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">عملیات با خطا مواجه شد!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      

HTML;
}
}else {
echo <<<HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">خطا در ورود اطلاعات!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;

}
}else {
echo <<<HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">خطا در ورود اطلاعات!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;

}
}
در این قسمت همون طور که مشاهده می کنید اطلاعات ارسال شده از فرم رو که در [LTR]if (step =='0')[/LTR] به [LTR]if (step =='1')[/LTR] فرستادیم با کلاس دیتابیس که قبلا دربارش صحبت کردیم تلفیق می کردیم. سپس با چندتا if تو در تو تعریف کردیم که اگه اطلاعات توسط کابر وارد نشده بود با پیام خطا مواجه بشه و برگرده اطلاعات رو تصحیح کنه.
سپس اگه اطلاعات رو درست وارد کرده بود ، اونارو تو دیتابیس مورد نظرش ثبت کنه.

PHP:
echo $footer;

$db->close();
این هم که معلومه دیگه نیازی به توضیح نداره که پاصفه رو نمایش میده و دیتابیس رو جهست امنیت بیشتر و فشار به سی پی یو سرور کمتر سرور کمتر بشه مینبنده.

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

با تشکر
محسن رسولی
 
آخرین ویرایش:

mohsen_r

Member
ایجاد فایل AddStudent.php برای اضافه نکودن دانش آموز

ایجاد فایل AddStudent.php برای اضافه نکودن دانش آموز:

برای فایل در مسیر [LTR]http://localhost/sch/admin/[/LTR] قرار بدین.
حالا بریم سروقت کد ها:
PHP:
<?php

/**
 * @author Mohsen Rasouli
 * @copyright 2010
 */

require_once ('../inc/function.php');
require_once ('../inc/config.php');
$db = new Database($db_host, $db_user, $db_pass, $db_name);
$db->connect();

$step = '0';
if (isset($_POST['require'])) {
    $_SESSION['step'] = '1';
    $step = '1';
}
if (isset($_GET['step'])) {
    $step = $_GET['step'];
    if (empty($step)) {
        $step = '0';
    }
}

echo $header;
echo $sidebar;

if ($step == '0') {

    echo <<< HTML
<form method="POST" action="$PHP_SELF?step=1">
           <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دانش آموز به مدرسه...</td>
            </tr>
            <tr>
                <td colspan="2" style="padding:2px 0" >اضافه کردن دانش آموز به مدرسه<select name="school_id"> \n
                <option value="0">انتخاب مدرسه</option>
HTML;

    $sql = "SELECT * FROM `schools` LIMIT 0, 30 ";
    $rows = $db->query($sql);
    while ($record = $db->fetch_array($rows)) {
        echo "<option value=\"$record[school_id]\">$record[school_name]</option>\n";
    }

    echo <<< HTML
</select></td>
                
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><input name="submit" class="btn-g" type="submit" value="ادامه" /></td>
            </tr>
</table>

HTML;
}

if ($step == '1') {

    $school_id = $_POST['school_id'];
    $school_name = $_POST['school_name'];

    if ($school_id) {

        $sql = "SELECT `school_name` FROM `schools` WHERE `school_id`='$school_id'";
        $rows = $db->query($sql);
        $record = $db->fetch_array($rows);


        echo '<form method="POST" action="' . $PHP_SELF . '?step=2">
                <table width="700" border="0" cellpadding="0" cellspacing="0" >
                    <tr valign="top">
                        <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دانش آموز به مدرسه <strong>'.$record['school_name'].'</strong></td>
                    </tr>
                    <tr>
                        <td style="padding:2px 0;width:200px;" >نام و نام خانوادگی دانش آموز:</td><td style="padding:2px 0" ><input type="text" style="widrh:150px;" name="student_name" /></td>
                    </tr>
                    <tr>
                        <td style="padding:2px 0;width:200px;" >نام پدر:</td><td style="padding:2px 0" ><input type="text" style="width:150px;" name="student_father_name" /></td>
                    </tr>
                    <tr>
                        <td style="padding:2px 0;width:200px;" >شماره دانش آموزی:</td> <td style="padding:2px 0" ><input type="text" style="width:150px;" name="student_number" /></td>
                    </tr>
                    <tr>
                        <td style="padding:2px 0;width:200px;" >کد ملی:</td><td style="padding:2px 0" ><input type="text" style="width:150px;" name="student_pass" /></td>
                    </tr>
                    <tr valign="top">
                        <input name="school_id" type="hidden" value="'. $_POST['school_id'] .'" />
                        <td colspan="2" align="center"><hr /><input name="submit" class="btn-g" type="submit" value="ثبت" /></td>
                    </tr>
                </table>

            </form>';

    } else {
        echo <<<HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا مدرسه مورد نظر را انتخاب کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><hr /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      

HTML;
    }
}

if ($step == '2') {
    
    $student_name = $_POST['student_name'];
    $student_father_name = $_POST['student_father_name'];
    $student_number = $_POST['student_number'];
    $student_pass = $_POST['student_pass'];
    $school_id = $_POST['school_id'];
    
    if ($student_name) {
        if ($student_father_name) {
            if ($student_number) {
                if ($student_pass) {
                    
                    $data['student_name'] = $student_name; 
                    $data['student_father_name'] = $student_father_name; 
                    $data['student_number'] = $student_number;                 
                    $data['student_pass'] = $student_pass;
                    $data['student_school_id'] = $school_id;
                    
                    if ($db->query_insert("students", $data)){
echo <<< HTML
                 <table width="700" border="0" cellpadding="0" cellspacing="0" >
                    <tr valign="top">
                        <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دانش آموز</td>
                    </tr>
                    <tr>
                        <td align="center">عملیات با موفقیت انجام شد!</td>
                    </tr>
                    <tr valign="top">
                        <td colspan="2" align="center"><br /><a href="AddStudent.php?step=1"  class="btn-g" >اضافه کردن دانش آموز جدید</a>&nbsp;&nbsp;<a href="index.php" class="btn-y">بازگشت</a></td>
                    </tr>
                </table>   
HTML;
                    }else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">عملیات با خطا مواجه شد!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
                    }
                    
                } else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا کد ملی دانش آموز را وارد کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
                }
            } else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا شماره دانش آموزی دانش آموز را وارد کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
            }
        } else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا نام پدر دانش آموز را وارد کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
        }
    } else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا نام دانش آموز را وارد کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center" ><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
    }   
}

echo $footer;

$db->close();

?>

حالا میریم سر تجذیه و تحلیل کد ها:

PHP:
require_once ('../inc/function.php');
require_once ('../inc/config.php');
$db = new Database($db_host, $db_user, $db_pass, $db_name);
$db->connect();

$step = '0';
if (isset($_POST['require'])) {
    $_SESSION['step'] = '1';
    $step = '1';
}
if (isset($_GET['step'])) {
    $step = $_GET['step'];
    if (empty($step)) {
        $step = '0';
    }
}

echo $header;
echo $sidebar;
در مورد این کد ها که قبلا صحبت شده که چیکار می کنند.

PHP:
if ($step == '0') {

    echo <<< HTML
<form method="POST" action="$PHP_SELF?step=1">
           <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دانش آموز به مدرسه...</td>
            </tr>
            <tr>
                <td colspan="2" style="padding:2px 0" >اضافه کردن دانش آموز به مدرسه<select name="school_id"> \n
                <option value="0">انتخاب مدرسه</option>
HTML;

    $sql = "SELECT * FROM `schools` LIMIT 0, 30 ";
    $rows = $db->query($sql);
    while ($record = $db->fetch_array($rows)) {
        echo "<option value=\"$record[school_id]\">$record[school_name]</option>\n";
    }

    echo <<< HTML
</select></td>
                
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><input name="submit" class="btn-g" type="submit" value="ادامه" /></td>
            </tr>
</table>

HTML;
}
در ابتدا یک if برای نمایش قسمت اول که فرم رو نشون میده تعبیه شده که در این فرم اطلاعات مدرسه از دبیتابس بیرون کشیده میشه و در یه منوی بیرون رونده نشوداده میشه که انتخاب بشه و به قسمت بعد بره

PHP:
if ($step == '1') {

    $school_id = $_POST['school_id'];
    $school_name = $_POST['school_name'];

    if ($school_id) {

        $sql = "SELECT `school_name` FROM `schools` WHERE `school_id`='$school_id'";
        $rows = $db->query($sql);
        $record = $db->fetch_array($rows);


        echo '<form method="POST" action="' . $PHP_SELF . '?step=2">
                <table width="700" border="0" cellpadding="0" cellspacing="0" >
                    <tr valign="top">
                        <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دانش آموز به مدرسه <strong>'.$record['school_name'].'</strong></td>
                    </tr>
                    <tr>
                        <td style="padding:2px 0;width:200px;" >نام و نام خانوادگی دانش آموز:</td><td style="padding:2px 0" ><input type="text" style="widrh:150px;" name="student_name" /></td>
                    </tr>
                    <tr>
                        <td style="padding:2px 0;width:200px;" >نام پدر:</td><td style="padding:2px 0" ><input type="text" style="width:150px;" name="student_father_name" /></td>
                    </tr>
                    <tr>
                        <td style="padding:2px 0;width:200px;" >شماره دانش آموزی:</td> <td style="padding:2px 0" ><input type="text" style="width:150px;" name="student_number" /></td>
                    </tr>
                    <tr>
                        <td style="padding:2px 0;width:200px;" >کد ملی:</td><td style="padding:2px 0" ><input type="text" style="width:150px;" name="student_pass" /></td>
                    </tr>
                    <tr valign="top">
                        <input name="school_id" type="hidden" value="'. $_POST['school_id'] .'" />
                        <td colspan="2" align="center"><hr /><input name="submit" class="btn-g" type="submit" value="ثبت" /></td>
                    </tr>
                </table>

            </form>';

    } else {
        echo <<<HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا مدرسه مورد نظر را انتخاب کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><hr /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      

HTML;
    }
}
در این قسمت if قسمت دوم تعریف شده که نام درسه انتخاب دشه رو نشون بده و بعد فرم دوم رو برای گرفتن اطلاعات دانش آموز از کاربر تعبیه شده. یه دستور else همبرای این تعریف شده که اگه کاربری بخوا زرنگی کنه و مستقیم به if دوم وارد بشه ، با پیام خطال مواجه شود که اطلاعات درست به دبیتابیس منتقل شود.

PHP:
if ($step == '2') {
    
    $student_name = $_POST['student_name'];
    $student_father_name = $_POST['student_father_name'];
    $student_number = $_POST['student_number'];
    $student_pass = $_POST['student_pass'];
    $school_id = $_POST['school_id'];
    
    if ($student_name) {
        if ($student_father_name) {
            if ($student_number) {
                if ($student_pass) {
                    
                    $data['student_name'] = $student_name; 
                    $data['student_father_name'] = $student_father_name; 
                    $data['student_number'] = $student_number;                 
                    $data['student_pass'] = $student_pass;
                    $data['student_school_id'] = $school_id;
                    
                    if ($db->query_insert("students", $data)){
echo <<< HTML
                 <table width="700" border="0" cellpadding="0" cellspacing="0" >
                    <tr valign="top">
                        <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دانش آموز</td>
                    </tr>
                    <tr>
                        <td align="center">عملیات با موفقیت انجام شد!</td>
                    </tr>
                    <tr valign="top">
                        <td colspan="2" align="center"><br /><a href="AddStudent.php?step=1"  class="btn-g" >اضافه کردن دانش آموز جدید</a>&nbsp;&nbsp;<a href="index.php" class="btn-y">بازگشت</a></td>
                    </tr>
                </table>   
HTML;
                    }else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">عملیات با خطا مواجه شد!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
                    }
                    
                } else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا کد ملی دانش آموز را وارد کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
                }
            } else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا شماره دانش آموزی دانش آموز را وارد کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
            }
        } else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا نام پدر دانش آموز را وارد کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
        }
    } else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">لطفا نام دانش آموز را وارد کنید!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center" ><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
    }   
}
در این قسمت همون طور که مشاهد می کنید ، برای سادگی کار متغیر هایی تعریف شده که برای تعریف مقادیری که از فرم دوم از قسمت قبل که اطلاعات دانش آموزان در اون توسط کابر به انجا فرستاده شده مورد استفاده قرار می گیرد.
در قسمت بعد چند تا if تو در تو نوشته شده که برای چک کردن اطلاعات بکار رفته بصورتی که اگه فرضا نام دانش آموز وادر شده بره و نام پدر اون رو چک کنه و ... که برای هر کدوم از اونا یه مقدار else تعریف شده که اگه یکی از فیلد های فرم رو خالی گداشتن و به اینجا اومدن با خطا موجه بشن که فرضا : «لطفا شماره دانش آموزی دانش آموز را وارد کنید.».
سپس با توجه به کلاس دیتابیسی که قبلا برای این اسکریپت بکار رقته بود متغیر ها رو براش تعریف کرده و پس از اون یه if امده که اگه اطلاعات رو به دیتابیس انتقال داد پیام «عملیات با موفقیت انجام شد!» رو بده در غیر این صورت پیام «عملیات با خطا مواجه شد!» رو نشون بده.

PHP:
echo $footer;

$db->close();
این کد هم فکر نکنم نیازی به توضیح داشته باشد.

امید وارم واضح توضیح داده باشم.
سعی می کنم پست هم رو حد اکثر دو یا سروزه بذارم.
سوالی بود درخدمتیم.
ایده و نظراتن شما در مورد ویرایش این سیستم رو هم مورد استفاده قرار میدم.

با تشکر
 

k2-4u

Well-Known Member
سلام دوست عزیز ممنون از مقاله ای که نوشتی
لطفا قوانین بخش و انجمن رو یکبار مطاله کنید ممنون
طبق قوانین لازمه برای هر سوال یک تاپیک جدید ایجاد بشه

ممنون کورش
 

mohsen_r

Member
اصلاحیه فایل AddStudent.php

درود بر توستان گرامی و آرزوی قبولی تاعات و عبادات:
دوستان گرامی برای بهتر عمل کردن این فایل کد:
PHP:
                if ($student_pass) {
                    
                    $sql = "select `student_number` from `students` where `student_number` = '$student_number'";
                    $result = mysql_query($sql);
                    if(mysql_num_rows($result) == 1)
                    { 
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">شما نمی توانید دانش آموزی با این شماره دانش آموزی وارد کنید<br />این شماره دانش آموزی قبلا ثبت شده است</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
                        } else {
 
                    
                    $data['student_name'] = $student_name; 
                    $data['student_father_name'] = $student_father_name; 
                    $data['student_number'] = $student_number;                 
                    $data['student_pass'] = $student_pass;
                    $data['student_school_id'] = $school_id;
                    
                    if ($db->query_insert("students", $data)){
echo <<< HTML
                 <table width="700" border="0" cellpadding="0" cellspacing="0" >
                    <tr valign="top">
                        <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دانش آموز</td>
                    </tr>
                    <tr>
                        <td align="center">عملیات با موفقیت انجام شد!</td>
                    </tr>
                    <tr valign="top">
                        <td colspan="2" align="center"><br /><a href="AddStudent.php?step=1"  class="btn-g" >اضافه کردن دانش آموز جدید</a>&nbsp;&nbsp;<a href="index.php" class="btn-y">بازگشت</a></td>
                    </tr>
                </table>   
HTML;
                    }else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">عملیات با خطا مواجه شد!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
                    }
    }                
                }
را جایگزین کد زیر نمایید:
PHP:
                if ($student_pass) {
                    
                    $data['student_name'] = $student_name; 
                    $data['student_father_name'] = $student_father_name; 
                    $data['student_number'] = $student_number;                 
                    $data['student_pass'] = $student_pass;
                    $data['student_school_id'] = $school_id;
                    
                    if ($db->query_insert("students", $data)){
echo <<< HTML
                 <table width="700" border="0" cellpadding="0" cellspacing="0" >
                    <tr valign="top">
                        <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">اضافه کردن دانش آموز</td>
                    </tr>
                    <tr>
                        <td align="center">عملیات با موفقیت انجام شد!</td>
                    </tr>
                    <tr valign="top">
                        <td colspan="2" align="center"><br /><a href="AddStudent.php?step=1"  class="btn-g" >اضافه کردن دانش آموز جدید</a>&nbsp;&nbsp;<a href="index.php" class="btn-y">بازگشت</a></td>
                    </tr>
                </table>   
HTML;
                    }else {
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">عملیات با خطا مواجه شد!</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
                    }
                    
                }

توضیحات:
در اصلاحیه فایل فوق کد :
PHP:
                    $sql = "select `student_number` from `students` where `student_number` = '$student_number'";
                    $result = mysql_query($sql);
                    if(mysql_num_rows($result) == 1)
                    { 
echo <<< HTML
     <table width="700" border="0" cellpadding="0" cellspacing="0" >
            <tr valign="top">
                <td colspan="2" style="padding:2px 0" align="center" bgcolor="#C0D7F8">خطا</td>
            </tr>
            <tr>
                <td align="center">شما نمی توانید دانش آموزی با این شماره دانش آموزی وارد کنید<br />این شماره دانش آموزی قبلا ثبت شده است</td>
            </tr>
            <tr valign="top">
                <td colspan="2" align="center"><br /><a href="javascript:history.go(-1)" class="btn-r">بازگشت</a></td>
            </tr>
    </table>      
HTML;
                        }
اضافه شده که به بیان این می پردازد که دبیتابیس رو چک کند آیا شماره دانش آموزی دانش آموز جدید که توسط کاربر وارد شده است ، قبلا در دیتابیس وجود دارد یا نه.
اگه که وجود داره با پیام:
شما نمی توانید دانش آموزی با این شماره دانش آموزی وارد کنید
این شماره دانش آموزی قبلا ثبت شده است
مواجه می شود و اگه وجود نداشته باشد ادامه کار که همون ثبت اطلاعات در دیتابیس می باشد رو انجام می ده.

با تشکر از کاربر محترم: P.H.P که در این زمیه من رو راهنمایی کرد.

با تشکر
 

robic

کاربر فعال
Zend Framework

سلام ایده ی خیلی جالبیه ، ولی به نظره من هم ، حتی به خاطر این پروژه هم که شده ، بهتر نیست ، با یکی از فریم ورک های آماده php کار بکنید ، که همه کارها رو براتون آسون ، و گسترش سیستم رو ساده تر بکنه. من Zend Framework رو پیشنهاد می کنم که ، کار کمپانی Zend هستش ، صاحب کمپانی هم کسیه که Scripting Engine رو برای php طراحی کرده و از قدرت و سرعت و بهینگی خیلی زیادی برخورداره ، یاد گرفتنشم آسونه .

http://framework.zend.com

در ضمن اگر تصمیم گرفتید با zend framework بنویسید ، من می تونم کمک کنم .
 

k2-4u

Well-Known Member
محسن جان من پیشنهاد می کنم . یک تاپیک جدا گانه
برای سوالات مربوط به این تاپیک بزنی
 

shahinshyd

Member
سلام
اقا اخر اين پرو‍ژه درست شد؟
ميشه بانك اطلاعاتي رو در سايت بذاريد تا بقيه استفاده كنند
 

جدیدترین ارسال ها

بالا