שימושון php מועתק מהפורום הישן לתועלת הציבור



  • קודם כל תודה ל @011371 שכתב את זה בפורום הישן.
    וכן תודה ל @חנון-המרבה ול @עידן שנתנו את הקישור.
    בשרשור זה תמצאו הסברים על פקודות ופונקציות שימושיים הנוגעים לשימוש בapi בשפה פשוטה וברורה המובנת גם למתחילים
    והתחלנו:
    בהתחלה זה הכותרות ואח"כ הפירוט.
    פתיח לקוד php

    <?php
    

    סיומת לקוד php

    ?>
    

    מפריד בין פקודות

    ;
    

    משתנה

    $
    

    פקודת הפֶּלֶט: הַדְפֶּס!

    print
    

    GET - הקובץ מקבל נתונים מהעולם שבחוץ

    $_GET['ערך']
    

    מתמטיקה בapi ←כולל הדגמה מפורטת איך לעשות שלוחת מחשבון api

    + - * /
    

    משפטי תנאי בשפת php ←המשך מחשבון api

    if(תנאי)
     {פקודה; }
    else {פקודה; }
    //סימנים לוגיים לשימוש בתנאים
    == שווה ערך ל…
    < קטן מ…
    > גדול מ…
    ! שונה מ...
    === שווה בדיוק לתוים
    

    פתיח לקוד php

    <?php
    

    כל קוד php תקני חייב להתחיל בסימון זה
    סימון זה "מסביר" למעבד של המחשב שלפניו הוראות בשפת php
    וכך המעבד "יודע" להשתמש בתוכנת הphp המותקנת במחשב כדי לפענח את משמעות הקוד ולבצע את הפעולות המופיעות בו

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

    סיומת לקוד php

    ?>
    

    זה אומר למעבד: סיימנו! אתה יכול קצת לנוח עד שנקרא לך שוב…

    הקוד php יעבוד גם אם לא נציין את הסיומת ובכל זאת נוהגים לציינו למנוע בלבולים

    ★במקרה של קוד php המשולב בתוך קובץ המכיל קודים נוספים דוגמת html הסיומת עלולה להיות קריטית לפעולתו התקינה של הקובץ!

    מפריד בין פקודות

    ;
    

    "נקודה פסיק"

    זה השם של התו הקריטי ביותר בשפה

    יצרתם קוד, אבל משהו לא עובד?
    דבר ראשון תחפשו איפה שכחתם לשים ;

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

    משתנה

    $
    

    הסמל של הדולר נבחר להיות הסמל של לב ליבה של שפת php המשתנה

    מה זה משתנה?

    בדרך כלל אנו משתמשים בנתונים שונים מעבדים אותם ומחזירים תשובה ללקוח
    הנתון שמשתנה בכל פעם נקרא כמובן בשם "משתנה"

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

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

    $ApiDID
    

    בתחילת הקובץ כתוב מה אומר המשתנה

    $ApiDID=הערך שהתקבל מהשלוחה במערכת שלכם*;
    

    (*בהמשך נלמד איך כותבים את זה בשפת php.. כרגע זה בעברית רק להדגמה)

    ובהמשך הקוד ניתן לראות את המשתנה חוזר על עצמו כמה פעמים כאשר נותנים הוראות :תבדוק האם אכן יש כזה ערך וכו' עד שלבסוף המשתנה משולב בתשובה שמוחזרת לapi "מספר המערכת שאליה אתם מחוברים הוא $ApiDID"
    ←לתשומת ליבכם השם של המשתנה הוא עניין לטעמך האישי והקוד היה עובד מצוין אם היינו קוראים למשתנה בכל שם אחר כגון $aaa למשל ומחליפים כמובן את כל המקומות שבהם מופיע המשתנה לאותו שם, כמובן שרצוי לקרוא שמות המובנים וקשורים לפעולה אותה המשתנה מייצג כדי שלא תתבלבלו אח"כ
    (אז איך קראתי לכתובת? ואיך לגיל?)

    ≈כמובן שבקובץ אחד יכול להיות יותר ממשתנה אחד עד אין סוף

    לדוגמא אפשר להגדיר

    $c=$a*$b;
    

    בשביל שהמעבד יכפיל את משתנה a במשתנה b ולתוצאה הוא יקרא בשם משתנה c
    (הסימן* מציין פעולת כפל)

    הַדְפֶּס! :פקודת הביצוע

    print
    

    זוהי הפקודה שתאפשר לבני האדם לקרוא את המסקנה אליה הגיע php בחישוביו

    פקודה זו "מדפיסה" את התשובה באותיות קריאות (אם לא הייתה לנו שגיאה בקידוד… ) ל"פֶּלֶט" בצורת קובץ html

    כולם אוהבים להדגים כך

    <?php
    print 'שלום, עולם';
    ?>
    

    (הגֶרֶֹש ' שבתחילת וסוף המשפט מסמנים שמדובר ב"מחרוזת טקסט"
    כך שרווח או סימן אחר לא יקטעו את הפקודה)

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

    להדגמה , שמרתי את הקובץ הנ"ל בשם helo.php בחינמון , והנה הקישור לצפייה בתוצאה:
    https://011371php.000webhostapp.com/helo.php

    אם ניקח את הדוגמא של פעולת הכפל מהמאמר הקודם בנושא "משתנה" נוכל כעת להוסיף פקודה

    print $c;
    

    כדי שאנחנו נוכל לראות את התוצאה שלa×b כזכור

    GET : קבלת משתנה באמצעות כתובת הURL

    $_GET['ערך']
    

    פקודה זו אומרת למעבד: תקבל את 'ערך' מכתובת ה url שהזין המשתמש

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

    יש כמה דרכים וכרגע נעסוק ב GET מפני שהיא הצורה השימושית ששלוחת הapi שולחת לקובץ שלנו(עריכה: כמה שעות אחר כתיבת מאמר זה התבשרנו שאפשר לשלוח ערכים גם ב POST, על כך בהמשך… )

    צורת השליחה עובדת כך
    נניח ויש לנו כתובת של הקובץ print.php
    הקובץ מכיל את הקוד הבא

    <?php
    $dugma=$_GET['PRINT'];
    print $dugma;
    ?>
    

    הקובץ בעצם אמור להדפיס את הערך 'PRINT' שאני ישלח אליו

    איך אני שולח לו את הערך?
    נניח והכתובת המלאה שלו היא: https://011371php.000webhostapp.com/print.php
    כל שעלי לעשות הוא להוסיף לכתובת את הסימן ? ואחרי זה את שם הערך = מה שאני רוצה שיודפס
    לדוגמא אם אני רוצה שידפיס לי את המלה "שלום" צריך להוסיף לכתובת את המחרוזת הבאה

    ?PRINT=שלום
    

    סך הכל תראה כך כתובת הurl שתדפיס את המילה 'שלום'
    https://011371php.000webhostapp.com/print.php?PRINT=שלום

    אתם יכולים לשחק עם הכתובת כאוות נפשכם , כל מילה שתכתבו אחרי סימן ה = תופיע על המסך

    ואם יש לי שתי משתנים או יותר שאני צריך לשלוח?
    אין פשוט מכך: בין ערך לערך מוסיפים את הסימן "&"

    כך שאם לדוגמא בקובץ הקודם הוספתי פקודות:

    <?php
    $dugma=$_GET['PRINT'];
    $od=$_GET['PRINT2'];
    print $dugma;
    print " ";
    print $od;
    ?>
    

    (השורה שבין שתי המשתנים מדפיסה "רווח" כי אחרת המילים יצאו צמודות)

    אז אני צריך להוסיף לurl

    ?PRINT=שלום&PRINT2=לידידי
    

    סך הכל תראה כך כתובת הurl שתדפיס את המילים 'שלום' 'לידידי'
    https://011371php.000webhostapp.com/print.php?PRINT=שלום&PRINT2=לידידי

    ושוב, אתם יכולים לשחק עם הכתובת כאוות נפשכם

    מתמטיקה ב php

    להלן הסימנים המשמשים לפעולות מתמטיות

    +  חיבור
    -  חיסור
    *  כפל
    / חילוק
    

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

    אז מה דעתכם שנדגים את זה על מחשבון api ?

    אז התחלנו:
    ניקח לדוגמא קובץ בשם plus.php
    תוכן הקובץ:

    <?php
    
    $a=$_GET['a'];
    $b=$_GET['b'];
    
    $c=$a+$b;
    
    print "id_list_message=t-התוצאה היא.n- $c:";
    ?>
    

    מה אנחנו רואים פה ?
    שורה הראשונה היא הפתיח
    אח"כ שתי שורות שמציבות את הקלט של הערכים 'a' ו 'b' שהשלוחה תשלח לנו בתוך משתנים בשם $a ו $b בהתאמה (בהמשך תראו מה צריך לכתוב בשלוחה כדי שהיא אכן תשלח )
    אח"כ שורה שאומרת משתנה $c הוא משתנה $a ועוד משתנה $b
    ולבסוף פקודה "הדפס: " את התשובה שהשלוחה תקבל , אנחנו כמובן צריכים להדפיס את התשובה בפורמט שהשלוחה תבין מה היא צריכה לעשות לפי האפשרויות שימות המשיח נתנו לנו בהסבר על המודול
    במקרה שלנו אנו נותנים הוראה להדפיס את המשפט הבא

    id_list_message=
    

    שזה אומר בשפת ימות המשיח: הודעה אישית ללקוח המורכבת מהפרמטרים הבאים

    t-התוצאה היא.
    :n-$c.
    (כאשר בתור $c
    תודפס התוצאה של התרגיל)
    

    שזה אומר לשלוחה : להקריא בצורת טקסט את המילים "התוצאה היא"
    ובצורת מספר את התוצאה (המסומנת ב $c)

    עכשיו אם לדוגמא נשלח סטרינג אם הערכים

    ?a=100&b=200
    

    התוצאה שהקובץ תדפיס תהיה

    id_list_message=t-התוצאה היא.n- 300:
    

    להדגמה צפו בקישור הבא:
    http://011371php.dx.am/plus.php?a=100&b=200
    תוכלו לשחק אם הערכים a ו b כרצונכם

    אם תשלחו את זה דרך שלוחת api
    מה שתשמעו יהיה פשוט
    "התוצאה היא 300"

    ועכשיו נסביר מה צריך לעשות בשלוחה כדי שהיא תשלח לנו את הערכים שנקיש

    בקובץ הexr.ini נגדיר

    type=api
    api_link=http://011371php.dx.am/plus.php
    
    api_000=a,no,,1,7,Number,yes
    api_001=b,no,,1,7,Number,yes
    
    api_phone_send=no
    api_did_send=no
    api_extension_send=no
    api_enter_id_send=no
    api_enter_id_name_send=no
    api_hangup_send=no
    

    בנוסף צריך להשים בשלוחה 2 קבצי שמע או tts
    בשמות 000 , 001
    כאשר תוכנם הוא "נא להקיש את המספר הראשון וסולמית לסיום" ו "נא להקיש את המספר השני וסולמית לסיום"

    הסבר על מה שהולך ב ext.ini
    שורה ראשונה זה סוג השלוחה= api
    שורה שניה זה הלינק המסתיים בשם הקובץ (מי שרוצה יכול להשתמש בלינק המופיע בדוגמא)
    שורה שלישית זה הוראות לשלוחה כיצד להתנהג עם הקובץ 000 ששמנו בשלוחה כאשר בין הוראה להוראה יש פסיק
    ומופיע בו כך:

    a >כלומר אנו רוצים לקבל כאן ערך בשם 'a'

    הערך הזה ריק , פה ניתן להגביל את סך המספרים להקשה
    1 >כלומר מינימום ספרה אחת צריך להקיש
    7 >שניות המתנה אם לא הוקש # או כלום
    Number >כלומר שהמערכת תחזור על מה שהלקוח הקיש בצורת מספר ( למשל , שאם הקיש 100 שהמערכת תקריא לו "מאה" ולא "אחת אפס אפס") אם רוצים לקצר את התהליך אפשר לכתוב "No" כדי שהמערכת תתקדם ישר לשלב הבא (001) בלי לחזור על מה שהלקוח הקיש
    yes >חוסם את מקש * כדי שלא נקבל ערכים שגויים כשמישהו יקיש *

    השורה הבאה היא כמו השורה הקודמת עבור קובץ 001 , רק שכאן הערך הוא b

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

    המשך מחשבון api : כפל וחיסור

    נמשיך בהסבר על המחשבון:
    ועכשיו :
    כיצד לעשות כפל
    אז נניח שהקובץ שלי שמו double.php

    תוכנו זהה לקובץ plus.php מהמאמר הקודם רק שעכשיו במקום הסימן + שסימן חיבור נכתוב את הסימן* שמציין כפל
    וכך זה יראה

    <?php
    
    $a=$_GET['a'];
    $b=$_GET['b'];
    
    $c=$a*$b;
    
    print "id_list_message=t-התוצאה היא.n- $c:";
    ?>
    

    להדגמה כיצד הקובץ יענה על השאלה : כמה זה 5×3 צפו בקישור הבא:
    http://011371php.dx.am/double.php?a=3&b=5
    שחקו אם הערכים a , b כאוות נפשכם ותראו את התוצאות.

    כדי לתקשר עם הקובץ דרך ה api יש להשים בשלוחה את אותם הגדרות שרשמנו במאמר הקודם על חיבור (למעט סיומת הלינק שצריך לשנות לשם הקובץ הנוכחי double.php )

    נמשיך לשלב הבא

    כיצד לעשות חיסור

    אז כמובן תוכן הקובץ הוא אותו תוכן חוץ מסימן ה* שהפעם נחליף ל -
    כצפוי קראתי לקובץ בשם minus.php ולהדגמה כיצד הקובץ עושה 25-7 הקליקו על הקישור:
    http://011371php.dx.am/minus.php?a=25&b=7
    כאשר שוב תוכלו לשחק כאוות נפשכם אם הערכים a,b
    קובץ הext.ini בשלוחה ללא שינוי מלבד שם הקובץ כנ"ל

    עכשיו נציג בעיה קטנה;
    מה יקרה אם התוצאה תהיה שלילית
    לדוגמא משתמש חכמולוג בשלוחה יהיה דחוף לו לדעת כמה זה 9-50 התוצאה היא כמובן ,מינוס 41
    בוא נראה איך הקובץ יענה על זה
    http://011371php.dx.am/minus.php?a=9&b=50
    אז בדפדפן זה נראה לא רע , רואים ברור את הסימן - ליד המספר , אז יודעים שזה מינוס
    כמו זה

    id_list_message=t-התוצאה היא.n- -41:
    

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

    משפטי תנאי בשפת php

    ככה נראה תנאי:

    if ( "תנאי" )
    {תעשה כך וכך; }
    else
    {ואם לא אז תעשה כך}
    

    כמו שניתן לראות "if" פותח את המשפט [תרגום מילולי לעברית= "אם"]
    בתוך הסוגריים העגולות נכתוב את התנאי
    ובתוך הסוגריים המסולסלות את הפקודה/פקודות לביצוע
    אחרי זה (לא חובה) ניתן לכתוב את המילה "else" [תרגום= "אחרת"] ושוב פקודה/פקודות בתוך סוגריים מסולסלות
    סימנים לוגיים לשימוש בתנאים:

    == שווה ערך ל…
    < קטן מ…
    > גדול מ…
    ! שונה מ...
    === שווה בדיוק לתוים
    

    הכי טוב להסביר עם דוגמא
    זוכרים את הבעיה אם המחשבון מינוס מהשיעור הקודם ?
    <דיברנו שם כזכור על ניסיון להפחית מ 9 50 כשהתוצאה היא מינוס 41 ,אבל הסימן "-" תוקע את השלוחה>
    בא נפתור את הבעיה באמצעות שימוש בתנאי;
    אז לקובץ שלנו קוראים הפעם minusa.php
    ותוכנו כדלהלן

    <?php
    $a=$_GET['a'];
    $b=$_GET['b'];
    
    $c=$a-$b;
    
    if  ($c<0)
    {$d= 0-$c;
    print "id_list_message=t-התוצאה היא מינוס.n- $d:";
    }
    else
    {
    print "id_list_message=t-התוצאה היא.n- $c:";
    }
    ?>
    

    אז ההתחלה היא בעצם אותו דבר כמו אז:
    a,b מתקבלים מהשלוחה, c זה התוצאה של a-b ,
    עכשיו הוספנו תנאי :
    אם ($c קטן מ 0 כלומר: הוא מינוס) {אז דבר ראשון נהפוך אותו למספר חיובי ע"י התרגיל d=0-c זה כלל ידוע במתמטיקה שמינוס פחות מינוס שווה פלוס , <בדוגמא שלנו 0 פחות מינוס 41 =
    41> ;
    אחרי זה ניתן הוראה להדפיס את המשפט
    "id_list_message=t-התוצאה היא מינוס.n- $d:";
    שפשוט מכיל בתוכו את המילה "מינוס" לפני המספר הרגיל שהתקבל ב d כך שהתוצאה תהיה אמינה ומדויקת}
    עכשיו הוספנו "else" כלומר אם התנאי לא מתקיים דהיינו ש c שווה לאפס או גדול ממנו {אז תדפיס כרגיל
    "id_list_message=t-התוצאה היא.n- $c:";
    }
    ניתן לצפות בקישור הבא איך הקובץ יגיב לתרגיל רגיל של 35-17
    http://011371php.dx.am/minusa.php?a=35&b=17
    ובקישור הבא כיצד הוא יתנהג בתרגיל שהתוצאה היא מינוס 23-79
    http://011371php.dx.am/minusa.php?a=23&b=79
    תוכלו לשחק עם הקישור כאוות נפשכם

    לשימוש עם הסקריפט בשלוחה ראו במאמר הקודם זה אותם הגדרות למעט שם הקובץ בסוף הלינק minusa.php

    ההבדל בין == ל === בהמשך למשפטי תנאי

    הסבר קצר על ההבדל בין הביטוי

    ==
    

    לבין הביטוי

    ===
    

    הביטוי הראשון בודק האם נתוןx שווה ערך לנתוןy
    השני לעומתו בודק האם נתוןx זהה במאת האחוזים לנתוןy

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

    אבל כשנשאל את מיסטר "===" את אותה השאלה , הוא יענה שמה פתאום?! , כלום זה "כ" "ל" "ו" "ם" ,ואילו אפס זה "א" "פ" "ס", אז מה הקשר?

    • כך כותבים "כלום" בשפת php
    NULL
    

    בהצלחה רבה!!


התחבר כדי לפרסם תגובה