ABA


"|SQL| הכנסת ערך של שדה, לשדה אחר באותו משפט SQL"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10834 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10834
sza  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 26.4.02
12357 הודעות, 22 פידבק
   06:01   29.08.12   
אל הפורום  
  |SQL| הכנסת ערך של שדה, לשדה אחר באותו משפט SQL  
 
קודם אסביר מה אני מנסה לעשות (אולי, ובוודאי, תוכלו להאיר לי מנסיונכם שיש דרך שונה ופשוטה בהרבה מהסרבול שאני עושה בעשרה ל6 כשכל הלילה עבדתי על זה..)
אני בונה גלריה. את הגלריה בניתי בצורה של תיקיות. כשאני מעלה סט של תמונות לאתר, נפתחת רשומה חדשה במסד הנתונים ומקבלת picID חדש במספור אוטומטי. אח"כ טופס הPHP יוצר תיקיה בתוך /pictures- שם התיקיה הוא שם הpicID שהתקבל במסד הנתונים. לתוך התיקיה יוכנסו כל התמונות בשמות קבועים. (בכל תיקיה יש את אותם שמות קבצים ותמיד מדובר בסטים של מספר זהה של קבצים בעלי משמעות)
עד כאן הכל עובד,
עכשיו רציתי להוסיף לגלריה אפשרות לשנות את הסדר של התמונות. כלומר, עד עכשיו הגלריה הציגה את התמונות של תיקיה "1" בשורה, ומתחת שורה של תיקיה "2", וכן הלאה...
עכשיו אני רוצה שתהיה למשתמש אפשרות לגרום לתיקיה "2" להגיע מעל לתיקיה "1".
הוספתי עוד עמודה בטבלה בשם "location".
אני רוצה שבברירת מחדל, כשאני מוסיף תמונות חדשות, אז ביחד עם picID חדש שנוצר אוטומטית, יווצר גם location בעל ערך זהה. (כשאת location אוכל לשנות בהמשך בכדי להעלות/להוריד שורות, ועל פיו אני אסדר את שאילתת הSQL של תצוגת הגלריה).
מקווה שהבנתם אותי
בכל מקרה, מה שניסיתי והתברר לי כלא עובד הוא:

INSERT INTO gallery(picTimeStamp,location) VALUES('.time().',picID)


כלומר, אי אפשר להכניס פשוט את שם השדה.. זה לא עובד.. :(


--
צחי.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  picID זה ערך SQL-י או ערך בקוד שלך? אורי  29.08.12 08:46 1
     אף פעם לא עשיתי את זה, איך עושים? sza  29.08.12 13:03 3
         יש משהו שנקרא Last Insert Id dvir8 29.08.12 13:11 5
             אוקי תודה, והמקביל שלו בPDO: sza  29.08.12 14:21 7
  לדעתי, dvir8 29.08.12 09:26 2
     וואו, באמת שלא הצלחתי להבין למה אתה מתכוון. תוכל בבקשה לפרט? sza  29.08.12 13:11 4
         דיברתי ברמת ה GUI + DB, dvir8 29.08.12 13:12 6
  אוקי, את התשובה שעבדה קיבלתי בstackoverflow sza  30.08.12 00:27 8
     תוכל להראות את הקוד בבקשה? של הטריגר kutumaster  30.08.12 03:19 9
         הנה sza  30.08.12 10:11 10
             הכנסת אותו ל-ON INSERT? :) Ice Cold  30.08.12 12:13 11

       
אורי 
חבר מתאריך 9.7.12
20459 הודעות
   08:46   29.08.12   
אל הפורום  
  1. picID זה ערך SQL-י או ערך בקוד שלך?  
בתגובה להודעה מספר 0
 
   אם זה ערך SQL-י אתה חייב לשלוף אותו לתוך משתנה כלשהו עם SELECT ורק אחר כך להכניס אותו למקום אחר.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sza  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 26.4.02
