|
הרשם | ![]() |
שאלות ותשובות | ![]() |
רשימת חברים | ![]() |
לוח שנה | ![]() |
הודעות מהיום | ![]() |
חיפוש | ![]() |
|
![]() |
![]() |
|
כלים לאשכול | תצורת הצגה |
|
![]() |
# 1 |
תודה על תרומתך.
|
אתגר 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 ועד כמה אתם מסוגלים לבצע שאילתות מסובכות. תהנו |
![]() |
![]() |
# 2 |
Fatal Error
|
זה רק מוכיח כמה mySQL מסד מעפן
![]() אין לי מושג אם הוא תומך בשאילתות מקוננות וב JOINים למיניהם. אם האתגר היה ב SQL SERVER או ב Access, הייתי כותב SP שמקבל שלושה פרמטרים (את טקסט החיפוש, האיזור והקטגוריה) ..
__________________
eLad |
![]() |
![]() |
# 3 |
תודה על תרומתך.
|
MYSQL בכלל לא מסד מעפן, וכן MYSQL תומך ב LEFT JOIN
RIGHT JOIN INNER JOIN ועוד כמה דברים. אין לי בעיה שתעשה את זה במסדים אחרים, פשוט אני לא ממש אדע איך לבדוק את זה... |
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|