הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   PHP וSQL - מערכת רב-לשונית (https://hosts.co.il/forums/showthread.php?t=83964)

Gal Shafrir 24-07-10 22:22

ציטוט:

נכתב במקור על ידי Baku (פרסם 772604)
כי עשית שם משהו אחר לגמרי..
שוב- אתה צריך ליצור טבלאה אחת בכל הסיפור הזה.

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

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

AlmogBaku 25-07-10 13:26

ציטוט:

נכתב במקור על ידי gal shafrir (פרסם 772625)
אני לא בטוח שהבנתי אותך עד הסוף.
הפונק' צריכה להחזיר לי מידע לגבי כל הפריטים או לגבי פריט ספציפי אחד (שלו כמה תרגומים)?

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

PHP קוד:

get_item($id$fields="*"); 


Gal Shafrir 25-07-10 14:37

משהו בסגנון הזה?

PHP קוד:

    public function get_by_parent_recursive($lang ''$parentID 0$arr = array())
    {
        
$this->db->where('lang'$lang);
        
$this->db->where('parentID'$parentID);
        
$query $this->db->get('pages');
        
        
$results $query->result_array();
        
        if (
$query->num_rows() > 0)
        {
            
$results $results[0];
            
            
// Recall the function
            
$arr $this->get_by_parent_recursive('he'$results['ID'], $results);

            
// Merging the parent and it's child arrays
            //
            // while the page's settings related fields are taken from the parent's
            // and the content related fields from the child's
            
            
if (count($arr) > 0)
            {
                if (empty(
$results['content']))
                    
$results['content'] = $arr['content'];
                
                if (empty(
$results['title']))
                    
$results['title'] = $arr['title'];
                    
                if (empty(
$results['name']))
                    
$results['name'] = $arr['name'];
            }
        }
        
        return 
$results;
    } 


Gal Shafrir 26-07-10 11:47

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

PHP קוד:

$sql "SELECT `pages`.*, `contents`.*
FROM `pages`,`contents`
WHERE `contents`.`parentID` = `pages`.`ID` AND `contents`.`lang` = '{$lang}' AND `module` = 'pages'
ORDER BY `pages`.`homepage` DESC, `pages`.`order`"


אני מקבל בקלות את השדות שאני צריך.
במקרה שהטבלה pages לא מכילה שדות הקשורים לתוכן...

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

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


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

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