PDA

View Full Version : سوال: راهنمایی برای طراحی یک نرم افزار PHP



hamid_2fun
سه شنبه 01 مرداد 1387, 05:31 صبح
سلام!
من دارم یک نرم افزار مدیریت مدرسه مینویسم که چون خیلی برنامه نویسی تحت وب بلد نیستم ناچارا از روی یه نسخه Free بنام ischoolad شروع کردم و نرم افزارم رو توسعه دادم و الان درواقغ فقط بخش نمره هاش باقی مونده و در طراحی این قسمتش مشکل دارم.

من میتونم نمره های هر دانش آموز رو در یک صفحه بگیرم توی DB ذخیره کنم ولی اینطور وارد کردن نمرات در عمل غیر ممکنه، بنابراین باید همه دانش آموزای مورد نظر فهرست بشن و بعد نمره همه اونها یکجا وارد بشه؛ من فهرست دانش آموزهارو به این شکل (http://i35.tinypic.com/zwdmr.jpg) تولید کردم ولی طوری که من بلدم (دریافت جدا جدای نمرات دانش آموزا) برای اینکه بعد از کلیک روی دکمه "ثبت" همه نمرات ذخیره بشه باید به این شکل اطلاعات رو دریافت کرد:

$x_Dars = @$HTTP_POST_VARS["x_Dars"];
$x_term11 = @$HTTP_POST_VARS["x_term11"];
$x_term12 = @$HTTP_POST_VARS["x_term12"];
$x_term21 = @$HTTP_POST_VARS["x_term21"];
$x_term22 = @$HTTP_POST_VARS["x_term22"];
$x_StudentId = @$HTTP_POST_VARS["x_StudentId"];
اما در این حالت (دریافت نمره های چند دانش آموز بصورت همزمان) ما بینهایت فیلد نمره داریم که قراره به صفحه برگردونده بشن، پس چطوری میشه اطلاعات این فیلدهارو پردازش کرد؟
اگه بتونید به من کد یک صفحه بدید که همچین کاری توش انجام بشه، یعنی یک فیلد مشترک برای تعدادی رکورد دریافت بشه و در دیتابیس ذخیره بشه، کمک خیلی بزرگیه. ممنون.

vahid4134
سه شنبه 01 مرداد 1387, 09:36 صبح
نام فیلدهایی رو که مثلا برای نمره اول اینطوری بنویس


grade1[stid]

به جای stid همون کد دانش آموزی رو بزار
بعدش یه print_r از متغیرت بگیر خودت متوجه میشی

yaqubian
سه شنبه 01 مرداد 1387, 09:56 صبح
دوست عزیز
لطفا اگه می شه یه نسخه از برنامه رو هم واسه دانلود بذارید.
ممنون

hamid_2fun
سه شنبه 01 مرداد 1387, 22:26 عصر
منظورتون نسخه اصلی ischoolad هست یا اونی که من دارم آمادش میکنم؟

hamid_2fun
چهارشنبه 02 مرداد 1387, 03:50 صبح
دوستان من هنوز مشکل دارم، با راهنمایی وحید عزیز هم نتونستم به اطلاعات فیلدهام دسترسی پیدا کنم. اینجا کد قسمتی که بعد از Submit اجرا میشن رو میذارم لطفا راهنماییم کنید مشکل چیه. اطلاعات فیلدهای من اصلا از فرم بازگردانی نمیشن.


<?php
ob_start();
//get action
$a = @$HTTP_POST_VARS["a"];

switch ($a)
{
case "A":
// Add
//get fields from form
$tedad = @$HTTP_POST_VARS["tedad"];
$tedad = $tedad + 1;
$forr = 1;
$x_Dars = @$HTTP_POST_VARS["dars"];

do
{
$term11[$forr] = @$HTTP_POST_VARS["x_term11[$forr]"];
$term12[$forr] = @$HTTP_POST_VARS["x_term12[$forr]"];
$term21[$forr] = @$HTTP_POST_VARS["x_term21[$forr]"];
$term22[$forr] = @$HTTP_POST_VARS["x_term22[$forr]"];
$x_StudentId[$forr] = @$HTTP_POST_VARS["x_stuid[$forr]"];

$userquery=mysql_query("select StudentId, Username from student where Username = '$x_StudentId[$forr]'");
$userresult = mysql_num_rows($userquery);

if($userresult==0)
{
echo "<script>alert('خطایی در یافتن دانش آموز برای ثبت نمره روی دارد.'); history.back();</script>";

exit();
}
$userrow = mysql_fetch_array($userquery);
$studid = $userrow['StudentId'];

$fieldList[] = "`CourseSectionId`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_Dars) : $x_Dars;
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`term11`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_term11) : $term11[$forr];
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`term12`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_term12) : $term12[$forr];
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`term21`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_term21) : $term21[$forr];
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`term22`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_term22) : $term22[$forr];
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`StudentId`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($studid) : $studid;
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;


$insertSQL = "INSERT INTO `nomarat` (";
for ($i = 0;$i < count($fieldList); $i++) {
$insertSQL .= $fieldList[$i];
if ($i != count($fieldList) - 1) {
$insertSQL .= ",";
};
};
$insertSQL .= ") VALUES (";
for ($i = 0;$i < count($valList); $i++) {
$insertSQL .= $valList[$i];
if ($i != count($valList) - 1) {
$insertSQL .= ",";
};
};
$insertSQL .= ")";

$rs = mysql_query($insertSQL, $ServerConnect) or die(mysql_error());

