PracticU

קורס PHP - הרצאה 6

בלי כתוביותעם כתוביות
PracticU › קורס PHP - פרויקט מעשי › קורס PHP - הרצאה 6
מילון מושגים:
PHP - שפת תכנות לצד השרת, נפוצה בבניית אתרים דינמיים ומערכות ניהול תוכן כמו WordPress.
אלגוריתם - רצף מוגדר של צעדים לפתרון בעיה או לביצוע משימה, שאפשר לממש בקוד.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.

קורס PHP - הרצאה 6
בהרצאה זו מוצג אלגוריתם לחלוקת מוצרים לטווחים לפי התפריט הראשי שלהם, בעזרת מערכים וסוויץ'. המטרה היא לדעת, לפי מזהה המוצר, באיזו תיקייה נמצאת תמונתו בשרת. המרצה מכין את התיאור ב-Word לפני ההרצאה, ומעביר אותו לקוד PHP בשלבים. האלגוריתם נכתב כמחלקה בשם DismantlingArray, כדי שיהיה קל לשלוח אליו את הנתונים ולקבל ממנו את התוצאה.
המחלקה והנתונים שלה
1. השאילתה: המחלקה קוראת את כל השורות מטבלת המוצרים בעזרת set_query ו-get_query, וכך מקבלים את הטבלה כמשתנה אחד.
2. מונה השורות: num_rows מחזיר כמה שורות יש בטבלה, כדי לדעת מתי מגיעים לסוף. בדוגמה מדובר בכ-127 שורות.
3. המערך המרכזי: המחלקה מחזיקה מערך שבו כל איבר הוא טווח, והטווח עצמו הוא מערך עם ערך מינימלי וערך מקסימלי.
4. פונקציה בונה: הבנייה שולפת את השורה הראשונה ומגדירה את התחלת הטווח הראשון.
האלגוריתם
1. הרעיון: עוברים על הטבלה שורה אחר שורה. כל עוד מזהה התפריט הראשי נשאר זהה, הטווח ממשיך. כשהמזהה משתנה, סוגרים את הטווח הקודם ופותחים טווח חדש.
2. שמירה במערכים: כל טווח נשמר במערך עם מפתח min ומפתח max, והמערכים נדחפים לתוך מערך אב בעזרת array_push.
3. החזרת המצביע: mysql_data_seek מחזיר את המצביע לשורה הראשונה אחרי השליפה הראשונית, כדי שהלולאה הראשית תתחיל מההתחלה.
4. השורה האחרונה: כשמגיעים לשורה האחרונה בטבלה, הטווח נסגר בערך של השורה עצמה, כי אין שורה נוספת שתסגור אותו.
5. בדיקת הסוף: בלולאה יש תנאי שמבדיל בין השורה האחרונה לאחרות, כדי לא לאבד את הטווח האחרון.
דוגמה עם המוצרים
1. תפריט 1: שורות 1 עד 6 שייכות לתפריט 1, ולכן הטווח הראשון הוא מ-1 עד 6.
2. תפריט 2: השורה השביעית שייכת לתפריט אחר, ולכן הטווח הקודם נסגר והטווח הבא מתחיל מ-7.
3. סוף הטבלה: בסוף מתקבל מערך של טווחים, שלכל אחד מהם יש תחילה וסוף.
סוויץ' ו-break
1. switch: בודק ערך יחיד מול רשימת case.
2. break: מסיים את הסוויץ' כשנמצאה התאמה. בלעדיו הקוד ממשיך לבדוק את ה-case הבא, גם אחרי שכבר נמצאה התאמה.
3. default: מופעל כשאף case לא מתאים.
4. טווחים: אפשר לבדוק בתוך case גדול-שווה וקטן-שווה, כדי לשייך מספר לטווח. כך מתאימים את מזהה המוצר לתיקייה הנכונה.
שימו לב
האלגוריתם מניח שמוצרים של אותו תפריט ראשי מופיעים ברצף. לכן הוא בודק רק את השינוי בערך ולא עובר על כל הטבלה מחדש בכל שלב. המרצה מציע להדפיס את המערך עם print_r כדי לוודא שהטווחים נבנו נכון לפני שממשיכים לשלב הבא, שבו נבנה את מסך העימוד.
השיעור הבא בקורס: קורס PHP - הרצאה 7

פרקי ההרצאה: קורס PHP - הרצאה 6

  1. 00:00

    מבוא: תפריט מוצרים ותמונות לפי קטגוריה

  2. 01:05

    מבנה תיקיות התמונות בשרת

  3. 02:56

    האלגוריתם: טווחי תת-תפריטים

  4. 05:33

    מחלקה לפירוק המערך

  5. 07:13

    שליפת השורות ממסד הנתונים

  6. 10:57

    ספירת השורות בטבלה עם num_rows

  7. 12:26

    שליפת שורה כמערך עם fetch_array

  8. 13:33

    השוואת מזהה תפריט האב

תמלול ההרצאה: קורס PHP - הרצאה 6

