درخواست راهنمایی برای طراحی یک نرم افزار PHP
سلام!
من دارم یک نرم افزار مدیریت مدرسه مینویسم که چون خیلی برنامه نویسی تحت وب بلد نیستم ناچارا از روی یه نسخه Free بنام ischoolad شروع کردم و نرم افزارم رو توسعه دادم و الان درواقغ فقط بخش نمره هاش باقی مونده و در طراحی این قسمتش مشکل دارم.
من میتونم نمره های هر دانش آموز رو در یک صفحه بگیرم توی DB ذخیره کنم ولی اینطور وارد کردن نمرات در عمل غیر ممکنه، بنابراین باید همه دانش آموزای مورد نظر فهرست بشن و بعد نمره همه اونها یکجا وارد بشه؛ من فهرست دانش آموزهارو به این شکل تولید کردم ولی طوری که من بلدم (دریافت جدا جدای نمرات دانش آموزا) برای اینکه بعد از کلیک روی دکمه "ثبت" همه نمرات ذخیره بشه باید به این شکل اطلاعات رو دریافت کرد:
$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"];
اما در این حالت (دریافت نمره های چند دانش آموز بصورت همزمان) ما بینهایت فیلد نمره داریم که قراره به صفحه برگردونده بشن، پس چطوری میشه اطلاعات این فیلدهارو پردازش کرد؟
اگه بتونید به من کد یک صفحه بدید که همچین کاری توش انجام بشه، یعنی یک فیلد مشترک برای تعدادی رکورد دریافت بشه و در دیتابیس ذخیره بشه، کمک خیلی بزرگیه. ممنون.
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
نام فیلدهایی رو که مثلا برای نمره اول اینطوری بنویس
grade1[stid]
به جای stid همون کد دانش آموزی رو بزار
بعدش یه print_r از متغیرت بگیر خودت متوجه میشی
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
دوست عزیز
لطفا اگه می شه یه نسخه از برنامه رو هم واسه دانلود بذارید.
ممنون
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
منظورتون نسخه اصلی ischoolad هست یا اونی که من دارم آمادش میکنم؟
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
دوستان من هنوز مشکل دارم، با راهنمایی وحید عزیز هم نتونستم به اطلاعات فیلدهام دسترسی پیدا کنم. اینجا کد قسمتی که بعد از 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;
}
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
الان این کد در شرط $userresult==0 متوقف میمونه و دانش آموز پیدا نمیشه. علتشم اینه که مقدار شماره دانش آموز از فرم برگردانده نشده.
البته اطلاعات از فرم به درستی ارسال میشه، چون وقتی با متد get میفرستم در آدرس مشخصه که اطلاعات بصورت صحیح ارسال شده:
http://ketabnak.com/ischoolad/admin_...dd.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
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
شما دارید اشتباه می نویسید شما یکبار متغیر $_GET رو print_r بگیرید متوجه خواهید شد. عرض کردم بهتون. در واقع الان $_GET[x_term11]] خودش یک آرایه هست
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
وحید عزیز، از راهنمائیتون ممنون، دفعه اول متوجه منظورتون نشدم. کدم رو تصحیح کردم و با این کد جدید اطلاعات دانش آموز اول به درستی در دیتابیس ذخیره میشه منتهی دانش آموز اول به بعد ذخیره نمیشه و این خطا نمایش داده میشه:
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;
}
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
چه کوئری ارسال میشه که این اخطار رو میده؟
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
مشکلم حل شد وحید عزیز، باز هم تشکر.
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
دوست عزیز
نه همون نسخه خودتون رو می گم.
البته اگه امکان داره.
ممنون
موفق باشید
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP
ذخیره اطلاعات زیاد بصورت یکجا در mysql
با سلام خدمت اساتید محترم چجور میشه اطلاعات زیاد مثلا 5000 رکورد اطلاعاتی رو بصورت یکجا در بانک اطلاعاتی mysql ذخیره کرد؟
کارم حیاتیه
آیا function چیزی هست که بتونم مشکلمو حل کنم؟
:متفکر::افسرده:
نقل قول: راهنمایی برای طراحی یک نرم افزار PHP