לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #19  
ישן 19-01-2010, 19:05
  Eliran10 Eliran10 אינו מחובר  
 
חבר מתאריך: 23.10.09
הודעות: 30
הסבר
בתגובה להודעה מספר 18 שנכתבה על ידי dorM שמתחילה ב "למה הכוונה "לא תמיד כל..."

דבר ראשון בוא נבין את הבעיה, העלתי גרסאת TEST לכתובת http://debug.israelmf.com
המסך הבעייתי הוא המסך "צור JCL חדש",
במסך זה כפי שאתה רואה יש המון המון INPUT-ים, לפעמים חלקם לא מתעדכנים וכולם שייכים ל- FORM אחד.
יש דפדפנים שלא משנה מה תכתוב שום נתון לא יועבר לשרת, יש דפדפנים אחרים שבהתחלה הכל תקין,
הכל נשמר, אך לאחר שאנו מוסיפים עוד שדות למילוי (נניח הוסף STEP שניתן ללחוץ עליו למטה) אז מתחיל הבעיות עם העברת הנתונים.

מה זה בעיות של העברת נתונים?
תשובה - נניח מלאת שדה טקסט, שדה טקסט זה אמור להשלח לשרת והשרת שומר את הנתון אך לפעמים השרת לא שולח את ה- INPUT ואז השדה לא נשמר.
אם תרצה לראות בעיה שתמיד מתרחשת שם לב שלמטה יש "הוסף STEP" ואתה יכול לקבוע איזה STEP,
אז בדרך כלל בפעם הראשונה כאשר אתה בוחר את סוג ה- STEP זה יעבוד אבל בהמשך זה יוסיף את ה- STEP הקודם שהוספת.
מאיפה הבעיה נובעת? תשובה - שם ה- POST לפי הקוד:
<select name="addstep"
הוא addstep ובקוד צד שרת לפני הצגת ה- HTML יש את הקוד הבא:
if(isset($_POST['addstep'])) {$_SESSION['addstep'] = $_POST['addstep'];}
שבודק אם קיים המשתנה ADDSTEP ובמידה והוא קיים הוא שומר אותו במשתנה SESSION,
ובהמשך הוא מוסיף את ה- STEP שכתוב במשתנה $_SESSION['addstep'].
עכשיו בהתחלה המשתנה addstep נשלח ל- POST ולכן הנתון מועבר ל- SESSION,
אך לאחר מכן הוא לא נשלח ל- POST ולכן המשתנה שב- SESSION זוכר את הערך הקודם.

להלן תצורת העבודה עם ה- PHP כאשר הדף עולה:
1. שלב ה- REFRESH - העברת כל הנתונים מה- POST ל- SESSION.
2. בדיקה אם קיים משתני GET והפעלה בהתאם.
3. הצגת טופס ה- HTML.

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

המון תודה על העזרה דור.

נערך לאחרונה ע"י Eliran10 בתאריך 19-01-2010 בשעה 19:09.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #20  
ישן 20-01-2010, 18:00
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 19 שנכתבה על ידי Eliran10 שמתחילה ב "הסבר"

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

