הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   הזזת שורה (מעלה/מטה) ב php בסיס mysql (https://hosts.co.il/forums/showthread.php?t=18639)

skaz 29-03-06 13:11

הזזת שורה (מעלה/מטה) ב php בסיס mysql
 
היי, אני חדש פה :-D
עשיתי מערכת ניהול קטנה עם הוספת עמודים, עריכה ומחיקה.
אשמח אם מישהו יוכל להסביר לי איך אפשר להוסיף אפשרות של הזזת שורה במסד למעלה או למטה (כדי שיוכלו לשנות את סדר הופעת הדפים)
אני שובר את הראש כבר יומיים למצוא פתרון יצירתי
תודה!

Eye-Soft 29-03-06 13:36

Order By ShowID

הShowID הינה מספר אשר מייצג את מיקום הרשומה ביחס לשאר הרשומות ברגע הצגתם עם Order By ShowID.

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

בהצלחה :)

skaz 29-03-06 13:38

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

יש לי רעיון שיכול לעבוד - רעיון פשוט שכשלוחצים על העלה אז המיקום שלו גודל באחד והמיקום של הבא אחריו קטן באחד אבל אין לי מושג איך לכתוב את זה ב php בתוך הלולאה והכל...

Eye-Soft 29-03-06 13:48

הרעיון הראשון שלך מעוות. לא הבנתי מילה...

הרעיון השני הוא הרעיון הטיפוסי. למה אתה צריך לולאה ? ברגע שמישהו בוחר להעלות משהו למעלה, הוא מועבר לעמוד שמבצע את הפעולה...

skaz 29-03-06 13:58

כן אבל הבעיה שלי היא איך לבחור את העמוד שבא אחרי העמוד שאני רוצה לעלות במיקום שלו, ואיך להחליף ביניהם בו זמנית, זו לא בעייה חשיבה זו בעייה תכנית...

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

Eye-Soft 29-03-06 14:24

ציטוט:

נכתב במקור על ידי skaz
כן אבל הבעיה שלי היא איך לבחור את העמוד שבא אחרי העמוד שאני רוצה לעלות במיקום שלו, ואיך להחליף ביניהם בו זמנית, זו לא בעייה חשיבה זו בעייה תכנית...

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

אתה לא עושה את זה בו זמנית... אתה עושה את זה בשתי שאילתות של Update...

LosNir 29-03-06 14:58

ציטוט:

נכתב במקור על ידי skaz
כן אבל הבעיה שלי היא איך לבחור את העמוד שבא אחרי העמוד שאני רוצה לעלות במיקום שלו, ואיך להחליף ביניהם בו זמנית, זו לא בעייה חשיבה זו בעייה תכנית...

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

הממ יש לי רעיון,
נגיד נכנסים לדף ככה:
change.php?id=40
אז הוא מעלה את הID ל- 41, סבבה, אז מה שאתה עושה הוא ככה:
PHP קוד:

$newid $id++ 

ואז אתה עושה עוד שאילתת UPDATE ומוריד את $newid

skaz 29-03-06 15:16

עשיתי
PHP קוד:

        $position=$_GET['position'];
        
$position2=$position+1;
        
mysql_query("UPDATE contents SET position='0' where position='$position2'");
        
mysql_query("UPDATE contents SET position='$position2' where position='$position'");
        
mysql_query("UPDATE contents SET position='$position' where position='$position2'"); 

אבל הבעייה היא שהוא מאפס את המיקום של העמוד שבא אחרי העמוד שאני בוחר...

Eye-Soft 29-03-06 15:20

ציטוט:

נכתב במקור על ידי skaz
עשיתי
PHP קוד:

        $position=$_GET['position'];
        
$position2=$position+1;
        
mysql_query("UPDATE contents SET position='0' where position='$position2'");
        
mysql_query("UPDATE contents SET position='$position2' where position='$position'");
        
mysql_query("UPDATE contents SET position='$position' where position='$position2'"); 

אבל הבעייה היא שהוא מאפס את המיקום של העמוד שבא אחרי העמוד שאני בוחר...

אם אתה שואל את זה ברצינות, אתה לא עשית את זה. אתה בעצמך אמרת לו לאפס #@!$#@%!#$#@!%!@#$#@%$&^#$!%#@$%@#$%$^#!$%W#ESDFZX F@#%@#$

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

skaz 29-03-06 15:25

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

בחיים לא ראיתי מישהו מתנשא כמוך... מילא אם היית יודע מעולה הכל... |Rolleyes| לא פלא שהלקוחות שלך הם ילדים עם אתרים של אנימה...

בכל אופן הצלחתי לבד, תודה ל losnir על הנסיון לעזרה :)


כל הזמנים הם GMT +2. הזמן כעת הוא 20:19.

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