הכנסת מערך לMySQL

MasterNir

New member
הכנסת מערך לMySQL

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

N i X

New member
למה?

למה לא לעשות טבלה, שכל שדה שלה זה תא במערך?
 

MasterNir

New member
כי...

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

stac

New member
לפעמים זה נוח ומהיר,

כשאתה רוצה למשל לייצד מידע במחלקה כל שהיא, או אוסף מחלקות באותו נושא אם נתונים שונים, אז עושים פשוט סיאריזציה למחקלה או למערך. נניח יש לך המון נתונים שאתה צריך לשלוף או לאכסן. ראה קוד דוגמא:
<?php /* * Example of using serializention, * by stac [email protected] 1/2/2004 * * more info: * now how it will be if we could make article class, and manipulate it, the save in DB, then load and save load and save.... * */ class Student { /* schema: id name country well 3 variables are fine but what if you have more then 10? or 20? :) */ var $_fields = array(0, '', ''); /* load data from db */ function unserializeStudent($studnetId=0) { global $dbHandle; if (!$studentId) return false; if(!$dbHandle->openTable('students')) return false; /*no record*/ if (!$dbHandle->loadRecordById($studentId)) return false; $this->_fields = unserialize($dbHandle->field('_fields')); $dbHandle->closeTable(); return true; } /* save data to db. */ function serializeStudent() { global $dbHandle; if(!$dbHandle->openTable('students')) return false; /* if ID not set then new record */ if (!$this->_fields[0]) { $dbHandle->addRecord(); $this->_fields[0] = $dbHandle->getTransId(); } else { $dbHandle->loadRecordById($this->_fields[0]); } $dbHandle->updateRecordById($this->_fields[0], serialize($this->_fields)); $dbHandle->closeTable(); return true; } /* * @access private */ function _get($k=0) { if (!$k) return false; return $this->_fields[$k]; } /* * @access private */ function _set($k=0, $v=0) { if (!$k || !$v) return false; $this->_fields[$k] = $v; } function getId() { return $this->_get(0); } function getName() { return $this->_get(1); } function getCountry() { return $this->_get(2); } /* * set Id, then load vars from DB, very usefull */ function setId($s) { return $this->_set(0,$s); } function setName($s) { return $this->_set(1,$s); } function setCountry($s) { return $this->_set(2,$s); } }; ?>​
לדעתי יש כאן יתרון, עצום.
 

MasterNir

New member
החלטתי במקום זה ...

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

stac

New member
אם תשימו לב, אז גם,

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

N i X

New member
שמע, יש ויש...

אם כבר לעבוד עם בסיס נתונים, אז לעבוד ישר, כדאי שאח"כ תוכל להשתמש בזה כבסיס נתונים, לסדר את זה לפי מאפיינים שונים וכו'. בלי הצורך לשלוף הכל, לעשות unserealize... serialize טוב, לדעתי, כאשר אתה עובד מול קובץ, ולא בסיס נתונים... אבל כל אחד וטעמו ;)
 

Terminal Frost

New member
מה?

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

stac

New member
מה לא היה לך אף פעם חלום?

כמו לממש מסד נתונים בPHP? או מהדר בPHP? או מה שלא יהיה. אז זה בגלל מה. בגלל שאפשר!
 

Terminal Frost

New member
להיפך.. אפילו אמרתי

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

stac

New member
אני חשבתי...

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