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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 31-12-11, 20:09   # 1
morsrh
חבר מתקדם
 
morsrh's Avatar
 
מיני פרופיל
תאריך הצטרפות: Feb 2010
מיקום: אשקלון.
גיל: 29
הודעות: 444
שלח הודעה באמצעות MSN אל morsrh

morsrh לא מחובר  

Smile שליפה מיידית מהמסד

אהלן ,
יש לי שאילתה INSERT פשוטה של הכנסת פוסט ואני רוצה לשלוף את אחד העמודות של הפוסט החדש הזה , אפשר לשלב את השאילתה של הINSERT עם שליפה כדי שלא יהיה מצב שיוכנס פוסט חדש בין השאילתות ואז השאילה של השליפה תשלוף את הפוסט הלא נכון?

איזה עוד אפשרויות יש לי?

תודה מראש ,
  Reply With Quote
ישן 31-12-11, 20:20   # 2
daNN
חבר בקהילה
 
daNN's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2011
גיל: 34
הודעות: 178

daNN לא מחובר  

תהפוך את המפתח שמייחד את הפוסט בתור Unique (בדר'כ ID).
וככה לא תוכל להכניס פעמיים אותו ערך.
אבל עדיין השאלה שלך לא מובנת כלכך מקווה שזה מה שהתכוונת
  Reply With Quote
ישן 31-12-11, 20:39   # 3
eLad
Fatal Error
 
eLad's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: localhost
גיל: 37
הודעות: 1,968

eLad לא מחובר  

אם תראה את העיצוב של המסד שלך אוכל לעזור אולי יותר.
כמה שיטות:
1. לייצור פרוצדורה של INSERT ו SELECT שתרוץ כמקשה אחת ברמת המסד
2. להשתמש בשדה מזהה כמו שהציעו מעלי במשפט INSERT SELECT אחד, אפשרי ב SQL SERVER וגם ב mySQL5. לא יודע לגבי גרסאות אחרות
3. לסגור אתה החיבור למסד מיד אחרי ה INSERT, לבצע SELECT ולשחרר את החיבור (פחות מומלץ)

ואם הצלחתי להבין אותך נכון, אם הרגע הכנסת מידע כלשהו למסד, למה לשלוף אותו? חבל על הזמן.. תציג את הנתונים על המסך AS IS. ואם לא הבנתי נכון, אשמח להסבר נוסף..
__________________
eLad
  Reply With Quote
ישן 31-12-11, 22:08   # 4
morsrh
חבר מתקדם
 
morsrh's Avatar
 
מיני פרופיל
תאריך הצטרפות: Feb 2010
מיקום: אשקלון.
גיל: 29
הודעות: 444
שלח הודעה באמצעות MSN אל morsrh

morsrh לא מחובר  

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


ד"א העמודה של ה id עולה באחד בכל פוסט
  Reply With Quote
ישן 31-12-11, 22:42   # 5
NetanelEdri
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Aug 2010
הודעות: 159

NetanelEdri לא מחובר  

די פשוט , תבחר את הפוסט האחרון שנוסף למסד ע"י אותו משתמש.
ציטוט:
SELECT * FROM `posts` WHERE `user_id` = 'x' ORDER BY `id` DESC LIMIT 1
כמובן שתשנה את כל מה שצריך לפי השדות והטבלה שלך.
__________________
UI/UX Expert | WEB Developer | Mobile Apps Developer

- Netanel Edri, new approach to development -
  Reply With Quote
ישן 31-12-11, 23:25   # 6
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

עדיף להשתמש ב- last_insert_id() כשאפשר, זה יותר בטוח (ולדעתי גם יותר יעיל) מהפתרון שהציע נתנאל.
ניתן להשתמש גם ב- transaction, אם אתה עובד עם מנוע שתומך (במידה והפתרון הראשון מתאים לך הוא יותר פשוט, יותר קל ולא פחות טוב לדעתי).
  Reply With Quote
ישן 31-12-11, 23:42   # 7
NetanelEdri
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Aug 2010
הודעות: 159

NetanelEdri לא מחובר  

ציטוט:
נכתב במקור על ידי xPerfection צפה בהודעה
עדיף להשתמש ב- last_insert_id() כשאפשר, זה יותר בטוח (ולדעתי גם יותר יעיל) מהפתרון שהציע נתנאל.
ניתן להשתמש גם ב- transaction, אם אתה עובד עם מנוע שתומך (במידה והפתרון הראשון מתאים לך הוא יותר פשוט, יותר קל ולא פחות טוב לדעתי).
אני מסכים שזה גם פתרון אפשרי אבל לא בדקתי את הנושא ומה שחשבתי עליו עכשיו איך last_insert_id מתמודד עם מקרה שבאותה שנייה מישהו אחר גם מעלה פוסט ? זה יכול ליצור לפותח האשכול בעיה במצבים כאלה.
__________________
UI/UX Expert | WEB Developer | Mobile Apps Developer

- Netanel Edri, new approach to development -
  Reply With Quote
ישן 31-12-11, 23:49   # 8
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

last_insert_id מחזיר את ה- ID של הרשומה האחרונה שהוכנסה ע"י אותה התחברות (זאת אומרת שזה תקף לאותו סיישן בלבד).
לצורך העניין (אין שום סיבה שזה יקרה אבל כדי להבין את זה) אם הכנסת רשומה, התנתקת מהמסד ואז ביצעת התחברות מחדש זה כבר לא יעבוד.

חשוב להריץ את זה ישר אחרי ה- INSERT שאתה רוצה לשלוף את ה- ID של הרשומה שנוצרה ממנו, אחרת אתה עלול לקבל תוצאות לא רצויות.
  Reply With Quote
ישן 31-12-11, 23:51   # 9
NetanelEdri
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Aug 2010
הודעות: 159

NetanelEdri לא מחובר  

ציטוט:
נכתב במקור על ידי xPerfection צפה בהודעה
last_insert_id מחזיר את ה- ID של הרשומה האחרונה שהוכנסה ע"י אותה התחברות (זאת אומרת שזה תקף לאותו סיישן בלבד).
לצורך העניין (אין שום סיבה שזה יקרה אבל כדי להבין את זה) אם הכנסת רשומה, התנתקת מהמסד ואז ביצעת התחברות מחדש זה כבר לא יעבוד.
כמו שציינתי בתגובה שלי לא בדקתי את הנושא ולא ידעתי שזה מחזיר לאותו סיישן של ההתחברות הנוכחית , אם ככה הפתרונות של שנינו מתאימים.
__________________
UI/UX Expert | WEB Developer | Mobile Apps Developer

- Netanel Edri, new approach to development -

Last edited by NetanelEdri; 01-01-12 at 00:55..
  Reply With Quote
ישן 01-01-12, 01:00   # 10
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

החסרונות בפתרון שהצעת הן שהוא פחות יעיל ופחות אמין מאשר last_insert_id, במידה ומדובר על אתר עמוס זה יכול להיות משמעותי.

במקום להשתמש ב- ORDER BY id DESC LIMIT 1 בד"כ עדיף לממש את זה עם- (SELECT MAX(id (באמצעות תכנון ואינדקסים מתאימים ניתן לקבל שיפור די משמעותי),
את ה- WHERE רצוי להשאיר עבור האמינות של התוצאה אבל אסור להתעלם מהעובדה שזה דורש עבודה נוספת מהמנוע ובעצם צורך יותר משאבים וזמן שאפשר לחסוך.

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

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

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

זה שלא הכרת זה בסדר גמור, אבל עכשיו כשאתה מכיר - בוא ניתן לו את הפתרון האידיאלי.

עריכה:
הניסוח של "מתאימים" יותר מתאים עכשיו, בכל מקרה בוא ניתן את הפתרון האידיאלי .

Last edited by אדיר; 01-01-12 at 01:08..
  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. הזמן כעת הוא 16:56.

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