רשימת הציונים - SELECT
הקובץ grade_select.php בוחר מטבלת הקורס את כל השורות ומציג את רשימת הציונים של התלמידים.
כדי להוציא נתונים מטבלה, אנו משתמשים בשאילתת SELECT
של שפת SQL, שמגדירה את השורות והעמודות שרוצים לבחור מן הטבלה. ניתן להוסיף לשאילתא פרמטרים נוספים שישנו את התוצאה המתקבלת, כמו סידור וקיבוץ השורות לפי עמודות מסויימות. לא נפרט ממש כיצד בונים שאילתת SELECT
(רצוי לקרוא הסבר מפורט יותר במקורות אחרים), אך באופן כללי, שאילתת SELECT
של שפת SQL נראית כך:
SELECT query
SELECT select_expr1,.../* | בחירה של select_expr1 , ועוד רשימה נוספת של עמודות וביטויים לבחירה... | */ |
[FROM table_name
[WHERE where_condition]/* | שורות שמקיימות את התנאי where_condition ... | */ |
[GROUP BY group_criteria]/* | קיבוץ שורות לפי הקריטריון group_criteria ... (בדר"כ מציינים מספר או שם עמודה) | */ |
[HAVING having_condition]/* | שורות מקובצות שמקיימות את התנאי having_condition ... | */ |
[ORDER BY order_criteria]/* | סידור שורות לפי הקריטריון order_criteria ... (בדר"כ מציינים מספר או שם עמודה) | */ |
[LIMIT num_rows]/* | הגבלת מספר השורות בתוצאה למספר num_rows ... | */ |
]
קטע הקוד הבא מתוך הקובץ בונה את שאילתת ה-SQL לבחירת רשימת התלמידים וציוניהם. הקוד גם מסדר את השורות לפי עמודה מסויימת, בהתאם לנתון sort
המתקבל מן ה-URL.
file name: grade_select.php
<?php include "grade_connect.php";/* | מתחבר לבסיס הנתונים ולמסד הנתונים. | */ |
//building the sql query:
$grade_show_query=
"SELECT * FROM ".$grade_course_table/* | בוחר את כל העמודות מן הטבלה המוגדרת ב-$grade_course_table . | */ |
;
switch ($_GET["sort"])/* | בודק את הערך של הנתון sort המתקבל דרך מתודת GET. מוסיף לשאילתא פקודה שמסדרת את השורות לפי עמודה מסויימת. | */ |
{
case "idnum":
$grade_show_query.=
" ORDER BY id_number"/* | מסדר לפי העמודה של מספר הזהות, מהקטן לגדול. | */ |
;
//sort by id number (down to top)
break;
case "grade1":
$grade_show_query.=
" ORDER BY -grade_1";/* | מסדר לפי העמודה של ציון מועד א, מהגדול לקטן. | */ |
//sort by grade 1 (top to down)
break;
case "grade2":
$grade_show_query.=
" ORDER BY -grade_2";
//sort by grade 2 (top to down)
break;
case "gradefinal":
$grade_show_query.=
" ORDER BY -grade_final";
//sort by final grade (top to down)
break;
}
$grade_result/* | מכיל את הידית של תוצאת השאילתא. | */ |
=
@mysql_query($grade_show_query,$grade_con)/* | מריץ את השאילתא על בסיס הנתונים. | */ |
or die("<BR><B>ERROR:</B> error occured in mysql query.<BR>");/* | במקרה של כשלון בהרצת השאילתא, מדפיסים הודעת שגיאה ועוצרים. שגיאה נגרמת בדר"כ כאשר תחביר השאילתא לא נכון. | */ |
//execute the query or exit on failure
?>
קטע הקוד הבא משתמש בתוצאת השאילתא $grade_result
, ומדפיס את טבלת הציונים של התלמידים בקורס. הפונקציה mysql_fetch_array() מוציאה מתוך תוצאת השאילתא שורה מהתוצאה בצורה של מערך עם מפתחות שהם שמות העמודות. כל קריאה נוספת לפונקציה מוציאה את השורה הבאה מתוצאת השאילתא. כאשר אין עוד שורות בתוצאת השאילתא מוחזר NULL
.
file name: grade_select.php (continue)
<P>הקלק על כותרת העמודה כדי לסדר את הטבלה לפי עמודה מסויימת.</P>
<TABLE border=1 cellpadding=2 cellspacing=2>
<TR>
<TH width=200 align="center">/* | כותרות העמודות של הטבלה. כאשר לוחצים על כותרת, אז הטבלה מסתדרת לפיה. | */ |
<A href="<?=
$_SERVER[
"PHP_SELF"];
?>?sort=idnum">מספר זהות של התלמיד</A></TH>
<TH width=150 align="center"><A href="<?=
$_SERVER[
"PHP_SELF"];
?>?sort=grade1">ציון מועד א</A></TH>
<TH width=150 align="center"><A href="<?=
$_SERVER[
"PHP_SELF"];
?>?sort=grade2">ציון מועד ב</A></TH>
<TH width=150 align="center"><A href="<?=
$_SERVER[
"PHP_SELF"];
?>?sort=gradefinal">ציון סופי</A></TH>
</TR>
<? //printing all the rows of the students:
while ($grade_row=mysql_fetch_array($grade_result))/* | כל עוד יש שורות בתוצאת השאילתא. כל השורה אנו מוציאים מתוך תוצאת השאילתא, ושומרים אותה במשתנה $grade_row . כאשר אין עוד שורות בתוצאה מוחזר NULL , והלולאה מסתיימת. | */ |
//as long as there are rows in the result
{
echo "<TR>";
echo "<TD align=\"right\"><B>".$grade_row["id_number"]."</B></TD>";/* | מדפיסים את המידע של כל שורה מתוצאת השאילתא. | */ |
echo "<TD align=\"center\">".
(($grade_row["grade_1"]!=null)?$grade_row["grade_1"]:"---")/* | מדפיס את הציון, ובמקרה ששדה הציון הוא ריק מדפיס "---". | */ |
.
"</TD>";
echo "<TD align=\"center\">".((
$grade_row[
"grade_2"]!=
null)?
$grade_row[
"grade_2"]:
"---").
"</TD>";
echo "<TD align=\"center\"><B>".((
$grade_row[
"grade_final"]!=
null)?
$grade_row[
"grade_final"]:
"---").
"</B></TD>";
echo "</TR>";
}
?>
</TABLE>
איך אפשר להפוך את הסדר? | 07-12-03 04:01 עידו פורטל | #940 |
| אני רוצה שהברירת מחדש תהיה סידור לפי ID הפוך זאת אומרת לפי סדר יורד. כרגע הברירת מחדל היא סידור לפי ID עולה.
תודה רבה. |
|
תגובה | 07-12-03 07:00 אור | #955 |
| אתה משנה את כול השורות אשר יש בהם:
ORDER BY
ל-
ORDER BY some_row des |
|
סידור ב-SQL | 07-12-03 07:01 אלי חן (מנהל) | #958 |
| ניתן לסדר רשומות ע"י שימוש ב-ORDER. יופיע לאחר החלק של ה-WHERE. בפורמט:
ORDER BY col_name [ASC|DESC]
ASC - מסדר בסדר עולה (ברירת מחדל אם לא מצויין כיוון סידור).
DESC - מסדר בסדר יורד. |
|
נראה לי שלא הבנתם אותי.. | 07-12-03 07:01 עידו פורטל | #968 |
| אני מדבר על הקובץ הספציפי הזה
הברירת מחדל של הסידור שלו זה בסדר עולה מ 1 והלאה...
אני רוצה לשנות את "הברירת מחדל" שיהיה סדר יורד.
ואם תוכל גם לכתוב לי כאן איפה אני אמור לשנות את הקוד
תודה מראש.. |
|
ככה מסדרים | 07-12-03 14:01 דור | #988 |
| אתה לוקח את השאילתא ומוסיף לה בסוף order by desc/asc. לדוגמא:
select * from students order by name desc |
|
איך מבטלים את הלולאה ש.. | 08-12-03 22:01 איציק | #1083 |
| איך מבטלים את הלולאה שמציגה בעצם את כל הנתונים? אני רוצה שהיא תציג רק את החדש ביותר. |
|