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

רשימת הציונים - SELECT

הקובץ grade_select.php בוחר מטבלת הקורס את כל השורות ומציג את רשימת הציונים של התלמידים.

שאילתת SELECT

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

SELECT query
SELECT select_expr1,...
/*בחירה של select_expr1, ועוד רשימה
נוספת של עמודות וביטויים לבחירה...
*/

   [FROM table_name
/*מהטבלה 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

איך מבטלים את הלולאה שמציגה בעצם את כל הנתונים? אני רוצה שהיא תציג רק את החדש ביותר.


לדף הקודםהתחברות לבסיס הנתונים -הקודם
לתחילת הדףלתחילת הדף
הבא- הכנסת תלמיד חדש - INSERTלדף הבא