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

הוסטס - פורום אחסון האתרים הגדול בישראל (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, כמו במקרה הזה, אין שום סיבה לא להשתמש בטבלת עזר.

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

Liorl 27-01-13 17:59

ציטוט:

נכתב במקור על ידי Yahavgb (פרסם 869354)
לא מסכים, ב-many to many relationships, כמו במקרה הזה, אין שום סיבה לא להשתמש בטבלת עזר.

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

תודה יהב, כמו שאדיר ואתה אמרתם, השתמשתי בmany to many relationships התוצאה די מרשימה, עובד בידיוק כמו שאני צריך על הדרך למדתי משהו חדש :)
תודה רבה לשניכם, לא צריך להגיד כמה שאנ מעריך אותכם על כל העזרה שאתם תמיד נותנים לי.. אתם יודעים את זה :)

Haimz 27-01-13 21:07

ציטוט:

נכתב במקור על ידי Yahavgb (פרסם 869354)
לא מסכים, ב-many to many relationships, כמו במקרה הזה, אין שום סיבה לא להשתמש בטבלת עזר.

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

כל מקרה לגופו, כמו שלא תשתמש בphp במקום html.
כנראה שלא הבנתי את הכוונה שלו וכמו שאמרתי השימוש בmany to many relationships הוא יעיל אבל תלוי איפה.

להפריד בפסיק זה ממש לא נכון לעשות בשום מקרה כשאתה משתמש עם mysql ..

בכל מקרה, כנראה התבלבלתי בכוונה שלו..

Yahavgb 28-01-13 01:48

ציטוט:

נכתב במקור על ידי Haimz (פרסם 869386)
כל מקרה לגופו, כמו שלא תשתמש בphp במקום html.
כנראה שלא הבנתי את הכוונה שלו וכמו שאמרתי השימוש בmany to many relationships הוא יעיל אבל תלוי איפה.

להפריד בפסיק זה ממש לא נכון לעשות בשום מקרה כשאתה משתמש עם mysql ..

בכל מקרה, כנראה התבלבלתי בכוונה שלו..

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


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

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