![]() |
# 1 |
חסום
|
שגיאה ב foreach
רושם לי שגיאה בזה :
קוד:
foreach($_POST['name'] as $name) { foreach($_POST['goals'] as $goals) { foreach($_POST['assists'] as $assists) { foreach($_POST['open'] as $open) { foreach($_POST['yellows'] as $yellows) { foreach($_POST['reds'] as $reds) { foreach($_POST['grade'] as $grade) { mysql_query("INSERT INTO `playerstat`(open,goals,assists,yellows,reds,grade,playerid) VALUES('$open', '$goals', '$assists', '$yellows', '$reds', '$grade', '$name')"); } } } } } } } |
![]() |
![]() |
# 2 |
חבר בקהילה
|
מה השגיאה?
|
![]() |
![]() |
# 3 |
חבר בקהילה
|
אתה לא הבנת איך משתמשים בforeach כנראה.
מטרת הלולאה היא לעבור על מערך, מה שאתה עשית זה פשוט רצית להציב במשתנה כל ערך של _POST. בשביל לעשות דבר כזה, פשוט היית צריך לעשות ככה: קוד:
$name = $_POST['name']; $goals = $_POST['goals']; $assists = $_POST['assists']; ... mysql_query(...); לדוגמא: קוד:
$arr = array( 'firstname' => 'dvir', 'lastname' => 'cohen' ); foreach( $arr as $name => $val ) { print $name . ": ". $val; } |
![]() |
![]() |
# 4 |
חסום
|
כמו שעשיתי זה המטרה של זה . כמו שאת עשית זה סה"כ מערך אחד
יש לי טופס שהשמות של כל שדה זה מערך אני רוצה להפוך את כל המערכים למשתנים ולהכניס את זה לבסיס נתונים כמו שעשיתי פה : קוד:
foreach($_POST['name'] as $name) { foreach($_POST['goals'] as $goals) { foreach($_POST['assists'] as $assists) { foreach($_POST['open'] as $open) { foreach($_POST['yellows'] as $yellows) { foreach($_POST['reds'] as $reds) { foreach($_POST['grade'] as $grade) { mysql_query("INSERT INTO `playerstat`(open,goals,assists,yellows,reds,grade,playerid) VALUES('$open', '$goals', '$assists', '$yellows', '$reds', '$grade', '$name')"); } } } } } } } רק שהקוד הזה לא עובד .. אבל הבנתם כביכול את המטרה... אז איך אני עושה את זה ? Last edited by kfir91; 23-09-08 at 20:02.. |
![]() |
![]() |
# 5 |
חבר בקהילה
|
שוב אתה לא מבין, המטרה של foreach זה לא לשים איבר של מערך בתוך משנה, אלא לעבור על כל המערך וכל פעם להתייחס לאיבר הנוכחי.
אם אתה רוצה להפוך את איברי המערך למשתנים, יש לך 2 דרכים: 1. הקצרה יותר - להשתמש בextract (פחות מומלץ מכוון שאם יש לך מחלקה למשל DB ויש לך איבר $_POST['DB'] יהיו בעיות). מה שהפונקציה עושה היא הופכת כל איבר במערך למשתנה עם שם האיבר וערכו, כלומר: קוד:
$arr = array( 'name' => 'dvir', 'age' => 17 ); extract( $arr ); // $name = "dvir" $age = 17 קוד:
$name = $_POST['name']; $goals = $_POST['goals']; .... |
![]() |
![]() |
# 6 |
חסום
|
בוא אני ינסה להסביר לך מחדש
זה הטופס כן : קוד:
echo "<tr><td class=\"righttd\"><select name=\"name[$i]\">"; $query = "SELECT * FROM `players` order by number"; $result = mysql_query($query , $db); while ($row=mysql_fetch_array($result)) { echo "<option value=\"$row[id]\">$row[name]</option>"; } echo "</select></td><td class=\"lefttdcheck\"><input type=\"checkbox\" name=\"goals[$i]\">שער <input type=\"checkbox\" name=\"assists[$i]\">בישול <input type=\"checkbox\" name=\"open[$i]\">פתח <input type=\"checkbox\" name=\"yellows[$i]\">צהוב <input type=\"checkbox\" name=\"reds[$i]\">אדום <input type=\"text\" name=\"grade[$i]\">ציון </td></tr>"; } echo "</table><table><tr><td class=\"submitbar\"><input type=\"submit\" name=\"submit\" value=\"שלח\"></td></tr></table></form>"; בשביל זה צריך foreach שיבודד את המערכים למשתנה וכל פעם יכניס. ניסיתי לעשות כמו בקוד שרשמתי למעלה לא עובד. יש קוד אחר שיכניס לי את כל הנתונים שנכנסים פה למערך ? Last edited by kfir91; 23-09-08 at 21:26.. |
![]() |
![]() |
# 7 |
Winner
|
כפיר, צר לי איך דביר דובר אמת..
בתוך המשתנה $_POST['name'] אין מערך. יש מחרוזת רגילה. אלא אם עשית משהו אחר, ותצטרך להראות את שאר הקוד. בתוך הforeach אתה שם מערך, ומה שאתה שמת זה מחרוזת.
__________________
בברכה, רום. מתכנת אפליקציות אינטרנט. אימייל: Rom.As10@gmail.com מסנג'ר: Rom_as10@hotmail.com |
![]() |
![]() |
# 8 |
חסום
|
עכשיו תגידו לי שאסור לשים $_POST ב foreach תגידו אתם עושים צחוק איזה מחרוזת ?
הסברתי בצורה מפורטת מה אני צריך , יש לי טופס שהשמות של השדות בטופס הם מערכים מה שאני צריך שהנתון בכל אחד מתא במערך יכנס למקום המדויק שלו במסד נתונים כמו שעשיתי. איך אני עושה את זה |
![]() |
![]() |
# 9 |
Winner
|
איך השמות של השדות בטופס יכולים להיות מערך?
ו $_POST אתה כן יכול לשים בforeach אבל $_POST["name"] אתה לא יכול..
__________________
בברכה, רום. מתכנת אפליקציות אינטרנט. אימייל: Rom.As10@gmail.com מסנג'ר: Rom_as10@hotmail.com |
![]() |
![]() |
# 10 |
חסום
|
מחייה שפת ה PHP וואלה יופי . זה לא פעם ראשונה שאני משתמש ב foreach ואני אומר לך שכן אפשר לשים $_POST[name] בתוך foreach וזה כן עובד. אבל פה פשוט זה לא עובד לי כי שמתי foreach בתוך foreach אז מה שאני מחפש זה שיטה אחרת.
בד"כ שעשיתי את זה עבדתי רק עם foreach אחד אז זה עבד. |
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|