אתה נמצא כאן מדריכים  >>  MySQL - רשימת תלמידים  >>  הכנסת תלמיד חדש - INSERT

הכנסת תלמיד חדש - INSERT

הקובץ grade_insert.php מכניס לטבלת הקורס נתונים על תלמיד חדש בקורס.

שאילתת INSERT

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

INSERT query
INSERT INTO table_name
/*הכנסת נתונים לטבלה table_name...*/
 [(col_name1,...)]
/*רשימת העמודות להם מכניסים ערכים.
אם לא מציינים רשימה, אז צריך להכניס
ערכים מתאימים לכל העמודות בטבלה
לפי סדר הופעתם בטבלה.
*/

   VALUES (expr1,...)
/*רשימת הערכים שמכניסים לטבלה.
מסודרים לפי סדר העמודות שהגדרנו
ברשימת העמודות.
הערכים המוגדרים צריכים להיות בין ' '.
*/

טופס הכנסת התלמיד החדש

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

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

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

בדיקת הטופס והוספת הנתונים

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

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

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

  {
     $grade_1=$_POST["grade_insert_grade1"];
     $grade_2=$_POST["grade_insert_grade2"];
     $grade_final=$_POST["grade_insert_gradefinal"];
  
     //checking errors in the form:
  
   $grade_insert_errors="";
/*בודקים טעויות בטופס.
אם יש טעות אז כותבים אותה במשתנה הזה,
ואם משתנה זה הוא מחרוזת ריקה אז אין טעות.
*/

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

     {
        //calculating the grades to insert:
  
      $insert_grade_1=$grade_1;
        $insert_grade_2=$grade_2;
        $insert_grade_final=(($grade_final!="")?$grade_final:(($_POST["grade_insert_autofinal"]==true)?(($grade_2!="")?$grade_2:$grade_1):""));
/*מגדיר ציון סופי בקורס:
אם שדה הציון הסופי חוקי,
אז לוקחים את הציון שנשלח.
אחרת, אם חישוב אוטומטי נבחר, אז:
אם ציון מועד ב קיים, לוקחים את מועד ב.
אחרת לוקחים את מועד א.
אחרת, אין ציון סופי.
*/

        //building the SQL query for the insertion:
  
      $grade_insert_query
/*מכיל את הטקסט של שאילתת ה-INSERT.*/
="INSERT INTO ".$grade_course_table." (id_number".(($insert_grade_1!="")?",grade_1":"")."".(($insert_grade_2!="")?",grade_2":"")."".(($insert_grade_final!="")?",grade_final":"").")
/*רשימת העמודות.
עמודות שהן ריקות לא מצויינות ברשימה.
*/
 VALUES ("
;
        $grade_insert_query.="'".$_POST["grade_insert_idnum"]."'";
        $grade_insert_query.=($insert_grade_1!="")?",'$insert_grade_1'":"";
/*מוסיף את הנתונים (שהם
לא ריקים) לשאילתא.
*/

        $grade_insert_query.=($insert_grade_2!="")?",'$insert_grade_2'":"";
        $grade_insert_query.=($insert_grade_final!="")?",'$insert_grade_final'":"";
        $grade_insert_query.=")";
        $grade_result=@mysql_query($grade_insert_query,$grade_con);
/*מריץ את שאילתת ה-INSERT,
ושומר את הנתונים ב-$grade_result.
(לא עושים ממש שימוש במשתנה זה).
*/

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

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

        {
           echo "<BR><B>מספר הזהות שהכנסת כבר קיים בקורס זה.</B><BR>";
           unset($_POST["grade_insert_button"]);
/*מוחק את הנתון של כפתור השליחה,
כך שנוכל להדפיס את הטופס שוב
לצורך תיקונים.
*/

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

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

     }
  }
?>

לפני שבונים את שאילתת ה-INSERT, חישבנו את הציונים של התלמיד לפי הטופס, ואז בנינו את השאילתא, כך שאת שדות הציונים שאין בהם ערך (מחרוזת ריקה) לא כתבנו כלל בשאילתא. במקרה כזה, הציונים שלא צויינו בשאילתא קיבלו את ערך ברירת המחדל, NULL. אם היינו כותבים בשאילתא גם את שדות הציונים הריקים עם הערך של מחרוזת ריקה, העמודה בטבלה הייתה מקבלת את הערך המספרי השקול ל-NULL, כלומר את הערך 0.


תגובות בנושא

לא הולך לי משהו.. 04-12-03 05:00
 רון בן שמואל
#799

$db=name_data;
$sql="INSERT INTO ".$db." (username) VALUES ($username)";
$result=mysql_query($sql,$mysql_link);
if (mysql_affected_rows()==1) {
echo "Successfully entered deatlis to Database";
}
else
{
echo "<font color=red>Database could not get you username,password and email</font>";
}
mysql_close($mysql_link);
?>

מה לא טוב כאן?
זה לא מצליח להוסיף את מה שאני רוצה

שאילתא שגויה 04-12-03 08:00
 אלי חן (מנהל)
#806

השאילתא הנכונה צריכה להיות כך:

"INSERT INTO ".$db." (username) VALUES ('".mysql_escape_string($username)."')"

(תעתיק את השורה ותדביק בקוד כדי לראות משמאל לימין)

תיראו מזה 06-12-03 04:01
 יש בעיה בזה
#888

עשיתי הכל אבל יש לי בעיה בלהוסיף תלמיד
מה לכתוב במס' התלמיד?
אני כותב 1 וזה כותב לי שזה לא חוקי

מספר תעודת זהות חוקי 06-12-03 09:02
 אלי חן (מנהל)
#908

בסקריפט הזה מספר תעודת זהות נחשב לחוקי רק אם הוא מכיל 8 או 9 ספרות בלבד.
הכנסת המספר 1 בלבד לא מהווה מספר תעודת זהות חוקי..

אממממ לא פועל הקוד 01-12-04 05:02
 שמוליק ניסו
#1369

"INSERT INTO ".$db." (username) VALUES ('".mysql_escape_string($username)."')"

איך אני מכניס פה לשתי עמודות שתי משתנים?
זה לא מכניס אם אני עושה ככה למשל

"INSERT INTO bla (username,aa) VALUES ('".mysql_escape_string($username,$aaaa)."')"

משהו מוזר 07-12-05 15:00
 מושיק כהן
#2603

שאני נכנס להרשמה זה מתחבר לבMYSQL אבל שאני שולח את ההרשמה זה אומר ש"מספר הזהות שהכנסת כבר קיים בקורס זה" והוא לא
לא נגעתי בכלום מה הבעייה??
הא וגם לא הבנתי את משפט הIF הזה :
if (mysql_affected_rows()==1
מה זה אומר mysql_affected_rows

זה ממש חשוב לי תודה לעזורים

לא הבנתי ממש 03-11-10 07:00
 אדיר מכלוף
#2890

הבנתי תחלק הראשון הכנסתי אותו לקובת php אחרי זה אני לא מבין איך החלק השני קשור או אאיך מקשרים ביניים


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