02-03-09, 15:28 | # 1 |
חבר בקהילה
|
שאלה קטנה ב PHP...
שלום...
אני מפתח כרגע מערכת של אינדקס חברות ומוצרים. המערכת תעבוד בצורה כזו: אופציה להוספת קטגוריה. אופציה להוספת חברה/מוצר(בתהליך ההוספה יהיה בחירת מספר קטגוריות לשיוך אותה החברה/מוצר). הגולש יראה: רשימת כל החברות ומוצרים. אפשרות של סינון בתוצאות לפי רשימת הקטגוריות(אלו שהמנהל מוסיף בפאנל). את רוב הדבר הזה כבר עשיתי ואין שום בעיה... מה שאני קצת מסתבך בו זה העניין שבהוספת החברה/מוצר אני רוצה לעשות בחירה מרובה של קטגוריות...אז אני שולף מהטבלה של הקטגוריות את כל הקטגוריות ומדפיס כפלט תיבות סימון ב-V ליד כל שם של כטגוריה...אבל איך אני מכניס את זה למסד...? ואח"כ אחרי שהכנסתי...איך בסינון תוצאות אני מציג רק את החברותמוצרים שמשוייכים לאותה קטגוריה...? אשמח לעזרה במהרה, מתן.
__________________
אחסון אתרים, עבודות גבס בירושלים ,אינדקס אתרים ,lc980 brother ,הבלוג הקשיח ,מתקנים מתנפחים, קפה לאירועים |
02-03-09, 15:46 | # 2 |
חבר מתקדם
|
למידע מסוג זה עדיף תשתמש בתיבת בחירה מרובה ולא בתיבות סימון. לדוגמא:
קוד:
<select name='cats' multiple='multiple'> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> קוד:
# Save to DB $saved_cats = is_array($_POST['cats']) ? implode(',', $_POST['cats']) : $_POST['cats']; קוד:
# Get from DB $cats_array = explode(',', $row['cats']); |
02-03-09, 15:50 | # 3 |
חבר בקהילה
|
דבר קטן ששכחת ואדים, זה שבתיבת בחירה מרובה שם התיבה צריך להיות עם מערך.
כלומר, קוד:
<select name='cats[]'... |
02-03-09, 16:01 | # 4 |
חבר בקהילה
|
תודה רבה לשניכם...
ואדים...לא משמ הבנתי את עניין ההכנסה למסד נתונים...הבנתי שזה מכניס את כל מה שנבחר בבחירה מרובה לתוך מערך...אבל את המערך איך אני מכניס למסד נתונים...באיזה צורה..?
__________________
אחסון אתרים, עבודות גבס בירושלים ,אינדקס אתרים ,lc980 brother ,הבלוג הקשיח ,מתקנים מתנפחים, קפה לאירועים |
02-03-09, 16:03 | # 5 |
חבר מתקדם
|
כן זה צריך להיות cats[] שמעיד שזהו מערך ולא ערך בודד. אתה לא יכול להכניס מערך למסד נתונים זה ישבור אותו. זה או שתבצע serialize על המערך ותשמור את זה או שתבצע implode על המערך ותשמור אותו כסטרינג מופרד בפסיק או כל דבר אחר.
|
02-03-09, 16:18 | # 6 |
חבר בקהילה
|
לא ממש הבנתי אותך ואדים...
תראה בסופו של דבר אני רוצה שבפאנל ניהול תהיה הבחירה מרובה הזו... ובאתר עצמו(מה שהגולש הרגיל יראה) יופיעו כל החברות והמוצרים +תיבת סינון תוצאות....ולפי בחירת הגולש...זה יציג לו את כל החברות והמוצרים שמשוייכים לאותה קטגוריה שהגולש בחר... אם יהיה חברה/מוצר שבבחירה מרובה בחרתי להם 3 קטגוריות...אז בסינון תוצאות שהגולש עושה הם יופעו תחת 3 הקטגוריות האלו... הבנת את הרעיון?
__________________
אחסון אתרים, עבודות גבס בירושלים ,אינדקס אתרים ,lc980 brother ,הבלוג הקשיח ,מתקנים מתנפחים, קפה לאירועים |
02-03-09, 18:34 | # 7 |
חבר וותיק
|
הפתרון של ואדים פשוט, אתה מכניס את השמות קטג' בהפרדה של פסיקים...
למשל cat_1, cat2, cat3 כדי לחפש אתה פשוט עושה like לשדה הזה. וכדי להציג שמות קטג' אתה עושה explode ולתשובה אתה מנתח את מה שאתה רוצה.. |
02-03-09, 20:19 | # 8 |
חבר בקהילה
|
ככה לא בונים חומה.
איך אחריי זה תתחיל לשלוף את כל המוצרים שבקטגוריה X? עם LIKE וחבריו? לדעתי הדרך היא: 3 טבלאות: טבלת קטגוריות טבלת מוצרים טבלה שמקשרת קטגוריות למוצרים ( קשר רבים-לרבים ) השליפה עם JOIN. עוד על זה: http://en.wikipedia.org/wiki/Database_normalization http://www.tonymarston.net/php-mysql/many-to-many.html ופה: http://www.phpro.org/tutorials/Taggi...And-MySQL.html יש טאגים לכתבות, במקרה שלך קטגרויות למוצרים, המימוש זהה. |
03-03-09, 00:38 | # 9 |
חבר וותיק
|
לדעתי זה מסובך וביזבוז משאבים, ובטח- לא מסודר.בחירה שלך..
|
03-03-09, 01:54 | # 10 |
חבר בקהילה
|
like ברוב המקרים יעשה fulltable scan
ו join עם אינדקסים מתאימים לא. וגם, אם יש מוצר שיושב ב100 קטגרויות, אז אתה צריך עבור כל שורה, שהתא של הקטגרויות, יכיל 100*מס' מקסימלי של תווים בקטגוריה. אבל רגע, אם נרצה מוצר שיושב ב200 קטגוריות, מה אז? אז מה יותר מבזבז משאבים? |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|