הכנסת תלמיד חדש - INSERT
הקובץ grade_insert.php מכניס לטבלת הקורס נתונים על תלמיד חדש בקורס.
כדי להכניס נתונים לטבלה, אנו משתמשים בשאילתת 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 אחרי זה אני לא מבין איך החלק השני קשור או אאיך מקשרים ביניים |
|
|
|
|
|
הוספה למועדפים:
|