[מדריך] חלק 3 ליוצר המודים - שימוש בשאילתות SQL במוד

מדריכים שונים ומגוונים לגרסה phpBB2. שימו לב - פורום זה הינו פורום ארכיון. התמיכה במערכת phpBB2 הופסקה.
BBman
חבר צוות phpBB ישראל לשעבר
חבר צוות phpBB ישראל לשעבר
הודעות: 1595
הצטרף: 13/02/2005 ב-13:50:52

[מדריך] חלק 3 ליוצר המודים - שימוש בשאילתות SQL במוד

הודעה שלא נקראהעל ידי BBman » 08/04/2007 ב-17:33:36

שלום!

זהו חלק השלישי בסדרת המדריכים ליצירת מודים.

חלקים נוספים בסדרה :

1.יצירת דפים חדשים והגדרת משתנים
2.הגדרות מערכת

מדריך זה עוסק בשימוש בשאילתות SQL בעזרת מאפייניה של phpBB.

עצור! מדריך זה אינו מלמד שאילתות ב-sql אלא מלמד איך ניתן להשתמש בהן ב-phpBB בלבד.

המדריך יוצג תוך כדי בניית "מוד" פצפון שמדפיס את רמת המשתמש במספרים (1,2,0) בהתאם ל-id שלו, כמובן שניתן לעשות זאת בעזרת userdata אבל לשם הדגמה נעשה זאת בדרך הארוכה.

שאילתות ב-phpBB נכתבות כרגיל, מומלץ יותר בתוך משתנה.
הדבר השונה היחיד הוא שניתן לעשות את השאילתא כך:

קוד: בחר הכל

   $sql = "SELECT user_level FROM ".USERS_TABLE." WHERE user_id=$uid";


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

מה שעשיתי בשאילתא הנ"ל הוא קריאת רמת המשתמש לפי ה-id שלו ששמור במשתנה $uid, למטרת נוחות הצבתי את זה במשתנה במקום לרשום את המשפט המלא.
הגדרתו של משתנה זה היא:

קוד: בחר הכל

$uid = $userdata['user_id'];


ביצוע השאילתא:

הפונקציה שמבצעת את השאילתא ב-mysql היא mysql_query()
ל-phpBB יש פונקציה דומה, הנכתבת כך:

קוד: בחר הכל

   $v1 = $db->sql_query($v2);   


v1 הוא המשתנה שישמור את התוצאות, ו-v2 הוא המשתנה שמכיל את השאילתא.
בהתאם לדוגמתנו אנו אמורים לכתוב:

קוד: בחר הכל

   $result = $db->sql_query($sql);   


זהו השימוש הפשוט ב-sql ב-phpBB.

פונקציות שימושיות :

$db->sql_fetchrow()

זוהי פונקציה המקבילה ל-mysql_fetch_array() ב-mysql.
בהתאם לדוגמתנו, אנו אמורים לכתוב:

קוד: בחר הכל

$read=$db->sql_fetchrow($result);


כאשר read ישמור את התוצאות -result הוא תוצאות קריאת השאילתא, אותו הגדרנו מקודם.

*היערה :
ניתן לגשת לנתונים כך:

קוד: בחר הכל

$var = $read['user_level'];


כך ש-var כעת יכיל את רמת המשתמש.
הסבר :
מציבים לתוך משתנה מערך ששמו כשם המשתנה שהצבנו לתוכו את sql_fetchrow של השאילתא, ובתוך גרשיים בתוך סוגריים מרובעים את שם השדה אותו אנו רוצים לקרוא.

כעת ניתן להגדיר משתנה לשימוש ב-TPL שיכיל את הנתון הזה.

$db->sql_numrows()

מקבילה ל-mysql_numrows() - מונה את מספר השורות שנקראו, נכתבת כך:

קוד: בחר הכל

$num = $db->sql_numrows($result);


כאשר num יהיה המשתנה שיכיל את מספר השורות שנקראו.

ישנן עוד פונקציות אך לא מספיק חשובות לטעמי.

בהצלחה!
מור.
"Give a man a fish, and you feed him for a day. Teach a man to fish, and you feed him for a lifetime"

חזור אל “מדריכים - ארכיון”

מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים ואורח אחד