הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 20-01-12, 17:44   # 1
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

חיפוש בבסיס נתונים: Like מורחב?

שלום.
נגיד ויש לי משפט:

I want to work.

נניח ואדם חיפוש I want אז הכל בסדר, במידה והוא מחפש I work הוא לא מקבל כלום, למה?

אני רוצה שהחיפוש יהיה מאוד רחב.
חשבתי לקחת את המשפט, לפרק אותו למילים עם explode ואז להריץ LIKE על כל אחד אבל איך עושים זאת? איך מריצים את ה LIKE על כל אחד?

תודה!
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 20-01-12, 18:09   # 2
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

תקרא על MATCH AGAINST.
  Reply With Quote
ישן 20-01-12, 20:01   # 3
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

בקושי יש על זה מידע..
עשיתי כך:
HTML קוד:
$query = "SELECT * FROM `blabla` WHERE MATCH(`bla`) AGAINST('" . $search . "')";  
שגיאה..
בטוח שאין שיטה יותר נוחה?

תודה.
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743

Last edited by IgalSt; 20-01-12 at 23:22.. סיבה: סידור הקוד עם תגיות קוד
  Reply With Quote
ישן 21-01-12, 19:11   # 4
Erez | TrustMedia.co.il
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,854

Erez | TrustMedia.co.il לא מחובר  

הגדרת את השדה בתור full text field (או משהו בסגנון, לא זוכר בדיוק)?
ויש עוד כל מיני מנועי חיפוש אבל זה הכי פשוט לשימוש שמגיע עם mysql
__________________
  Reply With Quote
ישן 22-01-12, 19:49   # 5
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

http://phpguide.co.il/%D7%97%D7%99%D...7%9C%D7%90.htm
יש פה הסבר די טוב על זה

זה הרבה יותר יעיל ומדוייק מלהשתמש בלייק, אבל בכל מקרה - את מה שאמרת עושים ככה:
PHP קוד:
<?php
$args 
= array('title''body''author'); // השמות של השדות בדאטהבייס
$query explode(' 'urldecode($_GET['q']));
$where = array();
$where[] = "1"// למקרה שאין כלום בשאילתה, תמיד אפשר לעשות WHERE 1 בלי שיקרה כלום
foreach($args AS $arg)
{
    
$curRun = array();
    foreach(
$query AS $word)
    {
        
$curRun[] = $arg." LIKE '%".mysql_real_escape_string($word)."%'";
    }
    
$where[] = "(".implode(" OR "$curRun).")";
}
$results mysql_query("SELECT * FROM table WHERE ".implode(" OR "$where));
?>
וכמובן שאתה יכול להחליף את ה-OR למ-AND אם זה מה שאתה מעדיף - אבל שוב, זה הרבה פחות יעיל
  Reply With Quote
ישן 25-01-12, 16:38   # 6
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

ציטוט:
נכתב במקור על ידי Itay צפה בהודעה
http://phpguide.co.il/%D7%97%D7%99%D...7%9C%D7%90.htm
יש פה הסבר די טוב על זה

זה הרבה יותר יעיל ומדוייק מלהשתמש בלייק, אבל בכל מקרה - את מה שאמרת עושים ככה:
PHP קוד:
<?php
$args 
= array('title''body''author'); // השמות של השדות בדאטהבייס
$query explode(' 'urldecode($_GET['q']));
$where = array();
$where[] = "1"// למקרה שאין כלום בשאילתה, תמיד אפשר לעשות WHERE 1 בלי שיקרה כלום
foreach($args AS $arg)
{
    
$curRun = array();
    foreach(
$query AS $word)
    {
        
$curRun[] = $arg." LIKE '%".mysql_real_escape_string($word)."%'";
    }
    
$where[] = "(".implode(" OR "$curRun).")";
}
$results mysql_query("SELECT * FROM table WHERE ".implode(" OR "$where));
?>
וכמובן שאתה יכול להחליף את ה-OR למ-AND אם זה מה שאתה מעדיף - אבל שוב, זה הרבה פחות יעיל

תודה אבל החיפוש ממש גרוע!
זה הקוד:

$args = array('title'); //
PHP קוד:
השמות של השדות בדאטהבייס
$query 
explode(' 'urldecode($_GET['q']));
$where = array();
$where[] = "1"// למקרה שאין כלום בשאילתה, תמיד אפשר לעשות WHERE 1 בלי שיקרה כלום
foreach($args AS $arg)
{
    
$curRun = array();
    foreach(
$query AS $word)
    {
        
$curRun[] = $arg." LIKE '%".mysql_real_escape_string($word)."%'";
    }
    
$where[] = "(".implode(" OR "$curRun).")";
}
$results mysql_query("SELECT title FROM tutorials WHERE ".implode(" OR "$where));


while(
$rs mysql_fetch_array($results)) {
    
$cname $rs['title'];
    echo 
"$cname\n";

אם יש לי דבר כזה:

How to plan amazing trip

ואני מחפש: how to amazing
זה לא מוצא..למה?
תודה.
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 25-01-12, 22:44   # 7
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

תריץ את השאילתא הזאת בדאטהבייס שלך (דרך ה-phpMyAdmin) ותגיד אם זה מחזיר משהו:
קוד:
SELECT title FROM tutorials WHERE 1 OR (title LIKE '%how%' OR title LIKE '%to%' OR title LIKE '%amazing%')
  Reply With Quote
ישן 26-01-12, 17:45   # 8
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

כן מחזיר..
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 26-01-12, 19:47   # 9
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

אז תשנה את זה:
PHP קוד:
$results mysql_query("SELECT title FROM tutorials WHERE ".implode(" OR "$where)); 
לזה:
PHP קוד:
$results "SELECT title FROM tutorials WHERE ".implode(" OR "$where); 
ותדפיס את $results ותרשום פה את הפלט
  Reply With Quote
ישן 26-01-12, 19:55   # 10
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

החיפוש יותר נחמד אבל עדיין גרוע בכללי..
למשל יש לי:
How to plan amazing trip

אם אני רושם trip זה מוצא, אם אני רושם plan זה מוצא..אם אני רושם how to plan אז הוא מוצא אותו ממש ממש ממש למטה..כאילו הוא לא הכי רלוונטי כרגע..יש מעליו עשרות שיש בהם רק את המילה how למשל..

לא מבין את זה!
בבקשה עזרה, תודה!
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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