|
הרשם | ![]() |
שאלות ותשובות | ![]() |
רשימת חברים | ![]() |
לוח שנה | ![]() |
הודעות מהיום | ![]() |
חיפוש | ![]() |
|
![]() |
![]() |
|
כלים לאשכול | תצורת הצגה |
![]() |
# 1 |
משתמש - היכל התהילה
|
[שאלה] שליפה מידע מבסיס נתונים וסידורו
אהלן
![]() יש לי בבסיס נתונים: קטגוריה, ID. עכשיו בבסיס נתונים יש לי: קטגוריה ID כדורכגל 1 כדורכגל 2 כדורכגל 3 כדור-סל 4 כדורכגל 5 כדורכגל 6 עכשיו אני רוצה לשלוף את הראשון שנמצא בקטגוריה (כאילו שנוסף אחרון, ID=6) כדורגל, עכשיו זה לא בעיה.. אבל איך אני עושה שלמטה יהיה לינק ל"הבא", שיקשר לID הבא... למשל אם שלפתי את 6, יהיה לי למטה קישור ל5. אבל מה אני עושה עם 5? הבא אמור להיות 3... מקווה שמובן=] |
![]() |
![]() |
# 2 |
חבר מתקדם
|
אתה פשוט מגדיר משתנה מסוג INT שמייצג את המספר ID שאתה רוצה לשלוף וכל פעם תעשה +1 או -1 תלוי לאיזה כיוון אתה רוצה לזוז .
בנוגע ל5 2 אפשרויות , או שתשנה את השם של השדה או שתעשה בphp : PHP קוד:
PHP קוד:
__________________
|
![]() |
![]() |
# 3 |
משתמש - היכל התהילה
|
תודה, אבל זה לא עוזר לי...
לא בטוח שזה מסודר ככה... יכול להיות ש"הבא" יהיה אחרי 67... ולא דווקא אחרי 2... זה גם כל הזמן ישתנה.. |
![]() |
![]() |
# 4 |
Fatal Error
|
שלוף TOP 2 (או LIMIT 2) מהסוף (DESC) ואז פשוט את הראשון שיישלף לך (שזה בעצם האחרון במסד) תציג ובלינק לקישור הבא יהיה לך ה ID של השני שיישלף.
__________________
eLad |
![]() |
![]() |
# 5 |
משתמש - היכל התהילה
|
תודה על העזרה
![]() אבל אני גם צריך שזה יהיה תלוי במשתנה שאני צופה בו עכשיו... אם שלפתי 5, הבא אמור להיות 4... אבל אם שלפתי 4 הבא אמור להיות 3. כמובן שאם זה מסודר אחד אחרי השני. אבל אם זה לא? אם הסידור הולך ככה: 60 59 40 36 20 19 אז ב60 הבא זה 59, ב59 הבא זה 40, ב40 הבא זה 36, ב36 הבא זה 20... וההפרשים לא קבועים, משתנים כל פעם... ואני לא בהכרח מתחיל מהראשון, אני רוצה שגם אם אני אכנס לID 36, זה כבר יהיה לי בהבא את 20... |
![]() |
![]() |
# 6 | |
Fatal Error
|
ציטוט:
במידה וכן, אני חושב שאתה יכול להגדיר ב Limit גם את ההתחלה, משהו כזה: קוד:
SELECT fld FROM tbl LIMIT $nId,2 DESC מה עשית עם זה בעצם? השליפה התחילה מה ID שהתקבל והוא ישלוף לך 2 רשומות (את הרשומה של ה ID והזו הבאה אחריה) וככה יהיו לך שני נתונים. הרשומה הראשונה שתצא זה מה שאתה רוצה להציג והרשומה השנייה שתצא היא הרשומה "הבא".
__________________
eLad |
|
![]() |
![]() |
# 7 |
משתמש - היכל התהילה
|
אחלה, תודה רבה
![]() יש בעיה קטנה, בשביל להשתמש בLIMIT אני צריך לדעת את המקום של הID שאני שולף... למשל יש: 70 50 43 12 10 אז בשביל לשלוף את 12, אני צריך לעשות: LIMIT 3,2 נכון? אבל איך אני אדע את המקום של זה? (3)? |
![]() |
![]() |
# 8 |
חבר בקהילה
|
תעשה לולאה שעוברת כל שורה ושורה, ואם 12 לא נמצא, אז x++ , ואם הוא נמצא , תעשה LIMIT באמצעות x . (בהתחלה x שווה ל1)
|
![]() |
![]() |
# 9 |
חבר פורום
|
כשאתה מסדר לעמודים אתה לא אמור להתחשב ב-ID של כל שורה בטבלה, אלא רק במיקום של השורה ביחס לשאר השורות.
קוד:
LIMIT 0, 1 ה-LIMIT מקבל שני פרמטרים, הראשון הוא מאיזה מספר להתחיל והשני הוא כמה רשומות להחזיר. בשביל לקחת את התוצאה הראשונה אתה עושה LIMIT 0, 1. בשביל לקבל את התוצאה הבאה בתור (לעמוד השני) אתה עושה LIMIT 1, 1. אתה לא צריך לעבוד עם מספרי ה-ID. בשביל לקבל רשומות מהסוף ולא מההתחלה אתה מוסיף ל-SQL את המשפט: קוד:
ORDER BY id DESC אין צורך לבזבז משאבים ולהסתבך עם הקוד.
__________________
ניר, מתכנת PHP מקצועי עם ידע ויכולות מוכחות. צור קשר: MSN Messanger: MasterNir@gmail.com E-mail: MasterNir@gmail.com ICQ #: 171963672 |
![]() |
![]() |
# 10 |
משתמש - היכל התהילה
|
תודה לכולכם, כנראה שאני באמת אצטרך לעשות בלולאה שבודקת...
אפשר לנעול, תודה. |
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|