mysql_free_result($rs);
mysql_close($ServerConnect);
$forr = $forr + 1;
} while ($forr < $tedad);
//end do
ob_end_clean();
header("Location: admin_nomarat_add.php");
break;
}

hamid_2fun
چهارشنبه 02 مرداد 1387, 03:55 صبح
الان این کد در شرط $userresult==0 متوقف میمونه و دانش آموز پیدا نمیشه. علتشم اینه که مقدار شماره دانش آموز از فرم برگردانده نشده.

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

http://ketabnak.com/ischoolad/admin_...dd.php?x_stuid (http://ketabnak.com/ischoolad/admin_nomarat_add.php?x_stuid)[1]=21545121&x_term11[1]=5&x_term12[1]=6&x_term21[1]=7&x_term22[1]=8&x_stuid[2]=249421&x_term11[2]=9&x_term12[2]=10&x_term21[2]=11&x_term22[2]=12&x_stuid[3]=12154515&x_term11[3]=13&x_term12[3]=14&x_term21[3]=15&x_term22[3]=16&tedad=3&dars=8&a=A&Submit1=%D8%AB%D8%A8%D8%AA+ %D9%86%D9%85%D8%B1%D8%A7%D8%AA

vahid4134
چهارشنبه 02 مرداد 1387, 09:32 صبح
شما دارید اشتباه می نویسید شما یکبار متغیر $_GET رو print_r بگیرید متوجه خواهید شد. عرض کردم بهتون. در واقع الان $_GET[x_term11]] خودش یک آرایه هست

hamid_2fun
پنج شنبه 03 مرداد 1387, 02:50 صبح
وحید عزیز، از راهنمائیتون ممنون، دفعه اول متوجه منظورتون نشدم. کدم رو تصحیح کردم و با این کد جدید اطلاعات دانش آموز اول به درستی در دیتابیس ذخیره میشه منتهی دانش آموز اول به بعد ذخیره نمیشه و این خطا نمایش داده میشه:
Column 'StudentId' specified twice

هرچی برسی و آزمون و خطا کردم بی فایده بود و الان دوباره به راهنمایی احتیاج دارم.
کد جدید رو اینجا میذارم:


//get fields from form
$tedad = @$HTTP_POST_VARS["tedad"];
$tedad = $tedad + 1;
$forr = 1;
$x_Dars = @$HTTP_POST_VARS["dars"];

$term11 = @$HTTP_POST_VARS["x_term11"];
$term12 = @$HTTP_POST_VARS["x_term12"];
$term21 = @$HTTP_POST_VARS["x_term21"];
$term22 = @$HTTP_POST_VARS["x_term22"];
$x_StudentId = @$HTTP_POST_VARS["x_stuid"];


do
{

$userquery=mysql_query("select StudentId, Username from student where Username = '$x_StudentId[$forr]'");
$userresult = mysql_num_rows($userquery);

if($userresult==0)
{

echo "<script>alert('خطایی در یافتن دانش آموز برای ثبت نمره روی دارد.'); history.back();</script>";

exit();
}
$userrow = mysql_fetch_array($userquery);
$studid = $userrow['StudentId'];

$fieldList[] = "`CourseSectionId`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_Dars) : $x_Dars;
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`term11`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_term11) : $term11[$forr];
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`term12`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_term12) : $term12[$forr];
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`term21`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_term21) : $term21[$forr];
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`term22`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($x_term22) : $term22[$forr];
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;

$fieldList[] = "`StudentId`";
$theValue = (!get_magic_quotes_gpc()) ? addslashes($studid) : $studid;
$theValue = ($theValue != "") ? " '" . $theValue . "'" : "NULL";
$valList[] = $theValue;


$insertSQL = "INSERT INTO `nomarat` (";
for ($i = 0;$i < count($fieldList); $i++) {
$insertSQL .= $fieldList[$i];
if ($i != count($fieldList) - 1) {
$insertSQL .= ",";
};
};
$insertSQL .= ") VALUES (";
for ($i = 0;$i < count($valList); $i++) {
$insertSQL .= $valList[$i];
if ($i != count($valList) - 1) {
$insertSQL .= ",";
};
};
$insertSQL .= ")";

$rs = mysql_query($insertSQL, $ServerConnect) or die(mysql_error());


mysql_free_result($userquery);
unset($userresult);
unset($userrow);
unset($studid);

$forr = $forr + 1;
} while ($forr < $tedad);
//end do
mysql_free_result($rs);
mysql_close($ServerConnect);

ob_end_clean();
header("Location: admin_nomarat_add.php");
break;
}

vahid4134
پنج شنبه 03 مرداد 1387, 12:16 عصر
چه کوئری ارسال میشه که این اخطار رو میده؟

hamid_2fun
جمعه 04 مرداد 1387, 05:31 صبح
مشکلم حل شد وحید عزیز، باز هم تشکر.

yaqubian
جمعه 04 مرداد 1387, 18:58 عصر
دوست عزیز
نه همون نسخه خودتون رو می گم.
البته اگه امکان داره.
ممنون
موفق باشید

meysam7972
جمعه 23 خرداد 1393, 15:32 عصر
ذخیره اطلاعات زیاد بصورت یکجا در mysql


با سلام خدمت اساتید محترم چجور میشه اطلاعات زیاد مثلا 5000 رکورد اطلاعاتی رو بصورت یکجا در بانک اطلاعاتی mysql ذخیره کرد؟
کارم حیاتیه
آیا function چیزی هست که بتونم مشکلمو حل کنم؟
:متفکر::افسرده:

cpuram
جمعه 23 خرداد 1393, 16:16 عصر
تاپیک 1387