ABA


"בעיה בחיפוש בבסיס נתונים של mysql"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #11571 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11571
DKNY

   01:28   03.02.07   
אל הפורום  
  בעיה בחיפוש בבסיס נתונים של mysql  
 
   עבר עריכה לאחרונה בתאריך 03.02.07 בשעה 01:45 על-ידי FireAngel (מנהל הפורום)
 
שלום לכולם,

מישהו אולי יכול להסביר לי למה זה:


mysql_query("SELECT * FROM books WHERE name LIKE '$_POST[headline]%' OR text LIKE '$_POST[headline]%'
OR text LIKE '$_POSTcommentary]%' OR text LIKE '$_POST[place]%' OR text LIKE '$_POST[printing]%' OR text LIKE '$_POST[year]%'
OR text LIKE '$_POST[year]%' OR text LIKE '$_POST[lang]%' OR text LIKE '$_POST[general]%' ");

מחזיר לי את כל השורות הקיימות בבסיס הנתונים,
במקום רק את השורות שתואמות למילים שהכנסתי בשדות החיפוש...

לדעתי זה קורה בגלל שאני משאיר חלק מהשדות של החיפוש ריקים,
ובגלל שאני משתמש ב LIKE זה כאילו משווה את השדה הריק לכל שורה שקיימת
בבסיס הנתונים.

מישהו יודע איך אפשר להתגבר על התופעה?

תודה רבה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אממ כנס MeToR 03.02.07 09:56 1
  כנס אחי, הכנתי לך משהו פגז! MeToR 03.02.07 10:29 2
     אחי תודה רבה אבל יש בעיה קטנה DKNY 03.02.07 14:44 3
         כנס אחי... MeToR 03.02.07 18:17 4
             וואלה אחי תודה רבה DKNY 03.02.07 19:03 5
                 אחי עובד מצוין + ברשותך שאלה נוספת DKNY 05.02.07 02:39 6
                     אממ כנס אחי... MeToR 05.02.07 14:25 7
                         וואלק אתה.... DKNY 05.02.07 17:35 8

       
MeToR
חבר מתאריך 26.1.07
11 הודעות
   09:56   03.02.07   
אל הפורום  
  1. אממ כנס  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 03.02.07 בשעה 09:57 בברכה, MeToR
 
קודם כל שכחת סוגריים מרובעות ב-commentary, אבל זה בלי קשר...

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

אני בינתיים אנסה להכין לך משהו.

בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MeToR
חבר מתאריך 26.1.07
11 הודעות
   10:29   03.02.07   
אל הפורום  
  2. כנס אחי, הכנתי לך משהו פגז!  
בתגובה להודעה מספר 0
 
   הכנתי לך קוד שבודק את השדות אם הם ריקים או לא, ומכין לבד את משפט
ה-SQL

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


text LIKE '%מחרוזת מסויימת%'

בכל מקרה, הנה הקובץ עם הקוד (כקובץ טקסט):
http://rotter.name/User_files/nor/45c44795084b3df0.txt

בדיוק חשבתי על דרך אחרת גם לעשות את זה, אבל לא משנה, זה עובד.

בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DKNY

   14:44   03.02.07   
אל הפורום  
  3. אחי תודה רבה אבל יש בעיה קטנה  
בתגובה להודעה מספר 2
 
   זה מחזיר לי שגיאה בשורה הזאת:
while($row=mysql_fetch_array($ex))
ולא מראה לי את תוצאות החיפוש...

איך מתקנים אחי???

ושוב פעם תודה רבה אתה תותח!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MeToR
חבר מתאריך 26.1.07
11 הודעות
   18:17   03.02.07   
אל הפורום  
  4. כנס אחי...  
בתגובה להודעה מספר 3
 
   אתה לא אמור לעשות ככה...
אתה אמור קודם לעשות ככה:

$rs=mysql_query($ex,$c);

c$ - המשתנה שדרכו התחברת למסד (mysql_connect).

ואז אתה עושה:


while ($row=mysql_fetch_array($rs))

אם יש בעיות, תגיד לי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DKNY

   19:03   03.02.07   
אל הפורום  
  5. וואלה אחי תודה רבה  
בתגובה להודעה מספר 4
 
   לצערי אין לי כרגע זמן לנסות
אבל אני אנסה ואם תהיה בעיה אני אשלח לך בפרטי...

תודה אחי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DKNY

   02:39   05.02.07   
אל הפורום  
  6. אחי עובד מצוין + ברשותך שאלה נוספת  
בתגובה להודעה מספר 5
 
   קודם כל אחי, תודה רבה זה עובד מצוין!

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

השורה הזאת:
$number = mysql_num_rows($ex,$c);

לא עובדת לי אחי...


תודה שוב!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MeToR
חבר מתאריך 26.1.07
11 הודעות
   14:25   05.02.07   
אל הפורום  
  7. אממ כנס אחי...  
בתגובה להודעה מספר 6
 
   אתה צריך להריץ את הפקודה הזאת על ה-query, ולא על המשפט SQL עצמו,
כמו שעשיתי כאן:

$number=mysql_num_rows($rs,$c);

שמחתי לעזור


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DKNY

   17:35   05.02.07   
אל הפורום  
  8. וואלק אתה....  
בתגובה להודעה מספר 7
 
   כל הכבוד לך אחי,
זהו כמעט סיימתי כאן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net