נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
בניית אתרים
RSS UnderWarrior Forums : RSS בניית אתרים
נושא

נושא: PHP - or die

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
_Ran_
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת
הודעות: 80
נשלח בתאריך: 01 December 2007 בשעה 13:30 | IP רשוּם
ציטוט _Ran_

בע הregister עדיין לא עובד :\

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

$var=something or die()

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

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 01 December 2007 בשעה 13:54 | IP רשוּם
ציטוט shoshan

יופי, תראה איך זה הגיע לנושא חדש (:

הפעולה or מבוצעת ב-php/perl באופן עצל, אם הביטוי השמאלי אמת אז מוחזר אמת,
רק אם לא אז נבדק הביטוי הימני.

נהוג שמתודות מסוימות יחזירו אמת או משהו שאינו שקר/null/0 אם הצליחו ומשהו
שכן שקר אם נכשלו.

ואז אם נכשלו תקרא die ותוצג שגיאה פתאלית ותסתיים הריצה של הדף, אם הצליחו
יוצב הערך המתאים במשתנה (במקרה שהבאת).
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
_Ran_
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת
הודעות: 80
נשלח בתאריך: 01 December 2007 בשעה 14:14 | IP רשוּם
ציטוט _Ran_

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


הצטרף / הצטרפה: 08 November 2007
משתמש: מנותק/ת
הודעות: 118
נשלח בתאריך: 01 December 2007 בשעה 21:13 | IP רשוּם
ציטוט decimal

אז מה ההדבל בין זה ובין ELSE ?
חזרה לתחילת העמוד הצג את כרטיס החבר של decimal חפש הודעות אחרות של decimal
 
_Ran_
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת
הודעות: 80
נשלח בתאריך: 01 December 2007 בשעה 22:27 | IP רשוּם
ציטוט _Ran_

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

$var=fopen("file.txt", "r") or die("error message here")


הייתי יכול באותה צורה לכתוב:
קוד:

if(!fopen("file.txt", "r"))
die("error message here")
else
$var=fopen("file.txt", "r")


או שאפילו עוד יותר קצר:
קוד:

if(!$var=fopen("file.txt", "r"))
die("error message here")

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


הצטרף / הצטרפה: 08 November 2007
משתמש: מנותק/ת
הודעות: 118
נשלח בתאריך: 02 December 2007 בשעה 00:43 | IP רשוּם
ציטוט decimal

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

הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת
הודעות: 80
נשלח בתאריך: 02 December 2007 בשעה 01:36 | IP רשוּם
ציטוט _Ran_

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

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 02 December 2007 בשעה 01:55 | IP רשוּם
ציטוט אלצ'קו

_Ran_ כתב:
קוד:

if(!fopen("file.txt", "r"))
die("error message here")
else
$var=fopen("file.txt", "r")


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


הצטרף / הצטרפה: 08 November 2007
משתמש: מנותק/ת
הודעות: 118
נשלח בתאריך: 02 December 2007 בשעה 02:16 | IP רשוּם
ציטוט decimal

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

הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת
הודעות: 80
נשלח בתאריך: 02 December 2007 בשעה 02:29 | IP רשוּם
ציטוט _Ran_

חחחח כן שם הכפלתי את עצמי, הדוגמא השלישית יותר נכונה אבל גם השנייה עובדת.
בעיקרון, fopen מחזיר משאב (resource), ורק ברגע יצירת המשאב אפשר להציב לו משתנה שייצג את המשתנה ($var הוא הדרך היחידה לייצג את הקובץ ולעשות איתו פקודות אחרות כמו feof(), הוא Pointer לresource).
בדרך השלישית אני ישר נותן pointer לקובץ שאני פותח, ובאותה הזדמנות מציב תנאי.
בדרך השנייה שדיברתם עליה, שהיא פחות נכונה, אני קודם מציב את התנאי (אם הקובץ לא קיים יוחזר false והתנאי יתקיים - תוצג הודעת שגיאה והתוכנית תיפסק עקב die, אם הקובץ קיים התנאי לא מתקיים ואז אני בעצם מציב Pointer לresource כדי שאני אוכל לבצע עליו פעולות בעתיד (שזה בעצם סתם מסורבל אם אפשר לעשות את זה כמו בדרך השלישית, אבל אפילו עוד יותר קצר להשתמש בדרך הראשונה עם or).

decimal שושן הסביר יפה מאוד מה זה, ואני הסברתי מה ההבדל.
כשכותבים:
קוד:

$var=fopen("file.txt", "r") or die("error message here")


בעצם קורה התהליך הבא:
יש ניסיון לפתוח קובץ בשם file.txt עם הרשאת "r".
אם הקובץ קיים ומוחזר ערך משאב (שזה בעצם כמו ערך true, העיקר שזה ערך שהוא לא false/0/null), אז במשתנה $var יוצב ערך המשאב, הוא יהווה מצביע (pointer) אליו, ובאמצעות $var נוכל לבצע כל מיני פעולות על הקובץ.
אם הקובץ שניסינו לפתוח לא קיים, אז מוחזר ערך false , ואז ה or עובד והוא מבצע את הפקודה שכתובה אחרי or , שהיא die. פקודה זו מסיימת את התוכנית, ובסוגריים ניתן לכתוב את הודעת השגיאה.

די חזרתי על עצמי פה, מקווה שהבנת :)

והנה עריכה - עוד תוספת, כדי לענות לך על כל השאלות:
משתמשים בor בדרך כלל עם die (ברוב המקרים), כשאתה רוצה לבצע פעולה מסויימת שאתה יודע שעלולה להיכשל, ואם היא נכשלת אתה רוצה לחתוך את ביצוע הקוד ולהציג הודעת שגיאה. כמו למשל: פתיחת קובץ, התחברות לבסיס נתונים וכו'.
תסתכל בכל מיני אתרים ללימוד php איזה שימוש הם עושים בזה... ראיתי אינספור דוגמאות באתר php של ישראל, ובW3SCHOOLS. תסתכל שם ותבין

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

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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