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

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

Ori The Man 11-11-07 16:37

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

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

Rom 11-11-07 18:48

יש לך רשימה של פוסטים
לכל פוסט יש שורה של תגים
ואז בחיפוש אתה קורא לכל הפוסטים שיש בשורת תגים שלהם את הערך שרשמת בחיפוש.
ואת זה אתה עושה ע"י LIKE, אתה יכול לקרוא על LIKE כאן: http://www.sql-tutorial.net/SQL-LIKE.asp או שפשוט תחפש SQL LIKE בגוגל.

RS324 11-11-07 20:29

אפשר גם עם IN()

חיים 11-11-07 21:43

ציטוט:

נכתב במקור על ידי Rom (פרסם 577698)
יש לך רשימה של פוסטים
לכל פוסט יש שורה של תגים
ואז בחיפוש אתה קורא לכל הפוסטים שיש בשורת תגים שלהם את הערך שרשמת בחיפוש.
ואת זה אתה עושה ע"י LIKE, אתה יכול לקרוא על LIKE כאן: http://www.sql-tutorial.net/SQL-LIKE.asp או שפשוט תחפש SQL LIKE בגוגל.

קוד דוגמה:
קוד:

SELECT * FROM table WHERE description LIKE '%שמש%'
זה בידיוק כמו שאמרת אם הבנתי אותך נכון...

Rom 11-11-07 21:54

ציטוט:

נכתב במקור על ידי חיים (פרסם 577779)
קוד דוגמה:
קוד:

SELECT * FROM table WHERE description LIKE '%שמש%'
זה בידיוק כמו שאמרת אם הבנתי אותך נכון...

אם description זה הרשימת תגים אז כן, לזה התכוונתי.
וRS324 מה זה IN()?

Ori The Man 12-11-07 00:05

אני יודע איך הולך ה like
אבל הקטע של היעילות
אני לא רוצה טבלה עם מליון תגיות בניפרד אני יכול לעשות ישר like עם הרשימה של התגיות מופרדות בפסיק (זה ימצא את המילה שם ויציג?) או שאני יצתרך לעשות explode וזה יבדוק מילה מילה של התגיות

Rom 12-11-07 01:42

אתה פשוט עושה LIKE בלי explode ואתה מקבל את כל הפוסטים שיש להם את התג ששווה לLIKE שרשמת.
זה בידיוק כמו WHERE name = "Jack" רק שימוש בLIKE.

Ori The Man 12-11-07 02:25

אבל יש לי רשימה של
ים,שמש,חול,שמיים
וחיפשתי שמש
זה יעשה בדיקה ב like ל ים,שמש,חול,שמיים זה עדיין ימצא לי את זה? כי עם explode זה יעשה לי like לכל מילה בניפרד

Rom 12-11-07 10:50

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

RS324 13-11-07 00:12

ציטוט:

נכתב במקור על ידי Rom (פרסם 577784)
אם description זה הרשימת תגים אז כן, לזה התכוונתי.
וRS324 מה זה IN()?

ציטוט:

נכתב במקור על ידי Ori The Man (פרסם 577858)
אני יודע איך הולך ה like
אבל הקטע של היעילות
אני לא רוצה טבלה עם מליון תגיות בניפרד אני יכול לעשות ישר like עם הרשימה של התגיות מופרדות בפסיק (זה ימצא את המילה שם ויציג?) או שאני יצתרך לעשות explode וזה יבדוק מילה מילה של התגיות

כל האלה שאמרו EXPLODE וכד'
הלכתם יותר מידי רחוק

אני אתן לך דוגמא הכי פשוטה

יש לי מערכת משתמשים
ויש לי רק 7 משתמשים מורשים להתחבר למקום מסויים - סתם לצורך הדוגמא
וזה ה USER IDS שלהם : 1,5,1000,33,22,77

איך אתה בוחר אותם ? מה תעשה EXPLODE ותעשה שאילתה על כל אחד מהם ? ממש לא

PHP קוד:

$allowedUsersIDs '1,5,1000,33,22,77';

$users =  $db->query("SELECT username FROM users WHERE userid IN($allowedUsersIDs)");

while (
$user $db->fetch($users))
{
    
print_r($user);


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


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

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