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

הוסטס - פורום אחסון האתרים הגדול בישראל (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 על הנסיון לעזרה :)

LosNir 29-03-06 16:56

ציטוט:

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

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

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

Eye-Soft 29-03-06 17:05

ציטוט:

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

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


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

העובדה שהצלחת לבד היא ההוכחה לזה שעזרתי לך. כי כל מה שניר אמר לך לעשות היה:
משתנה=משתנה + 1, דבר שאני מניח שידעת ביום הראשון שלמדת PHP... :\

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

דרך אגב LosNir, אתה מוזמן לנסות ולפרוץ לאחת המערכות שתכנתתי. אהה ומצידי שים אותי באיגנור, see if i care :|

meshuga 29-03-06 17:20

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


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

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