אתה נמצא כאן מדריכים  >>  MySQL - רשימת תלמידים  >>  עדכון ציונים - UPDATE

עדכון ציונים - UPDATE

הקובץ grade_update.php מעדכן נתונים לגבי תלמיד שכבר נמצא בקורס.

שאילתת UPDATE

כדי לעדכן נתונים בטבלה, אנו משתמשים בשאילתת UPDATE של שפת SQL, שמשנה ערכים עבור עמודות מסויימות בשורות מסויימות. באופן כללי, שאילתת UPDATE של שפת SQL נראית כך (רצוי לקרוא הסבר מפורט יותר במקורות אחרים):

UPDATE query
UPDATE table_name
/*עדכון הטבלה table_name...*/

   SET col_name1=expr1
/*עדכון עמודות...
עדכון עמודה col_name1 לערך expr1...
*/
 [,col_name2=expr2,...]
/*עדכון עמודות נוספות...*/

      [WHERE where_condition]
/*שורות שמקיימות
את התנאי where_condition...
*/

      [LIMIT num_rows]
/*הגבלת מספר השורות לעדכון
למספר num_rows...
*/

טופס לעדכון ציוני תלמיד

קטע הקוד הבא מדפיס את הטופס לעדכון ציונים של תלמיד ברשימה. שדה מספר הזהות של התלמיד הוא שדה חובה. אם משאירים תיבת ציון ריקה, היא תיחשב כמו "אין ציון". כאשר מכניסים ציון סופי, אז מתעלמים מתיבת הבחירה של חישוב ציון סופי אוטומטי.

file name: grade_update.php (second part)
<?php
  if (!isset($_POST["grade_update_button"]))
/*אם כפתור השליחה של הטופס לא מוגדר,
אז מדפיסים את הטופס.
*/

  {
     //printing the form (and its old data, if was submitted before):
  
   ?>
   (השארת תיבה ריקה תיחשב כציון 0).
   <FORM action="
<?= $_SERVER["PHP_SELF"]; ?>" method="POST">
      <TABLE border=0 cellpadding=3 cellspacing=3>
         <TR>
            <TD>מספר זהות של התלמיד:*</TD>
            <TD><INPUT type="TEXT" name="grade_update_idnum" size=15 maxlength=9 value="
<?= $_POST["grade_update_idnum"]; ?>"></TD>
         </TR>
         <TR>
            <TD>ציון מועד א:</TD>
            <TD><INPUT type="TEXT" name="grade_update_grade1" size=5 maxlength=3 value="
<?= $grade_grade1; ?>"></TD>
         </TR>
         <TR>
            <TD>ציון מועד ב:</TD>
            <TD><INPUT type="TEXT" name="grade_update_grade2" size=5 maxlength=3 value="
<?= $grade_grade2; ?>"></TD>
         </TR>
         <TR>
            <TD>ציון סופי:</TD>
            <TD><INPUT type="TEXT" name="grade_update_gradefinal" size=5 maxlength=3 value="
<?= $grade_grade_final; ?>"> <INPUT type="CHECKBOX" name="grade_update_autofinal" checked> חישוב אוטומטי</TD>
         </TR>
         <TR>
            <TD align="right"><INPUT type="SUBMIT" name="grade_update_button" value=" עדכן ציונים "></TD>
            <TD align="left"><INPUT type="RESET" value="נקה טופס"></TD>
         </TR>
      </TABLE>
   </FORM>
   
<?
  }
?>

עדכון ציוני התלמיד

קטע הקוד הבא בודק את שדות הטופס ומוודא שהם חוקיים. באם יש טעות אז מודפסת הודעת שגיאה, והמשתמש מתבקש לתקן את הטעות. ואם הטופס מולא כראוי, אז מעדכנים את ציוני התלמיד המבוקש, ובמקרה של כשלון נדפיס הודעת שגיאה.
חשוב לציין כי הקוד הבא מופיע לפני הקוד של הדפסת הטופס.

file name: grade_update.php (first part)
<?php
  include "grade_connect.php"; //connecting to MySQL server and DB
  

  if (isset($_POST["grade_update_button"]))
