לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #4  
ישן 28-10-2008, 11:25
צלמית המשתמש של iBot
  משתמש זכר iBot iBot אינו מחובר  
 
חבר מתאריך: 16.08.08
הודעות: 123
בתגובה להודעה מספר 2 שנכתבה על ידי dorM שמתחילה ב "אני לא בטוח שהבנתי למה הכוונה..."

אכן לא הבנת...

לפני 2 טבלאות:
האחת כוללת ID של תגיות (label בהחלט מתאים להגדרה), והשמות שלהן, ובטבלה נוספת יש לי את הפוסטים (ID של הפוסט, כותרת הפוסט ותוכן לצורך העניין).
כעת אני רוצה לעשות קישור ביניהם, כאשר הפוסטים הם אלו שנושאים מספר תגיות (לא להפך), וההתלבטות היא באיזה טבלה לשמור את המידע (אם בטבלה חדשה או בטבלת ההודעות עצמן), וכאשר אני שומר אתה מידע, באיזה סוג שדה (מה הסוג שדה של אותה עמודה, לדוגמא INT לא יתאים גם כי קשה לי להאמין שיהיה מספר ענק של תגיות וגם כי אני נותן N תגיות עבור כל הודעה).

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

ישראל K: יחס של אחד לרבים נשמע לי יותר ריאלי במקרה הזה.
_____________________________________


נערך לאחרונה ע"י iBot בתאריך 28-10-2008 בשעה 11:28.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 28-10-2008, 15:46
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 4 שנכתבה על ידי iBot שמתחילה ב "אכן לא הבנת... לפני 2..."

ציטוט:
במקור נכתב על ידי iBot
...
כעת אני רוצה לעשות קישור ביניהם, כאשר הפוסטים הם אלו שנושאים מספר תגיות (לא להפך), וההתלבטות היא באיזה טבלה לשמור את המידע (אם בטבלה חדשה או בטבלת ההודעות עצמן), וכאשר אני שומר אתה מידע, באיזה סוג שדה (מה הסוג שדה של אותה עמודה, לדוגמא INT לא יתאים גם כי קשה לי להאמין שיהיה מספר ענק של תגיות וגם כי אני נותן N תגיות עבור כל הודעה).

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


אכן כמו שהצעתי קודם, טבלת קישור של רבים אל רבים יהיה מעולה...
בטבלה זו אין שום טור מסוג AUTO_INCREMENT (כלומר, אין צורך בטור כזה, אלא אם אתה רוצה ליצור טור נוסף של ה-id של הרשומה).
בטור אחד, שנקרא post_id, יהיה את ה-id של כל הפוסטים שיש להם תגית מסויימת.
בטור השני, label_id, יהיה את ה-id של התגית בטבלת התגיות.

אם אתה רוצה לקשר את תגית 3 להודעה 8, תצטרך להריץ את השאילתא:
קוד:
INSERT INTO tbl (post_id, label_id) VALUES (8, 3)


אם אתה רוצה לקשר להודעה 20 את התגיות 2 ו-5, תצטרך לכתוב:
קוד:
INSERT INTO tbl (post_id, label_id) VALUES (20,2), (20,5)


וכן הלאה... אם תרצה להוסיף להודעה 8 תגית נוספת שמספרה 14, תצטרך לכתוב פשוט:
קוד:
INSERT INTO tbl (post_id, label_id) VALUES (8, 14)


אם תרצה למחוק תגית מפוסט:
קוד:
DELETE FROM tbl WHERE post_id=8 AND label_id=14


ישראל: תודה על התיקון, שכחתי את השם המקצועי...
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 29-10-2008, 21:32
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 10 שנכתבה על ידי iBot שמתחילה ב "בהנחה שזה יעבוד (דרך אגב, אני..."

מה באמת קורה במצב שה-id הוא 1? זה סתם עוד מספר...

מה שאני מציע לך לעשות, אם אתה רוצה לצאת מזה בזול:

תעשה שאילתא שתיבחר את כל הרשומות עם label_id מתאים, בעזרת פסקת IN.

קוד:
SELECT post_id, label_id FROM tbl WHERE label_id IN (id1, id2, ...) ORDER BY post_id


אח"כ בצד שרת תעשה בדיקה איזה post_id עומד בקריטריונים.
בזכות פיסקת ה-ORDER BY, כל ה-post_id יהיו בקבוצות.
כלומר, תהיה קבוצה עם post_id זהה, כאשר הדבר היחיד שמתחלף זה ה-label_id. בזכות זה הבדיקה תהיה קלה יותר...

אמחיש בשפת PHP כיצד תיעשה הבדיקה:

קוד PHP:
 $rmysql_query('SELECT post_id, label_id FROM tbl WHERE label_id IN (id1, id2,  ...) ORDER BY post_id ASC');

$number_of_labels 2;    # How much labels did your enter within the IN clause?
$hasLabels 0;    # Count the number of correct labels for the last post_id
$last_post_id 0;
$post_IDs = array();    # Has the final results...


while($data mysql_fetch_array($r))
{
    
// Do we get a new post_id ?
    // If so, reset the $hasLabels variable.
    
if ($last_post_id != $data['post_id'])    # Make sure you don't have $data['post_id']=0, it's not recommended
    
{
        
$last_post_id $data['post_id'];
        
$hasLabels 0;
    }

    if (++
$hasLabels == $number_of_labels)
        
$post_IDs[] = $data['post_id'];


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

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 20:18

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר