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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 07-07-06, 01:16   # 1
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

אתגר PHP קטן (למבינים ב MYSQL)

אוקי אז ככה... יש אתגר בשבילכם, אני ביצעתי אותו כבר ואני אפרסם את הפתרון בסוף.

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

והנה ההסבר :

ב DB יש לכם מספר טבלאות והם :

card - מייצג כרטיסים.

לטבלת CARD יש את המאפיינים הבאים :
cardid,areaid,catid,title,description

הטבלה CARD מייצגת לדוגמא כרטיסי ביקור

הטבלה CAT - מייצגת קטגוריות, כל כרטיס משוייך לקטגוריה, לקטגוריה יש את המאפיינים הבאים
catid,title,description

הטבלה AREA - מייצגת אזורים, כל כרטיס משוייך לאזור , לאזור יש את המאפיינים הבאים
areaid,title,description

עכשיו יש לנו 3 שדות של חיפוש
האחד הוא ftext שהוא בעצם INPUT רגיל.

ויש 2 SELECT נוספים

האחד זהו SELECT דינאמי אשר מציג את כל הקטגוריות הקיימות במערכת
ערך 0 מכיל את "בחר קטגוריה" ומ 1 והלאה זה לפי ה CATID מתוך ה DB

השני הוא אותו דבר לגבי האזורים כאשר הערך 0 הוא "בחר אזור" וההלאה זה לפי ה AREAID
מתוך ה DB.

מה שצריך לעשות זה ככה :

אם עשו חיפוש רק לפי טקסט חופשי, למצוא את כל הכרטיסים שתאור\כותרת שלהם מתאימה למילה
וכמו כן, אם הכרטיס יש לו אזור אז חיפוש לגבי אזור כותרת\תאור ואותו הדבר לגבי קטגוריה של האזור.

עכשיו אם בחרו רק קטגוריה אז לעשות חיפוש לפי הקטגוריה
אם בחרו רק אזור לעשות חיפוש לפי האזור
אם בחרו קטגוריה ואזור אז לעשות חיפוש לפי הקגוריה והאזור

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

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

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

אם לחצו על חפש, אז לעשות חיפוש באופן חופשי.

-------------------
עכשיו. החוקים :

עליכם לסיים את האתגר עם שאילתה אחת בלבד !!!
בכל בחירה, עליכם להציג את התוצאות באופן ראנדומלי בלבד.
בכל חיפוש אתם צריכים להגן מפני SQL INJECTION ושהקוד יהיה מאובטח
------------
למבינים במיוחד : לא מספיק קשה ? אז תוסיפו את זה
לכרטיסים יש 2 פרמטרים נוספים בטבלה והם :
newcard - הכרטיס הינו כרטיס חדש
selected - הכרטיס הינו כרטיס נבחר

בכל שאילתה עליכם להציג את החדשים ואת הנבחרים שמתאים לאפשרויות החיפוש.


-----
מנהלים : זהו באמת אתגר, אם תרצו אני אשלח לכם את הפתרון בפרטי.

בהצלחה לכם.

האתגר הזה אמור להוכיח לכם כמה אתם מבינים ב PHP\MYSQL ועד כמה אתם מסוגלים
לבצע שאילתות מסובכות.

תהנו
  Reply With Quote
ישן 07-07-06, 12:43   # 2
eLad
Fatal Error
 
eLad's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: localhost
גיל: 38
הודעות: 1,968

eLad לא מחובר  

זה רק מוכיח כמה mySQL מסד מעפן

אין לי מושג אם הוא תומך בשאילתות מקוננות וב JOINים למיניהם. אם האתגר היה ב SQL SERVER או ב Access, הייתי כותב SP שמקבל שלושה פרמטרים (את טקסט החיפוש, האיזור והקטגוריה) ..
__________________
eLad
  Reply With Quote
ישן 07-07-06, 15:17   # 3
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

MYSQL בכלל לא מסד מעפן, וכן MYSQL תומך ב LEFT JOIN
RIGHT JOIN
INNER JOIN
ועוד כמה דברים.
אין לי בעיה שתעשה את זה במסדים אחרים, פשוט אני לא ממש אדע איך לבדוק את זה...
  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. הזמן כעת הוא 20:02.

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