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

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

AlonMi 17-07-11 16:43

שאלה | לגבי עריכת ספציפית של INPUT בדף עם עוד שדות
 
שלום לכם,

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

דוגמה:

INPUT 1 | ערוך
INPUT 2 | ערוך
INPUT 3 | ערוך
INPUT 4 | ערוך
....

ערוך את כולם

כביכול צריך לעשות כאן FORM אחד שיכלול את כל התוכן ו-FORMים נוספים בתוכו. אבל זה כמובן לא אפשרי/לא חוקי מבחינת W3C
בהנחה ומס' ה-INPUTים בלתי מוגבל ולא קבוע. מה אפשר לעשות?

תודה מראש.

MasterNetwork 17-07-11 16:54

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

AlonMi 17-07-11 17:09

ציטוט:

נכתב במקור על ידי MasterNetwork (פרסם 811483)
מזאת אומרת כמה פורמים?
תסביר בדיוק בדיוק מה אתה רוצה ואני יוכל לעזור לך.

אוקיי אני אנסה לדייק יותר בבעיה -

הדף נראה כך:

נתונים שקיימים במסד מוצגים בתוך תיבות טקסט שניתנות לעריכה:
נתון א (INPUT)
נתון ב (INPUT)
נתון ג (INPUT)
נתון ד (INPUT)

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

<form>
<input value="a">
<input value="b">
<input value="c">
...
</form>

בסוף הטופס, צריך להיות כפתור כללי של "שמור את הנתונים", שישמור את כל העריכות שנעשו בדף.

MasterNetwork 17-07-11 17:15

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

קוד:

<form>
<input type="id[1]">
<input type="id[2]">
<input type="id[3]">
<input type="id[4]">
<input type="id[5]">
</form>

<?php
for ($i=1; ; $i++){

$value=$_POST["id[{$i}]"];
if ($i==10){ break; }
update where id=$i set value=$value;

}
?>


AlonMi 17-07-11 17:21

ציטוט:

נכתב במקור על ידי MasterNetwork (פרסם 811486)
תחשב כמה איידים יש לך שם והנה פחות או יותר איך תפעיל את זה.

קוד:

<form>
<input type="id[1]">
<input type="id[2]">
<input type="id[3]">
<input type="id[4]">
<input type="id[5]">
</form>

<?php
for ($i=1; ; $i++){

$value=$_POST["id[{$i}]"];
if ($i==10){ break; }
update where id=$i set value=$value;

}
?>


את השיטה הזו אני מכיר, השאלה שלי היא אם אפשר לעשות את זה ללא FOR...

עריכה: אני חושב שאני אעשה SESSION עם COUNT של ה-ID'S. וזה יפתור את הבעיה.

MasterNetwork 17-07-11 17:28

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

AlonMi 18-07-11 08:54

ציטוט:

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

כן, נכון :)

בכל מקרה, אני רוצה להתעקש ולחפש פתרון שיאפשר לי לערוך גם פר אותו נתון (כלומר ליד כל INPUT שיהיה SUBMIT משלו), יש רעיון?

תודה רבה על העזרה MasterNetwork

RAS 18-07-11 09:18

אלון, אתה יכול לשלב jQuery עם ajax, ללא כל צורך בכפתור submit או טופס כלשהו, ולשלב קישור ליד כל input שיפנה לקריאת ajax.

AlonMi 18-07-11 10:20

ציטוט:

נכתב במקור על ידי RAS (פרסם 811549)
אלון, אתה יכול לשלב jQuery עם ajax, ללא כל צורך בכפתור submit או טופס כלשהו, ולשלב קישור ליד כל input שיפנה לקריאת ajax.

חשבתי על זה, אבל זה אתר לקהל יעד מבוגר,
אני חושב שזה יהיה טיפה יותר מדי מתקדם בשבילו :)

AlonMi 18-07-11 10:39

ציטוט:

נכתב במקור על ידי MasterNetwork (פרסם 811486)
תחשב כמה איידים יש לך שם והנה פחות או יותר איך תפעיל את זה.

קוד:

<form>
<input type="id[1]">
<input type="id[2]">
<input type="id[3]">
<input type="id[4]">
<input type="id[5]">
</form>

<?php
for ($i=1; ; $i++){

$value=$_POST["id[{$i}]"];
if ($i==10){ break; }
update where id=$i set value=$value;

}
?>


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

MasterNetwork 18-07-11 19:46

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

BuildDream 18-07-11 21:13

פשוט מאוד לעשות את זה. אם אני לא טועה כשיש מספר כפתורי Submit - רק זה שנלחץ נשלח לשרת. תבדוק את זה, אם זה ככה אז נפתרה לך הבעיה.
אם לא, תעשה input hidden. בכל פעם שילחצו על כפתור "ערוך" מסויים, הכפתור ישנה את הערך של הhidden שלך לID של השורה שאתה עורך, ורק אז ישלח את הטופס.
במידה ולחצו על "ערוך הכל" - הוא יכניס לhidden את הערך 0 ואז ישלח את הטופס. ואז בשרת כשמתקבל 0 תערוך את כולם, וכשמתקבל מספר גדול מ0 תערוך רק את זה עם הID שקיבלת.

MasterNetwork 19-07-11 03:14

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

AlonMi 19-07-11 08:42

ציטוט:

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

זה מה שביקשתי, יהיו המון כפתורים בדף, ויש סיבה לזה...

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


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

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