הטקסט המלא של הדקות הראשונות בהרצאה «קורס PHP - הרצאה 6» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:05

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

  2. 00:27

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

  3. 01:02

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

  4. 01:23

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

  5. 01:54

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

  6. 02:11

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

  7. 02:38

    בואו נראה את זה פה, כן, בואו תראו, זה לא נמצא פה כי זה נמצא בווירצ'ואל 4, בעצם אני הפעלתי פה את ווירצ'ואל 4, אם אני אכנס כרגע לתיקיית ווירצ'ואל 4, ל-image p, ל-a, הנה 9, זה התמונה שהתבצעה.

  8. 02:56

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

  9. 03:18

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

  10. 03:30

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

  11. 03:56

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

  12. 04:11

    זה יהיה לכם בדף של הדוגמאות, ככה שתוכלו לקרוא, אבל אני רק מראה כרגע באיור. ככה, איור לדוגמה. הוא נתקל בתפריט ID 1, נכון?

  13. 04:22

    ה-Main Product ID זה 1. אוקיי, עדיין זה זה, אז הגבול ההתחלתי המינימלי הוא 1. ממשיך, ממשיך, ממשיך, ממשיך. פה פתאום זה אבא אחר, אז רגע, תעצור אז בעצם הגבול שלאומי 1 עד 6, הנה זה קורה פה חוזרים אחורה, מקסימום שווה 6, מינימום שווה 1 דוחפים את זה למערך ומתקדמים

  14. 04:45

    אבל לשים לב, המינימום זה 7 עכשיו עד שהוא נתקל במשהו שונה שזה פה, בעצם אז זה אתם יכולים לראות את זה פה, הנה מיין פרודקטיידי שונה, נכון? 3, מיין פרודקטיידי 3 הוא שונה מ-2 חוזרים אחורה ובעצם שלפנו כבר את השורה הזאת אז אני חוזר לפה מקסימום זה 9 מינימום זה 7 דוחפים למערך ומתקדמים וכן הלאה והלאה והלאה ובסוף אנחנו נחזיר נראה את הטווח אם זה מן

  15. 05:14

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

  16. 05:32

    קודם כל, אני הולך לבנות את הכל עם קלאס, אוקיי? בואו נעשה קלאס, ונקרא לזה Dismantling Array, אוקיי?

  17. 05:41

    דיס, אני מקווה שאני מגלה את זה נכון. מנטלינג אריי, כן, אני מאמין. כן, זה פירוק המערך, אוקיי? כך, אוקיי, דולר, דולר, דולר, דולר, דולר, קורן, רואו, סיק, אוקיי?

  18. 06:01

    אנחנו נסביר את הכל למה זה משמש var-dollar-id var-dollar-mean-range אתם זוכרים את הגבול המינימלי? ו-var-dollar-max-range זה הגבול המקסימלי שמים אותו var-dollar-range זה המערך של התחומים בעצם ו-var-dollar-mp זאת אומרת נסביר את ה-range וה- var-dollar-close-counter אוקיי, בואו נבנה פונקציה בונה לקלאס הזה,

  19. 06:34

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

  20. 06:44

    בואו קודם כל נאמר דולר דיס שמצביע ל-MP ריינג' הוא בעצם מסוג אריי, מסוג מערך, אוקיי? ונגיד שכרגע דולר דיס אין Close Counter, אני כרגע לא נמצא, אני מתחיל רק את הספירה של השורות, שווה 0, אוקיי.

  21. 07:05

    function row זה לשלוף, כן, data base first row, אוקיי. זאת תהיה לי בעצם פונקציה שהיא שולפת את השורה הראשונה ממסד הנתונים, אוקיי.

  22. 07:20

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

  23. 07:53

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

  24. 08:26

    הללו ותתחיל לפרק לי את הטבלה הזאת בעצם למערכים, שהמערך הראשון יהיה מ-1, מין ריינג' עד 23. המערך השני יהיה מ-24 עד 27, וכן הלאה ואהלה ואהלה, שזה יהיה בתוך המערך הזה.

  25. 08:44

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

  26. 09:02

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

  27. 09:28

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

  28. 09:49

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

  29. 10:18

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

  30. 10:51

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

  31. 11:08

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

  32. 11:17

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

  33. 11:40

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

  34. 12:01

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

  35. 12:15

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

  36. 12:33

    אני בעצם מוריד אותו בערך 1, כי היא כאילו כביכול היא מתחילה מאפס. במקום מ-1 עד 127, יש לי מ-0 עד 126. אוקיי, בואו נשלוף את השורה הראשונה. דולר דיס, אוקיי?

  37. 12:45

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

  38. 12:58

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

  39. 13:18

    ותפריט name, תופן, זה השליפה של השורה, נמשיך הלאה, דולר דיס איידי כזה, ועוד שניה נסביר מה זה אומר המשתנה הזאת, דיס קורנט דולר דיס קורנט גו, כן, משל מיין, אוקיי, והנה בואו נלך לפה,

  40. 13:38

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

  41. 13:53

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

לקורס המלא: קורס PHP אונליין בעברית

ההרצאה הקודמת: קורס PHP - הרצאה 5

ההרצאה הבאה: קורס PHP - הרצאה 7

הרצאות קשורות מקורסים אחרים

  • סוס טרויאני בהעלאת קבצים לאתר - PHP - אבטחה ברמה נמוכה - DVWA Low

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פייתון - Python