PHP וSQL - מערכת רב-לשונית
אהלן, חבר'ה.
בימים אלו אני שוקד על פיתוח מערכת CMS מודולרית, שמכילה חלק מהמודולים הבאים:
הבעיה שלי היא כזו: אני צריך לפתח מודול נוסף: מודול שפות. באמצעות המודול ניתן יהיה לתרגם את האתר למספר שפות בלתי מוגבל, בעוד שהשפות נשלפות מתוך טבלה במסד, לצורך העניין. הבעיה שלי היא בתכנון המסד. אני רוצה לתכנן את המסד כך שאוכל להחליף שפת ברירת מחדל ללא שום בעיות, ואוכל לתרגם את התוכן שלי, לא משנה באיזה מודול, בקלות וביעילות. הציעו לי לעשות טבלה מקשרת בין תרגום לבין פריט במודול: parentID - הפריט שרוצים לתרגם itemID - הפריט המתורגם (להלן: התרגום עצמו) module - כמובן, לאיזה מודול שייך התרגום (עמודים/מאמרים/...) lang - קוד השפה (he/en וכו') הבעיה היא מה קורה כאשר משנים את שפת ברירת המחדל? צריך לעבור על כל הטבלאות של כל המודולים (לטפסים למשל יש יותר מטבלה אחת), כדי לשנות את הparentID... לכן הפתרון הזה נראה לי לא בדיוק יעיל. פתרון נוסף: בסגנון וורדפרס, היא רשומה אחת ריקה, שלא מכילה תוכן, ושאר התרגומים לאותו הפריט נכנסים כרשומות נוספות כאשר הגדרות הפריט עצמו לא מופיעות ונלקחות מפריט האב. דוגמה לשליפת כל העמודים בשפה מסוימת: PHP קוד:
פתרון נוסף: לשייך לכל מודול 2 טבלאות: אחת לתכנים ואחת לכל שאר הדברים שצריך לשמור לגבי אותו הפריט (סטטוס, כתובת וכו'). אשמח לעזרה בנושא, זו פעם ראשונה שאני עושה דבר כזה. תודה לעוזרים, גל. |
אני לא חושב שהבנתי אותך במדוייק, אבל אם אתה רוצה לעבוד עם מספר שפות, למה לא לעבוד עם קבצי LANG?
|
כי אני רוצה שלתוכן (לשם הפריט, לתוכן שלו עצמו וכו') יהיו מס' תרגומים.
התוכן כמובן נשלף מהמסד, והבעייתיות כאן היא בתכנונו. |
|
אשמח לקבל הסבר על הסקיצה,
ולדעת באיזו תוכנה השתמשת כדי לייצר אותה. |
אני מתכנת DB בד"כ ע"י mysql workbench
בכל אופן, אני מציע ליצור מפתח זר(fk) לעצמך- בגרסאות החדשות זה נתמך, בכל אופן זה לא קריטי לך כי אתה יוצר את זה בקוד שלך. הכוונה היא שparent הוא מתוך טווח הערכים של id(במקרה הזה מאותה טבלה) |
אלמוג, יש שיטה דרך המסד ליצור את מה שכתוב בסכמה באנגלית מימין?
או דרך יעילה לעשות זאת בPHP?.. |
רשמתי שההתנהלות היא בצרוה כזו שאם הערך של השדה לא ריק הוא דורס את הערך של שדה האב, אם הערך ריק הוא יורש אותו מהאב.
כלומר: אם בתרגום לא הכנסתי כותרת, הכותרת תהיה הכותרת של האב. |
ציטוט:
אם תשים לב בדוגמת הקוד שנתתי כאן: גם לאב יש שדה תוכן (אך הוא ריק), ולכן דרסתי אותו בלולאה. אני מחפש דרך יעילה יותר לעשות את זה, בלי לולאות מיותרות וכו'. |
כי עשית שם משהו אחר לגמרי..
שוב- אתה צריך ליצור טבלאה אחת בכל הסיפור הזה. תיצור פעולה רקורסיבית שמביאה לך את המידע הסופיע עם המידע(פעולה()-לוקחת נתונים. אם יש לו אבא, ממלאת את הנתונים הריקים בנתונים מפעולה()) |
ציטוט:
הפונק' צריכה להחזיר לי מידע לגבי כל הפריטים או לגבי פריט ספציפי אחד (שלו כמה תרגומים)? |
ציטוט:
PHP קוד:
|
משהו בסגנון הזה?
PHP קוד:
|
סליחה על ההקפצה,
אבל אני לא מבין מה רע בשאילתא כזו: PHP קוד:
במקרה שהטבלה pages לא מכילה שדות הקשורים לתוכן... אלמוג הפתרון שלך משתמש בפונקציה רוקרסיבית, ואל תשכח שאני צריך לרוץ על הטבלה של המודול כדי לשלוף את כולם, ובתוך הלולאה לזמן את הפעולה הרקורסיבית (פעולה())... אז מה בעצם צריך להיות השיקול שלי? אני חושב שהשיטה שלי יותר קלה לביצוע, יותר יעילה לא בטוח, אז מה דעתכם? |
כל הזמנים הם GMT +2. הזמן כעת הוא 22:32. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