![]() |
מהו האלגוריתם היעיל ביותר לבניית עגלה במערכת של חנות וירטואלית.
חשבתי על דבר כזה:
עמודה בטבלה users ויהיה בה את: productID-productAmount ולפי זה יוצג התוכן, אבל לאחר מיכן ולקוח ירצה למחוק מוצר מסויים זה יהיה בעיה לחפש את המוצר נניח ולא יהיו כפילויות. יש לכם רעיון יותר טוב? |
תסביר שוב מה אתה מעוניין לעשות?
לא ממש הבנתי. |
ספציפית למה שאתה מתאר, הנה תיאור של טבלה מקשרת פשוטה.
id | user_id | item_id | amount אפשר לעשות בזה שינויים כמובן - אולי העמודה id תהיה מיותרת עבורך, אולי אתה מעדיף לשמור את ה- amount בצורה אחרת (רשומה נוספת עבור כל פריט), זה הרעיון הכללי. |
קודם כל למה שיהיו כפילויות? בכל פעם כשמשתמש נכנס למוצר מסויים זה יעשה חיפוש במסד אם המוצר כבר בעגלת הקניות שלו,
אם כן פשוט לא יהיה ניתן לרכוש עוד פעם את המוצר (אם הוא ירצה לקנות מס' פעמים את המוצר שיהיה את זה באפשרות נפרדת). בקשר למחיקה - אני לא כ"כ הבנתי אם קיימת לך טבלה של המוצרים שמשתמש רכש, אם אין לך טבלה כזאת והכוונה שלך שכל המוצרים של המשתמש נמצאים בעמודה מסויימת בטבלה של המשתמשים אז ככה: תעשה הפרדה במסד למשל של הסימן "|" שיפריד בין מוצר למוצר, ופשוט כשהוא ירצה למחוק מוצר מסויים תעשה לולאה שתריץ את הCOUNT של הEXPLODE של הסימן "|", בתוך תעשה תנאי אם המוצר הנוכחי שרץ בלולאה לא שווה למוצר שהוא רוצה למחוק שיעדכן לתוך משתנה את המוצר, אם זה המוצר שהוא רוצה למחוק אז הוא לא יעשה כלום. בסוף תעדכן במסד את המשתנה שקיבלת (שהוא יהיה כמובן ללא הערך של של המוצר שהוא מחק). לתת לך קצת כיוון הקוד יראה ככה +-: PHP קוד:
|
ציטוט:
MySQL הוא RDBMS, לא צריך לעשות דברים בצורה גרועה כזאת. איציק, תקרא על "many to many relationship" ותקח לדוג' את המבנה שהבאתי בתגובה הראשונה שלי. |
לא הבנתי איפה הסתבכת, בתנאי שאתה רוצה להוסיף לטבלה מוצרים, ולאפשר למחוק אותם, כך תראה הטבלה שלך:
id | uid | product | amount | price uid = האיידי של הקונה. מחיקה פשוטה לפי איידי, והבדיקה היא אם העמודה uid שווה לאיידי של המשתמש. |
חיים -
העמודה price מיותרת ועלולה ליצור בעיות מיותרות, לדוגמה במקרה של שינוי המחיר של המוצר. רצוי שהנתון ישמר במקום אחד וקבוע, בטבלת המוצרים, משם הוא ישלף על פי הצורך. |
אדיר הציע את הרעיון היעיל ביותר, כשכתבתי את האשכול חשבתי על זה, אבל אמרתי נראה אם יש דרך אחרת בכל מקרה.
מה שהוא התכוון: טבלה בשם cart עמודות: cardID | userID | productID | Amount ככה זה יכול להקל על הכל. תודה רבה חברים. |
ציטוט:
|
ציטוט:
|
כל הזמנים הם GMT +2. הזמן כעת הוא 21:55. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