12357 הודעות, 22 פידבק
   13:03   29.08.12   
אל הפורום  
  3. אף פעם לא עשיתי את זה, איך עושים?  
בתגובה להודעה מספר 1
 

picID הוא המפתח הראשי של הטבלה. אני רוצה שהשדה שהערך שמוכנס לו בAuto_increment יכנס גם לlocation בזמן הוספת רשומה.

--
צחי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   13:11   29.08.12   
אל הפורום  
  5. יש משהו שנקרא Last Insert Id  
בתגובה להודעה מספר 3
 
   http://php.net/manual/en/function.mysql-insert-id.php


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sza  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 26.4.02
12357 הודעות, 22 פידבק
   14:21   29.08.12   
אל הפורום  
  7. אוקי תודה, והמקביל שלו בPDO:  
בתגובה להודעה מספר 5
 
http://www.php.net/manual/en/pdo.lastinsertid.php
אני אקרא את הדוקומנטציה ומקווה שאסתדר איתה.

תודה רבה


--
צחי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   09:26   29.08.12   
אל הפורום  
  2. לדעתי,  
בתגובה להודעה מספר 0
 
   אתה צריך לשנות את ה Location לשורה שהחלפת איתה, כך שהיא תקבל את הערך הישן, והחדשה את הערך הישן של התיקיה שגררת.

פתרון שאני הייתי עושה. אתה צריך EVENT כשאתה עושה Release כדי לקבל את המיקום החדש שאתה נמצא בו.

ז"א אם גררת את התיקיה 7 מעל התיקיה 4.
אתה מסתכל על ה Parent ורואה שהוא 3.

אתה בעצם מוסיף אחד ומבין שאתה ה 4.

אתה נגש לDB ומבצע החלפה. כלומר אתה תהיה 4 מעכשיו, והישן יהיה המספר שלך לפני ההחלפה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sza  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 26.4.02
12357 הודעות, 22 פידבק
   13:11   29.08.12   
אל הפורום  
  4. וואו, באמת שלא הצלחתי להבין למה אתה מתכוון. תוכל בבקשה לפרט?  
בתגובה להודעה מספר 2
 


--
צחי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   13:12   29.08.12   
אל הפורום  
  6. דיברתי ברמת ה GUI + DB,  
בתגובה להודעה מספר 4
 
   לגבי החלק של ה DB
תראה מה רשמתי למעלה בתגובה למה שרשמת לאורי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sza  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 26.4.02
12357 הודעות, 22 פידבק
   00:27   30.08.12   
אל הפורום  
  8. אוקי, את התשובה שעבדה קיבלתי בstackoverflow  
בתגובה להודעה מספר 0
 
הוספתי לטבלה trigger שאחרי הוספת נתונים מעדכנת את ערך השדה לערך שהיה בpicID.
פשוט וקל, ולא הכרתי את הטריגרים, נחמד להכיר

תודה רבה לעוזרים!


--
צחי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
kutumaster 
חבר מתאריך 19.9.06
19325 הודעות
   03:19   30.08.12   
אל הפורום  
  9. תוכל להראות את הקוד בבקשה? של הטריגר  
בתגובה להודעה מספר 8
 
  

בברכה,


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sza  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 26.4.02
12357 הודעות, 22 פידבק
   10:11   30.08.12   
אל הפורום  
  10. הנה  
בתגובה להודעה מספר 9
 


CREATE TRIGGER trigger_name AFTER INSERT ON gallery FOR EACH ROW
BEGIN
DECLARE next_id INT;
SET next_id = (SELECT AUTO_INCREMENT FROM gallery WHERE TABLE_NAME='gallery');
SET NEW.location=next_id;
END

--
צחי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   12:13   30.08.12   
אל הפורום  
  11. הכנסת אותו ל-ON INSERT? :)  
בתגובה להודעה מספר 10
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net