הצעתי לך, שהיא טובה לכל מקרה, היא לסדר מחדש את הקוד! סדר זה הדבר החשוב ביותר שהרבה מתכנתים מתעלמים ממנו.
במקום לשים את קוד ה-JS בתוך מסמך ה-HTML, שים אותו בקובץ חיצוני, וקשר אותו למסמך ה-HTML באמצעות תג script.
סדר אותו בצורה נוחה לקריאה והבנה של מה מתרחש. כתוב לעצמך במסמך נפרד איזשהם Coding Conventions שתנהג לפיהם ושיגרמו לקוד להיכתב באופן קבוע (Consistent).
כתוב את הקוד בצורה נכונה. (לא אומר שעכשיו זה בנוי לא נכון כי לא התעמקתי בקוד, אבל מדבר באופן כללי).
במקום לכתוב קוד CSS בתוך מאפיין style עבור כל אלמנט, צור קובץ CSS חיצוני, וקשר אותו למסמך ה-HTML בעזרת תג link.
במקום לקבוע אירועים לאלמנטים באמצעות המאפיינים הרלונטים (onkeypress וכד'), הקצה את האירועים לאלמנטים במסמך ה-JS.
אחרי שעשית את כל זה, אני בטוח שיהיה לך ולכל האחרים הרבה יותר קל לדבג את הקוד ולמצוא את הבעיה!

Reorganize -> Write code correctly -> PROFIT

נערך לאחרונה ע"י dorM בתאריך 20-01-2010 בשעה 18:02.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #22  
ישן 20-01-2010, 21:01
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 21 שנכתבה על ידי Eliran10 שמתחילה ב "..."

ציטוט:
תשמע, הבעיה היא לא בקוד, וה- JS הוא בקובץ חיצוני כבר שה- PHP קורא לו.
מבחינת הדפדפן, ה-JS הוא פנימי למסמך, ולא בקובץ חיצוני.
ככל הנראה בשרת יש קובץ JS ואתה פולט את התוכן שלו לדפדפן בעזרת פונקציה כלשהיא של שפת האפליקציה.
ציטוט:
הבעיה היא שמרוב שיש הרבה נתונים להעביר ל- POST לא הכל תמיד עובר, ואני צריך למצוא דרך חלופית להעביר את הנתונים ל- POST.

מצטער אבל לא נשמע הגיוני... מתודת POST מאפשרת העברה של המון תוים, שלא לומר קבצים גדולים (בסדר גודל של מאות MB או GB...)
ציטוט:
שוב פעם - מבחינתי הקוד הוא מסודר והבעיה היא לא בקוד כי ממש בדקתי את זה ולפעמים לא הכל עובר ל- POST.

מבחינתך אולי זה מסודר כי אתה מכיר את הקוד, אבל בשבילי בתור אחד שבא לבדוק את הקוד ולדבג אותו זה קצת קשה, כי אני לא יודע מה כתבת, ולכן אני צריך להכיר את המסמך ולדעת מה קורה בו בדיוק.
יש מקומות עם עירבוב של HTML, JS, CSS באותה שורה. בבקשה נסה את מה שכתבתי בהודעתי האחרונה, הדברים ייראו אחרת לגמרי...!
אם הכל לא עובר ל-POST, אז איפה לדעתך הבעיה..? לעניות דעתי הבעיה בקוד...
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #23  
ישן 22-01-2010, 16:08
  Eliran10 Eliran10 אינו מחובר  
 
חבר מתאריך: 23.10.09
הודעות: 30
הסיבה שבגללה אני חושב שהבעיה היא לא בקוד היא..
בתגובה להודעה מספר 22 שנכתבה על ידי dorM שמתחילה ב "[QUOTE]תשמע, הבעיה היא לא..."

הסיבה שבגללה אני חושב שהבעיה היא לא בקוד היא שכשאני מריץ את האתר על ה- LOCALHOST במחשב שלי
אין שום בעיה, הכל עובד חלק, אך כאשר אני מריץ את אותו האתר, את אותו הקוד בשרת האתר עושה בעיות.

יכול להיות שכמו שאתה אומר ניתן לשלוח ל- POST ברמה של גיגות אבל יכול להיות שהבעיות צצות יותר לכיוון של הרוחב,
(עומק = קובץ גדול, רוחב = המון נתונים קטנים)
ואז כאשר ה- POST נעשה לפני החלפת העמוד (ב- OnBeforeUnLoad ) אז הוא לא מספיק להעביר את הכל.

תבין אותי, איך הבעיה היא יכולה להיות בקוד אם במחשב שלי זה עובד מצויין?
אני בכ"א יעשה עוד כמה בדיקות.. בוא נראה אולי תקלו עלי בדיבאגינג, אתה יודע במקרה איך אני מציג בPHP או JS את גודל ה- POST או את ערך ה- post_max_size?
כי אצלי ה- post_max_size מוגדר על 8 מגה ואני רוצה לוודא שהקובץ .htaccess עובד אצלי כמו שצריך..

האם קיים פקודה שמחכה עד שפקודה אחרת מסיימת? ואז אוכל להפעיל אותה על ה- SUBMIT? תודה.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #24  
ישן 23-01-2010, 17:50
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 23 שנכתבה על ידי Eliran10 שמתחילה ב "הסיבה שבגללה אני חושב שהבעיה היא לא בקוד היא.."

ציטוט:
אתה יודע במקרה איך אני מציג בPHP או JS את גודל ה- POST או את ערך ה- post_max_size?

ב-PHP: תעבור על מערך ה-POST ועל כל איבר תריץ ()strlen. חבר את התוצאות למשתנה מסכם.
למציאת post_max_size, השתמש ב- ini_get().

ציטוט:
האם קיים פקודה שמחכה עד שפקודה אחרת מסיימת? ואז אוכל להפעיל אותה על ה- SUBMIT? תודה.

קיים עבור IE בלבד, האחרים לא מאפשרים את זה. אבל האמת שלא צריך את זה, כיוון שאפשר להקצות handler לאירוע מסוים, ובסיום ה-handler (או יותר נכון, בתוכו) תריץ פונקציה אחרת, וכך תדמה "המתנה" עד שהפקודה האחרת מסתיימת.
ראה: Event compatibility tables

הבעיה, מבחינתי, זה שבנית את האפליקציה בצורה מסובכת מידי... זה לפי דעתי, אני חושב שאפשר לפשט את זה.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #30  
ישן 28-01-2010, 15:32
  Eliran10 Eliran10 אינו מחובר  
 
חבר מתאריך: 23.10.09
הודעות: 30
אוקי עדכון מטורף
בתגובה להודעה מספר 1 שנכתבה על ידי Eliran10 שמתחילה ב "JAVASCRIPT - שאלה בנוגע לביצוע SUBMIT לטופס"

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

1. שם הדף הוא נניח Main.php.
2. כאשר פעולת ה- SUBMIT נעשת בדף Main.php היא מתבצעת בהצלחה.
3. הבעיה מתרחשת בדרך כלל כאשר המשתמש לוחץ על לינק מהסוג הבא: Main.php?action=something
4. במצב זה לא תמיד כל הנתונים נשלחים בהצלחה ל- POST.
5. מצב זה קורה מכיוון שהטופס מוגדר כך:
<form name="main" id="main" method="POST" action="main.php" style="display: inline; margin: 0;">
6. כפי שניתן לראות הנתונים נשלחים לדף: main.php ולא לדף עם תוספות לדוגמא: main.php?someget=something

עשיתי את כל הבדיקות ומכאן נובעת הבעיה בוודאות, לשאלתי החדשה והמעודכנת:
האם ניתן בשלב הגדרת טופס ה- FORM להגדיר את מיקום הדף (action="main.php") למשהו כזה: action="main.php*" עם כוכבית ז"א שהדף ישלח לכל מה שמתחיל בשם הדף? כולל דפים הכוללים העברת משתני GET?

תודה רבה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #33  
ישן 30-01-2010, 16:50
  Eliran10 Eliran10 אינו מחובר  
 
חבר מתאריך: 23.10.09
הודעות: 30
תשובות + הסבר
בתגובה להודעה מספר 32 שנכתבה על ידי dorM שמתחילה ב "אני כבר בקושי זוכר את..."

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

לאתר יש 3 שלבים עיקריים:
1. שלב עדכון משתני ה- SESSION, בשלב זה האתר עובר על כל משתני ה- POST ומעדכן את משתני ה- SESSION הרלוונטים.
2. שלב בדיקת ה- GET במידה ויש משתני GET הוא מבצע את הפעולות הרלוונטיות.
3. שלב בניית דף ה- HTML כולל הטופס.

תצורת הטופס:
1. בטופס יש המון שדות INPUT שהמשתמש מכניס לשם נתונים.
2. בשלב לפני החלפת העמוד\רפרוש (window.onbeforeunload) הוא מבצע SUBMIT ככה שהנתונים תמיד "אמורים" להתעדכן.
3. כאשר המשתמש רוצה לשנות את "מבנה הטופס" ככה שהוא מוסיף פרמטרים\שדות חדשים הוא בעצם מעביר את הנתונים
דרך משתני GET לדוגמא אם הוא רוצה להוסיף GROUP (חילקתי את הטופס לקבוצות) אז הלינק בנוי כך:
jobprofile.php?action=addgroup
ואז בשלב השני של האתר (שלב טיפול ב- GET נוספת קבוצה חדשה)
מכיוון ששניה לפני שהדף מתחלף הוא עושה SUBMIT "לא אמור להיות בעיה".
4. קיימים שדות בטופס שברגע שאני משנה אותם הם עושים SUBMIT אוטומטי, כתבתי בקוד של ה- INPUT:
onchange="document.jobprofile.submit()"וזה בעצם האפשרות היחידה שהטופס עושה SUBMIT ללא העברה לדף דרך לינק עם משתני GET.

תאור הבעיה:
כאשר המשתמש לוחץ על לינק כלשהו לדוגמא jobprofile.php?action=addgroup או אפילו לינק ללא משתני GETS
כמו jobprofile.php לא כל הנתונים עוברים מה- POST ל- SESSION בשלב 1 (שלב העדכון)
אני רוצה לציין שבבדיקות שעשיתי אם המשתמש משנה ערך INPUT שכתוב בו:
onchange="document.jobprofile.submit()" כל הנתונים תמיד מתעדכנים בהצלחה הבעיה מתרחשת אך ורק כאשר המשתמש לוחץ על לינק (ואז הSUBMIT מתרחש ב- window.onbeforeunload)

נתונים שגיליתי:
בשלב ה- DEBUG עשיתי משתנה SESSION שכל פעם כאשר נכנסים לדף הוא מוסיף 1 אל המשתנה,
ככה אני יכול לדעת כמה פעמים השרת עבר על קוד ה- PHP.
גיליתי שכאשר האתר עושה SUBMIT דרך INPUT עם הקוד:
onchange="document.jobprofile.submit()"
אז הכל בסדר והוא מתקדם ב- 1 בלבד, אך כאשר המשתמש לוחץ על לינק (כדי להעביר משתני GET)
הוא מתקדם ב- 2.
עשיתי בדיקה ומסתבר שהוא מריץ את האתר פעמיים (גם אם אני לא מעביר משתני GET ככה שהוא אמור להריץ פעם אחת בלבד)
בפעם הראשונה הוא רק עושה חישובים ולא מבצע שום הדפסות למסך!
ז"א שאם בתחילת הקוד יש ALERT של JS אז המשתמש לא רואה אותו, ומיד לאחר שהוא מסיים הוא
מעלה את האתר שוב, כמובן שבפעם השניה הוא לא מעדכן את נתוני ה- SESSION מנתוני ה- POST מכיוון שאין POST כי האתר עלה שוב.
(לפני שלב העדכון האתר בודק אם ה- POST בכלל קיים)

מסקנה - כאשר המשתמש לוחץ על לינק (כמו הוסף פרמטר) הדף נטען פעמיים (יש לציין שזה לא בעיה בקוד שלי, זה פשוט קורה)
והשלב של עדכון משתני ה- SESSION מנתוני ה- POST לא מתרחש בצורה תקינה בטעינה הראשונה.
לעומת זאת אם האתר עושה SUBMIT כאשר הערך משנה ולא דרך לינק ה- SUBMIT תקין לחלוטין.

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

נערך לאחרונה ע"י Eliran10 בתאריך 30-01-2010 בשעה 16:54.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #34  
ישן 30-01-2010, 19:34
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 33 שנכתבה על ידי Eliran10 שמתחילה ב "תשובות + הסבר"

הבעיה לדעתי קשורה ל:
ציטוט:
הבעיה מתרחשת אך ורק כאשר המשתמש לוחץ על לינק (ואז הSUBMIT מתרחש ב- window.onbeforeunload)


שים לב - מה זה האירוע הזה שהקצת לו מנהל אירוע? מה כתוב בו? ננסה לראות:
onbeforeunload = on before unload = לפני יציאה מהמסמך

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

יציאה מהמסמך כוללת גם לחיצה על קישור. זאת אומרת שאתה גם יוצא מהמסמך ע"י לחיצה על קישור, וגם יוצא מהמסמך בעקבות ה-submission שאתה מבצע במנהל האירוע של window.onbeforeunload.
אז יוצא שאתה שולח פעמיים HTTP request לשרת. פעם אחת זה מסוג GET ( = לחיצה על הקישור) ופעם אחרת זה מסוג POST (ביצוע submission לטופס דרך מנהל האירוע של window.onbeforeunload).

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

אני רואה שעדיין לא ביצעת סדר בקוד, ואני שוב ממליץ בחום לסדר אותו.

נערך לאחרונה ע"י dorM בתאריך 30-01-2010 בשעה 19:36.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #36  
ישן 31-01-2010, 15:07
  Eliran10 Eliran10 אינו מחובר  
 
חבר מתאריך: 23.10.09
הודעות: 30
אני יודע מה צריך להעשות!
בתגובה להודעה מספר 35 שנכתבה על ידי Eliran10 שמתחילה ב "1. אני יודע מה זה..."

אני יודע מה לעשות והבנתי איפה הבעיה ומה צריך בשביל לפתור:
לפנייך הקוד הקיים אשר מתרחש לפני שהדף מתחלף:
קוד:
window.onbeforeunload = function() { GetScroll(); document.jobprofile.submit(); }


עכשיו מה בעצם קורה מאחורי המסך? השרת מבצע את הפעולות הבאות:
1. עושה SUBMIT
2. ברגע שה- SUBMIT מסתיים באופן תקין הוא סוגר את הדף ומעלה את הדף החדש,
ז"א שהוא לא מחכה עד סיום טעינת הדף אלה הוא רק מבצע את ה- SUBMIT ומחליף דף.
3. נכנס ללינק החדש כהלכה.

אז מה בעצם קורה כאן? תשובה - הטופס עושה SUBMIT בצורה טובה אך לאחר ה- SUBMIT
הטופס צריך להעביר את הנתונים מה- POST ל- SESSION אך מכיוון שהוא לא מחכה עד סיום טעינת הדף
לא תמיד כל הנתונים עוברים מה- POST ל- SESSION ומכאן נובעת הבעיה.

אז מה בעצם צריך לעשות? תשובה - צריך שהקוד יראה כך:

קוד:
window.onbeforeunload = function() { GetScroll(); document.jobprofile.submit();
POST פקודה כלשהי שתחכה עד שהדף יסיין להטען כדי שתהליך העברת נתוני ה- יושלם SESSION -ל
}


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

תודה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #37  
ישן 02-02-2010, 10:45
צלמית המשתמש של fealls
  fealls fealls אינו מחובר  
 
חבר מתאריך: 11.03.07
הודעות: 1,668
בתגובה להודעה מספר 1 שנכתבה על ידי Eliran10 שמתחילה ב "JAVASCRIPT - שאלה בנוגע לביצוע SUBMIT לטופס"

במקום להשתמש בלינקים שונים כדי להוסיף עוד שדות לטופס, לא יהיה הרבה יותר פשוט להעזר בJavaScript כדי להוסיף עוד HTML לדף בזמן הריצה שלו?
ככה אין שום צורך בלינקים בזמן עבודה על טופס, בלי צורך בSESSION ובלי צורך בSubmit מוזר? (עריכה: ועוד לא הזכרתי את השימוש בעוד קוד PHP כשניתן לפתור את הבעיה עם HTML)

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

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 19:06

הדף נוצר ב 0.11 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר