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

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

Liorl 26-01-13 14:54

חיפוש ע"פ tags
 
שלום רב,
אני צריך עזרה בחיפוש ע"פ tags

מבנה הטבלה:

ID | name | content | tags


Tags נראה ככה: tag1,tag2,tag3

אני צריך לעשות סינון ע"פ תגים, למי שהו יש רעיון ?

ליאור

Ori The Man 26-01-13 15:18

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

אדיר 26-01-13 15:30

אפרט לך כאן קצת יותר.

קודם כל, קרא על Many to Many relationship.

אתה צריך במקרה הזה 3 טבלאות:
  • טבלה: posts. שדות: id | name | content
  • טבלה: tags. שדות: id | value
  • טבלה: post2tag. שדות: post_id | tag_id

הטבלה הראשונה מחזיקה מידע על הפוסטים בלבד.
הטבלה השניה מחזיקה מידע על התגיות בלבד.
הטבלה השלישית מקשרת פוסטים לתגיות (כאשר 2 השדות הם foreign keys כמובן).

Liorl 26-01-13 15:45

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 869240)
אפרט לך כאן קצת יותר.

קודם כל, קרא על Many to Many relationship.

אתה צריך במקרה הזה 3 טבלאות:
  • טבלה: posts. שדות: id | name | content
  • טבלה: tags. שדות: id | value
  • טבלה: post2tag. שדות: post_id | tag_id

הטבלה הראשונה מחזיקה מידע על הפוסטים בלבד.
הטבלה השניה מחזיקה מידע על התגיות בלבד.
הטבלה השלישית מקשרת פוסטים לתגיות (כאשר 2 השדות הם foreign keys כמובן).

לא יותר פשוט לעשות
טבלה posts
וטבלת tags שדות: id value post_id
?

אדיר 26-01-13 15:47

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

Haimz 26-01-13 16:01

תוכל לצמצם ל2 טבלאות, 3 טבלאות יהיו מיותרות כאן.

טבלה ראשונה posts. שמכילה: id | title | content ושאר השדות שאתה צריך.
טבלה שנייה tags. שמכילה: post_id | id | tag_name.

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

אדיר 26-01-13 16:14

עדיף ב- 3 טבלאות..
אחרת אתה מערבב בין הגדרת התגיות ובין הייחוס שלהן לפוסטים.

אם לא הבנתם את הרעיון מהקישור שפרסמתי, אולי כדאי שתעיפו מבט גם כאן:
http://stackoverflow.com/questions/6...-optional-tags
http://codex.wordpress.org/Database_Description

בהצלחה.

Haimz 26-01-13 16:16

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 869246)
עדיף ב- 3 טבלאות..
אחרת אתה מערבב בין הגדרת התגיות ובין הייחוס שלהן לפוסטים.

אם לא הבנתם את הרעיון מהקישור שפרסמתי, אולי כדאי שתעיפו מבט גם כאן:
http://stackoverflow.com/questions/6...-optional-tags
http://codex.wordpress.org/Database_Description

בהצלחה.

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

עם 2 הטבלאות ניתן יהיה למשוך תגית של פוסט, למשוך תגיות של פוסטים ולמשוך פוסטים של תגית \ תגיות מסויימות. אין צורך במשהו מעבר.

אדיר 26-01-13 16:23

חבל שנטחן מים..

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

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

לא סתם פרסמתי את הקישורים האלו בהודעות שלי.. באמת שכדאי להיכנס ולקרוא.
הנה עוד אחד - http://en.wikipedia.org/wiki/Many-to...8data_model%29
ולעוד מידע פשוט חפשו בגוגל, לא חסר.

Yahavgb 27-01-13 16:03

ציטוט:

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

עם 2 הטבלאות ניתן יהיה למשוך תגית של פוסט, למשוך תגיות של פוסטים ולמשוך פוסטים של תגית \ תגיות מסויימות. אין צורך במשהו מעבר.

לא מסכים, ב-many to many relationships, כמו במקרה הזה, אין שום סיבה לא להשתמש בטבלת עזר.

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


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

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