/*אם הטופס נשלח.*/

  {
     $grade_1=$_POST["grade_update_grade1"];
     $grade_2=$_POST["grade_update_grade2"];
     $grade_final=$_POST["grade_update_gradefinal"];
  
     //checking errors in the form:
  
   $grade_update_errors="";
/*בודקים טעויות בטופס.
אם יש טעות אז כותבים אותה במחרוזת.
אם המחרוזת ריקה אז אין שגיאה.
*/

     if ($_POST["grade_update_idnum"]=="") //if no id number entered
  
      $grade_update_errors.="מספר הזהות של התלמיד הוא שדה חובה.<BR>";
     elseif (preg_match("/^\d{8,9}$/"
/*תבנית שמגדירה מספר שלם
בן 8 או 9 ספרות.
*/
,$_POST["grade_update_idnum"])==0) //if id number entered, but not legal
  
      $grade_update_errors.="מספר הזהות שהכנסת הוא לא חוקי.<BR>";
     if ($grade_1!="" && preg_match("/^(?:100|\d{1,2})$/"
/*תבנית שמגדירה ציון:
מספר 100 או מספר בן 1-2 ספרות.
*/
,$grade_1)==0) //if grade is not legal
  
      $grade_update_errors.="ציון מועד א אינו חוקי.<BR>";
     if ($grade_2!="" && preg_match("/^(?:100|\d{1,2})$/",$grade_2)==0) //if grade is not legal
  
      $grade_update_errors.="ציון מועד ב אינו חוקי.<BR>";
     if ($grade_final!="" && preg_match("/^(?:100|\d{1,2})$/",$grade_final)==0) //if grade is not legal
  
      $grade_update_errors.="ציון סופי אינו חוקי.<BR>";
     if ($grade_1=="" && $grade_2=="" && $grade_final=="") //if no grade entered for upgrade
  
      $grade_update_errors.="לא הכנסת אף ציון לעדכון.<BR>";
  
     if ($grade_update_errors=="")
/*אם אין שגיאות בטופס,
אז מעדכנים את ציוני התלמיד.
*/

     {
        //calculating the grades to update:
  
      $update_grade_1=$grade_1;
        $update_grade_2=$grade_2;
        $update_grade_final=(($grade_final!="")?$grade_final:(($_POST["grade_update_autofinal"]==true)?(($grade_2!="")?$grade_2:$grade_1):""))
/*מגדיר ציון סופי בקורס:
אם שדה הציון הסופי חוקי,
אז לוקחים את הציון שנשלח.
אחרת, אם חישוב אוטומטי נבחר, אז:
אם ציון מועד ב קיים, אז לוקחים את מועד ב.
אחרת לוקחים את מועד א.
אחרת, אין ציון סופי (כאן ייחשב כציון 0).
*/
;
        //building the SQL query for the update:
  
      $grade_update_query
/*מכיל את המחרוזת של שאילתת ה-UPDATE.*/
="UPDATE ".$grade_course_table." SET grade_1=".(($update_grade_1!="")?"'$update_grade_1'":"NULL").",grade_2=".(($update_grade_2!="")?"'$update_grade_2'":"NULL").",grade_final=".(($update_grade_final!="")?"'$update_grade_final'":"NULL")."
/*עדכון הציונים של מועד א,
מועד ב וציון סופי.
אם אין ציון אז שמים NULL.
*/
 WHERE id_number='"
.$_POST["grade_update_idnum"]."'
/*בשורה בה מספר הזהות הוא כמבוקש.*/
"
;
        $grade_result=@mysql_query($grade_update_query,$grade_con);
/*מריץ את שאילתת ה-UPDATE,
ושומר את הנתונים ב-$grade_result.
(לא עושים ממש שימוש במשתנה זה).
*/

        if (mysql_affected_rows()==1)
/*אם מספר השורות שעודכנו בטבלה,
הוא 1, אז הציונים עודכנו.
*/

        {
           echo "<BR><B>ציוני התלמיד (".$_POST["grade_update_idnum"].") עודכנו בהצלחה.</B><BR>";
           echo "<BR><A href=\"".$_SERVER["PHP_SELF"]."\">עדכן נתוני תלמיד חדש</A><BR>";
        }
        else
/*אחרת, אם עדכון הציונים נכשל.*/

        {
           echo "<BR><FONT color=\"##FF0000\">שגיאה: נתוני התלמיד לא עודכנו! (ייתכן שמספר הזהות לא נמצא ברשימה)</FONT><BR>";
           unset($_POST["grade_update_button"]);
/*מוחק את הנתון של כפתור השליחה,
כך שנוכל להדפיס את הטופס שוב
לצורך תיקונים.
*/

        }
     }
     else
/*אחרת, אם יש שגיאות במילוי הטופס.*/

     {
        echo "<FONT color=\"#FF0000\">".$grade_update_errors."</FONT><BR>";
        unset($_POST["grade_update_button"]);
/*מוחק את הנתון של כפתור השליחה,
כך שנוכל להדפיס את הטופס שוב
לצורך תיקונים.
*/

     }
  }
?>


תגובות בנושא


לדף הקודםמחיקת תלמיד - DELETE -הקודם
לתחילת הדףלתחילת הדף
הבא- יצירת תבניות - templatesלדף הבא