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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 08-02-07, 16:05   # 1
sUP
משתמש תחת חוזה ניסיון.
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: אזור חיפה
הודעות: 1,948

sUP לא מחובר  

[PHP] קטגוריות רקורסיביות (?)

הי

יש לי עבודה קטנה על קטגוריות רקורסיביות,
כך שלדוגמא בכל קטגוריה \ תת קטגוריה \ תת-תת-תת קטגוריה יוכלו להוסיף פריט מסויים

אני קצת נתקע עם התכנות של זה

אשמח אם תוכלו לעזור לי

תודה
__________________

לפרטים נוספים dani3l@gmail.com (אימייל)
  Reply With Quote
ישן 08-02-07, 18:19   # 2
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 32
הודעות: 4,086

BlueNosE לא מחובר  

קטגוריות תמיד יש.
לכן נוסיף טבלה שתיקרא Cats.
נחלק את הטבלה Cats בצורה הבאה:
ID - Name - Description - cID
ID צריך להיות PRIMARY וכל השיט.
Name הוא שם הקטגוריה.
Description הוא תיאור הקטגוריה.
cID צריך לקבל ערך 0. אם הוא לא 0, הערך שיקבל יהיה הקטגוריה שמעליו (בעצם אם הוא לא 0 הוא לא קטגוריה אלא סאב קטגוריה).

בתוכם יוכלו להיות או אייטמים או סאב קטגוריות.
לכן ניצור טבלה חדשה, Items.
את Items נחלק כך:
ID - Name - Description - cID
ID שוב יהיה PRIMARY עם מספור אוטומטי.
Name שם, Description תיאור..
עכשיו cID זה הקטגוריה / הסאב.

שליפה:
PHP קוד:
function getinto($Cat)
{
$qry = @mysql_query ("SELECT * FROM Cats WHERE ID={$Cat}");
$q mysql_fetch_assoc ($qry);// או אריי, איך שבא לך
echo "details here.. {$q['Name']}{$q['Description']}";
$qry = @mysql_query ("SELECT * FROM Cats WHERE cID={$Cat}");
if (@
mysql_num_rows ($qry) > 0)
while (
$c mysql_fetch_array ($qry))
{
echo 
"{$c['Name']} - {$c['Description']}";
getinto($c['ID']);
}
$qry = @mysql_query ("SELECT * FROM Items WHERE cID={$Cat}");
if (@
mysql_num_rows ($qry) > 0)
while (
$i mysql_fetch_array ($qry))
echo 
"{$i['Name']} - {$i['Description']}";
}

