הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 23-07-10, 16:07   # 1
Gal Shafrir
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,626

Gal Shafrir לא מחובר  

Wink PHP וSQL - מערכת רב-לשונית

אהלן, חבר'ה.

בימים אלו אני שוקד על פיתוח מערכת CMS מודולרית,
שמכילה חלק מהמודולים הבאים:
  • עמודים
  • חדשות/כתבות/מאמרים
  • גלריות
  • טפסים
  • בלוקים
  • וכו'.

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

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

הציעו לי לעשות טבלה מקשרת בין תרגום לבין פריט במודול:
parentID - הפריט שרוצים לתרגם
itemID - הפריט המתורגם (להלן: התרגום עצמו)
module - כמובן, לאיזה מודול שייך התרגום (עמודים/מאמרים/...)
lang - קוד השפה (he/en וכו')

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


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

דוגמה לשליפת כל העמודים בשפה מסוימת:
PHP קוד:
    public function get_all($lang '')
    {
        
$sql "SELECT `translations`.`itemID`, `pages`.*
        FROM `pages`, `translations`
        WHERE `translations`.`parentID` = `pages`.`ID` AND `translations`.`lang`='{$lang}'
        AND `translations`.`module` = 'pages'"
;
        
        
$query $this->db->query($sql);
        
        
$pages $query->result_array();
        
        if (
count($pages) > 0)
        {
            foreach (
$pages as $key => $page)
            {
                
$sql "SELECT * FROM `pages` WHERE `ID` = '{$page['itemID']}'";
                
$q $this->db->query($sql);
                
                
$r $q->result_array();

                
$pages[$key]['name'] = $r[0]['name'];
                
$pages[$key]['content'] = $r[0]['content'];
                
$pages[$key]['title'] = $r[0]['title'];
            }
        }

        
/*$this->db->order_by('homepage', 'desc');
        $this->db->order_by('order', 'asc');    
        $query = $this->db->get('pages');*/
        
        
return $pages;
    } 
הקוד לדעתי לא יעיל, ועליי למצוא פתרון יותר יעיל מזה.

פתרון נוסף:
לשייך לכל מודול 2 טבלאות: אחת לתכנים ואחת לכל שאר הדברים
שצריך לשמור לגבי אותו הפריט (סטטוס, כתובת וכו').

אשמח לעזרה בנושא, זו פעם ראשונה שאני עושה דבר כזה.

תודה לעוזרים,
גל.
__________________
בברכה,
גל שפריר - מעצב ומפתח אתרים.

עופר שפריר - במאי, תסריטאי ומפיק.
  Reply With Quote
ישן 23-07-10, 16:19   # 2
SarafC
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Apr 2008
הודעות: 511

SarafC לא מחובר  

אני לא חושב שהבנתי אותך במדוייק, אבל אם אתה רוצה לעבוד עם מספר שפות, למה לא לעבוד עם קבצי LANG?
__________________
בברכה, שרף כהן
  Reply With Quote
ישן 23-07-10, 16:22   # 3
Gal Shafrir
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,626

Gal Shafrir לא מחובר  

כי אני רוצה שלתוכן (לשם הפריט, לתוכן שלו עצמו וכו') יהיו מס' תרגומים.
התוכן כמובן נשלף מהמסד, והבעייתיות כאן היא בתכנונו.
__________________
בברכה,
גל שפריר - מעצב ומפתח אתרים.

עופר שפריר - במאי, תסריטאי ומפיק.
  Reply With Quote
ישן 23-07-10, 16:24   # 4
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

  Reply With Quote
ישן 23-07-10, 16:30   # 5
Gal Shafrir
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,626

Gal Shafrir לא מחובר  

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

עופר שפריר - במאי, תסריטאי ומפיק.
  Reply With Quote
ישן 23-07-10, 16:59   # 6
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

אני מתכנת DB בד"כ ע"י mysql workbench

בכל אופן, אני מציע ליצור מפתח זר(fk) לעצמך- בגרסאות החדשות זה נתמך, בכל אופן זה לא קריטי לך כי אתה יוצר את זה בקוד שלך.
הכוונה היא שparent הוא מתוך טווח הערכים של id(במקרה הזה מאותה טבלה)
  Reply With Quote
ישן 23-07-10, 17:33   # 7
Gal Shafrir
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,626

Gal Shafrir לא מחובר  

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

עופר שפריר - במאי, תסריטאי ומפיק.
  Reply With Quote
ישן 23-07-10, 18:02   # 8
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

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

כלומר:
אם בתרגום לא הכנסתי כותרת, הכותרת תהיה הכותרת של האב.
  Reply With Quote
ישן 23-07-10, 19:10   # 9
Gal Shafrir
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,626

Gal Shafrir לא מחובר  

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

כלומר:
אם בתרגום לא הכנסתי כותרת, הכותרת תהיה הכותרת של האב.
זה בדיוק מה שניסיתי לעשות,
אם תשים לב בדוגמת הקוד שנתתי כאן:
גם לאב יש שדה תוכן (אך הוא ריק), ולכן דרסתי אותו בלולאה.

אני מחפש דרך יעילה יותר לעשות את זה,
בלי לולאות מיותרות וכו'.
__________________
בברכה,
גל שפריר - מעצב ומפתח אתרים.

עופר שפריר - במאי, תסריטאי ומפיק.

Last edited by Gal Shafrir; 23-07-10 at 19:38..
  Reply With Quote
ישן 24-07-10, 19:54   # 10
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

כי עשית שם משהו אחר לגמרי..
שוב- אתה צריך ליצור טבלאה אחת בכל הסיפור הזה.

תיצור פעולה רקורסיבית שמביאה לך את המידע הסופיע עם המידע(פעולה()-לוקחת נתונים. אם יש לו אבא, ממלאת את הנתונים הריקים בנתונים מפעולה())
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 17:13.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