הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 23-09-08, 17:24   # 1
kfir91
חסום
 
מיני פרופיל
תאריך הצטרפות: Apr 2007
הודעות: 220

kfir91 לא מחובר  

שגיאה ב 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')");
} } } } } } }
מה הבעיה? ואם אי אפשר לעשות ככה איך עושים
  Reply With Quote
ישן 23-09-08, 18:52   # 2
Xinxy
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 259

Xinxy לא מחובר  

מה השגיאה?
  Reply With Quote
ישן 23-09-08, 19:11   # 3
DvirCohen
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Dec 2007
הודעות: 151

DvirCohen לא מחובר  

אתה לא הבנת איך משתמשים בforeach כנראה.
מטרת הלולאה היא לעבור על מערך, מה שאתה עשית זה פשוט רצית להציב במשתנה כל ערך של _POST.
בשביל לעשות דבר כזה, פשוט היית צריך לעשות ככה:

קוד:
$name = $_POST['name'];
$goals = $_POST['goals'];
$assists = $_POST['assists'];
...
mysql_query(...);
בforeach צריך לתת מערך, לא איבר של מערך (שהוא לא מערך כמובן).
לדוגמא:

קוד:
$arr = array( 'firstname' => 'dvir', 'lastname' => 'cohen' );

foreach( $arr as $name => $val )
{
  print $name . ": ". $val;
}
  Reply With Quote
ישן 23-09-08, 19:59   # 4
kfir91
חסום
 
מיני פרופיל
תאריך הצטרפות: Apr 2007
הודעות: 220

kfir91 לא מחובר  

כמו שעשיתי זה המטרה של זה . כמו שאת עשית זה סה"כ מערך אחד

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

כמו שעשיתי פה :



קוד:
 

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..
  Reply With Quote
ישן 23-09-08, 20:27   # 5
DvirCohen
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Dec 2007
הודעות: 151

DvirCohen לא מחובר  

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

1. הקצרה יותר - להשתמש בextract (פחות מומלץ מכוון שאם יש לך מחלקה למשל DB ויש לך איבר $_POST['DB'] יהיו בעיות).
מה שהפונקציה עושה היא הופכת כל איבר במערך למשתנה עם שם האיבר וערכו, כלומר:

קוד:
$arr = array( 'name' => 'dvir', 'age' => 17 );
extract( $arr ); // $name = "dvir" $age = 17
2. פשוט להציב משתנים..
קוד:
$name = $_POST['name'];
$goals = $_POST['goals'];
....
  Reply With Quote
ישן 23-09-08, 21:19   # 6
kfir91
חסום
 
מיני פרופיל
תאריך הצטרפות: Apr 2007
הודעות: 220

kfir91 לא מחובר  

בוא אני ינסה להסביר לך מחדש
זה הטופס כן :
קוד:
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..
  Reply With Quote
ישן 23-09-08, 21:40   # 7
Rom
Winner
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,359

Rom לא מחובר  

כפיר, צר לי איך דביר דובר אמת..
בתוך המשתנה $_POST['name'] אין מערך. יש מחרוזת רגילה.
אלא אם עשית משהו אחר, ותצטרך להראות את שאר הקוד.

בתוך הforeach אתה שם מערך, ומה שאתה שמת זה מחרוזת.
__________________
בברכה, רום.
מתכנת אפליקציות אינטרנט.

אימייל: Rom.As10@gmail.com
מסנג'ר: Rom_as10@hotmail.com
  Reply With Quote
ישן 23-09-08, 21:56   # 8
kfir91
חסום
 
מיני פרופיל
תאריך הצטרפות: Apr 2007
הודעות: 220

kfir91 לא מחובר  

עכשיו תגידו לי שאסור לשים $_POST ב foreach תגידו אתם עושים צחוק איזה מחרוזת ?
הסברתי בצורה מפורטת מה אני צריך , יש לי טופס שהשמות של השדות בטופס הם מערכים
מה שאני צריך שהנתון בכל אחד מתא במערך יכנס למקום המדויק שלו במסד נתונים כמו שעשיתי.
איך אני עושה את זה
  Reply With Quote
ישן 23-09-08, 21:57   # 9
Rom
Winner
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,359

Rom לא מחובר  

איך השמות של השדות בטופס יכולים להיות מערך?

ו $_POST אתה כן יכול לשים בforeach
אבל $_POST["name"] אתה לא יכול..
__________________
בברכה, רום.
מתכנת אפליקציות אינטרנט.

אימייל: Rom.As10@gmail.com
מסנג'ר: Rom_as10@hotmail.com
  Reply With Quote
ישן 23-09-08, 21:59   # 10
kfir91
חסום
 
מיני פרופיל
תאריך הצטרפות: Apr 2007
הודעות: 220

kfir91 לא מחובר  

מחייה שפת ה PHP וואלה יופי . זה לא פעם ראשונה שאני משתמש ב foreach ואני אומר לך שכן אפשר לשים $_POST[name] בתוך foreach וזה כן עובד. אבל פה פשוט זה לא עובד לי כי שמתי foreach בתוך foreach אז מה שאני מחפש זה שיטה אחרת.
בד"כ שעשיתי את זה עבדתי רק עם foreach אחד אז זה עבד.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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