$qry mysql_query ("SELECT * FROM Cats WHERE cID=0");
while (
$q mysql_fetch_array ($qry))
{
echo 
"{$q['Name']} - קטגוריה ראשית";
getinto($q['ID']);

נסה.. בוא נגיד שזה הומצא בתיבת טקסט זו..
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter
  Reply With Quote
ישן 08-02-07, 18:27   # 3
nevo
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 1,217

nevo לא מחובר  

לדעתי אפשר לעשות את זה בטבלה אחת, יותר טוב
פשוט תוסיף עוד שדה
c_type
שנגיד 1 = קטגוריה || 2 = סאב קטגוריה || 3 = סאב סאב... וכו'....
  Reply With Quote
ישן 08-02-07, 18:27   # 4
ali_napso
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 35
הודעות: 1,153

ali_napso לא מחובר  

בעיקרון אתה עושה שלכל קטגוריה יהיה קישוריות מסויימת לקטגוריה שמעליו(מן הסתם הID שלו) ובשליפה אתה בודק אם לקטגוריה שמעליו יש עוד קטגוריה מעליו וכך הלאה עד שאתה מגיע לראשי


ציטוט:
נכתב במקור על ידי nevo צפה בהודעה
לדעתי אפשר לעשות את זה בטבלה אחת, יותר טוב
פשוט תוסיף עוד שדה
c_type
שנגיד 1 = קטגוריה || 2 = סאב קטגוריה || 3 = סאב סאב... וכו'....
אבל שאתה מוסיף קטגוריה אתה תצטרך לבדוק כל פעם מחדש כמה "סאבים" יש וזה יהיה סתם ביזבוז
__________________

"Yesterday is history, Tomorrow is a mystery,
Today is a gift, that's why it's called the present".
  Reply With Quote
ישן 08-02-07, 18:43   # 5
sUP
משתמש תחת חוזה ניסיון.
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: אזור חיפה
הודעות: 1,948

sUP לא מחובר  

בחלה
תודה עומר
__________________

לפרטים נוספים dani3l@gmail.com (אימייל)
  Reply With Quote
ישן 08-02-07, 18:46   # 6
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 32
הודעות: 4,086

BlueNosE לא מחובר  

ציטוט:
נכתב במקור על ידי sUP צפה בהודעה
בחלה
תודה עומר
בכיף
הצלחת, הכל היה ברור?
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter
  Reply With Quote
ישן 08-02-07, 18:47   # 7
Level-Serv
תודה על תרומתך!
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: אזור השרון
גיל: 35
הודעות: 1,441
שלח הודעה באמצעות ICO אל Level-Serv שלח הודעה באמצעות MSN אל Level-Serv

Level-Serv לא מחובר  

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

אם אתה רוצה את הפונקציה צור קשר ואני אתן לך...
__________________
בברכה,
ניר
מנהל חברת Level-Serv
  Reply With Quote
ישן 08-02-07, 18:50   # 8
The Crow
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: קריית אונו
גיל: 36
הודעות: 181
שלח הודעה באמצעות MSN אל The Crow

The Crow לא מחובר  

BlueNosE, הקוד שלך ממש ממש ממש לא יעיל.
4 שאליתות + 3 לולאות שקוראות לעצמן...
ממש לא מומלץ.

בכל אופן, הטבלה של הקטגוריות צריכה להראות כך:
קוד:
id | parent_id | title
אם זו קטגוריה ראשית, אתה שם 0 ב parent_id.

בשליפה של הקטגוריות:
1. קודם כל שלוף את כל הקטגוריות לתוך מערך
2. קרא לפונקציה מסוימת, נקרא לה getCats והפונקציה הזאת תקבל 2 פרמטרים: catArr, parent_id
catArr - מערך עם כל הקטגוריות שיצרת בשלב 1
parent_id - כדי להציג את כל הקטגוריות הוא צריך להיות 0

בתוך הפונקציה, אתה עובר על המערך ובודק עבור כל ערך אם ה parent_id שלו שווה ל parent_id של הפונקציה. אם כן, אתה מדפיס/מאחסן אותו איפשהו וקורא לפונקציה getCats עם אותו מערך, רק שהפרמטר השני יהיה ה id של הערך הנוכחי.

הנה דוגמא של הפונקציה:
PHP קוד:
function getCats($arr$parent 0)
{
   foreach (
$arr as $val)
   {
        if (
$val['parent_id'] == $parent)
        {
           echo 
$val['title'];
           
getCats($arr$val['id']);
        }
   }

מקווה שהכל מובן.
בהצלחה

Last edited by The Crow; 08-02-07 at 19:03..
  Reply With Quote
ישן 08-02-07, 18:54   # 9
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 32
הודעות: 4,086

BlueNosE לא מחובר  

ציטוט:
נכתב במקור על ידי The Crow צפה בהודעה
BlueNosE, הקוד שלך ממש ממש ממש לא יעיל.
4 שאליתות + 3 לולאות שקוראות לעצמן...
ממש לא מומלץ.

בכל אופן, הטבלה של הקטגוריות צריכה להראות כך:
קוד:
id | parent_id | title
אם זו קטגוריה ראשית, אתה שם 0 ב parent_id.

בשליפה של הקטגוריות:
1. קודם כל שלוף את כל הקטגוריות לתוך מערך
2. קרא לפונקציה מסוימת, נקרא לה getCats והפונקציה הזאת תקבל 2 פרמטרים: catArr, parent_id
catArr - מערך עם כל הקטגוריות שיצרת בשלב 1
parent_id - כדי להציג את כל הקטגוריות הוא צריך להיות 0

בתוך הפונקציה, אתה עובר על המערך ובודק עבור כל ערך אם ה parent_id שלו שווה ל parent_id של הפונקציה. אם כן, אתה מדפיס/מאחסן אותו איפשהו וקורא לפונקציה getCats עם אותו מערך, רק שהפרמטר השני יהיה ה id של הערך הנוכחי.

הנה דוגמא של הפונקציה:
PHP קוד:
function getCats($arr$parent 0)
{
   foreach (
$arr as $val)
   {
        if (
$val['parent_id'] == $parent)
        {
           echo 
$val['title'];
           
getCats($arr$val['id']);
        }
   }

מקווה שהכל מובן.
בהצלחה
ולהריץ לולאת FOREACH בכל בדיקה לא תיקח יותר משאבים?
מילא אם היית עושה continue בין לבין..

חוץ מזה, הוא ביקש הצגת משהו בתוך הקטגוריה לא?..
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter
  Reply With Quote
ישן 08-02-07, 18:58   # 10
The Crow
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: קריית אונו
גיל: 36
הודעות: 181
שלח הודעה באמצעות MSN אל The Crow

The Crow לא מחובר  

ציטוט:
נכתב במקור על ידי BlueNosE צפה בהודעה
ולהריץ לולאת FOREACH בכל בדיקה לא תיקח יותר משאבים?
מילא אם היית עושה continue בין לבין..

חוץ מזה, הוא ביקש הצגת משהו בתוך הקטגוריה לא?..
לא, זה לא יקח יותר משאבים.
הצגת המידע על אותו עקרון... אני לא הולך לכתוב לו את כל הקוד.
  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. הזמן כעת הוא 21:06.

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