פורסם 2010 ביוני 2415 שנים התחלתי ללמוד את השפה, ואני מנסה לבנות דף של משחק מלחמה (שני משתמשים - מי שיש לו את המספר הגבוה מנצח).זה הקוד שכתבתי. הבעיה היא שלא משנה באיזה כפתור אני בוחרת (המשך במשחק / יציאה), הוא מבצע את הIF הראשון (להתחיל משחק חדש):<?phpsession_start();?><html dir = "rtl"><?phpif((!isset($_POST["submit"]))||((isset($_POST["select"]))&&($_POST["opt"]=="n"))||(isset($_POST["new"]))){?> <body> <form action ="game.php" method ="post"> <font size ="4" color ="blue">שלום וברוכים הבאים למשחק מלחמה</font><br> <font size ="3" color ="black">הכניסו את שמות השחקנים</font><br> שחקן 1: <input type ="text" name= "user1"> <br> שחקן 2: <input type ="text" name= "user2"><br><br> <input type ="submit" name= "submit" value ="התחל"> </form> </body><?php $_SESSION["sum1"] = 0; $_SESSION["sum2"] = 0; $_SESSION["flag"] = "false";}else{ if((isset($_POST["select"]))&&($_POST["opt"]=="e")) { echo "תודה ששחקתם"; if($_SESSION["sum1"]>$_SESSION["sum2"]) { echo $_SESSION["player1"]." ניצח<br>"; } else if($_SESSION["sum1"]>$_SESSION["sum2"]) { echo $$_SESSION["player2"]." ניצח<br>"; } else { echo "תיקו<br>"; } ?> <body> <form action = "game.php" method = "post"> <br> <input type = "submit" name = "new" value = "משחק חדש"> </form> </body> <?php session_destroy(); } $_SESSION["flag"] = "true"; $_SESSION["player1"] = $_POST["user1"]; $_SESSION["player2"] = $_POST["user2"]; $randNum1 = rand(1,10); $randNum2 = rand(1,10); echo $_SESSION["player1"]." הגריל ".$randNum1."<br>"; echo $_SESSION["player2"]." הגריל ".$randNum2."<br>"; if($randNum1>$randNum2) { echo $_SESSION["player1"]." ניצח<br>"; ++$_SESSION["sum1"]; } else if($randNum2>$randNum1) { echo $_SESSION["player2"]." ניצח<br>"; ++$_SESSION["sum2"]; } else { echo "תיקו<br>"; } if($_SESSION["flag"]=="true") { echo "<br>סך ניצחונות של ".$_SESSION["player1"]." הוא ".$_SESSION["sum1"]."<br>"; echo "סך ניצחונות של ".$_SESSION["player2"]." הוא ".$_SESSION["sum2"]."<br><br>"; }?> <body> <form action ="game.php" method ="post"> <input type = "radio" name = "opt" value ="p">המשך לשחק<br> <input type = "radio" name = "opt" value ="n">משחק חדש<br> <input type = "radio" name = "opt" value ="e">יציאה<br><br> <input type = "submit" name = "select" value ="המשך"> </form> </body><?php}?></html>
פורסם 2010 ביולי 215 שנים הבעיה היא ש-PHP לא יכולה לפענח משפט תנאי שבתנאי מצויין גם OR ו-OR וגם AND ביחד. את צריכה לפצל את התנאי ל if\elseif.לדוגמה, נניח שטופס ההתחלה הושם לתוך פונקציה בשם Get_started() (מטעמי נוחות), ככה התנאי צריך לבוצע בקוד:if (!isset($_POST['submit'])){ echo get_started();}elseif (isset($_POST['select']) AND $_POST['opt'] == "n"){ echo get_started();}elseif (isset($_POST['new'])){ echo get_started();}else{ // שאר תוכן המשחק נכנס פה}
פורסם 2010 ביולי 215 שנים בטח שהמפענח יודע להשתמש בהם בצורה משולבת.פותחת האשכול, יתכן שאת שולחת את הנתונים פשוט בלי ערך?תנסי להשתמש ב emptyif((empty($_POST["submit"]))||((isset($_POST["select"]))&&($_POST["opt"]=="n"))||(isset($_POST["new"])))
פורסם 2010 ביולי 215 שנים ^ ירח אפל, בכל ההרבה זמן שאני מתכנת הצורה הזו בחיים לא עבדה. PHP לגמרי מתבלבלת כשאתה עושה את זה בצורה הנ"ל.
פורסם 2010 ביולי 315 שנים name="select"מה לא ברור? זה לא השם שלו, זה הסוג, ובגלל זה כל פעם שהיא בודקת אם הוא לא נמצא , הוא באמת לא נמצא ולכן תמיד מתבצע קטע הקוד הראשון
פורסם 2010 ביולי 315 שנים עריכה- סורי, הבנתי על מה אתה מדבר. מוזר שפספסנו את זה.השם של פקד ה Submit הוא בכלל Select ולא Submit.אני חושב שפותחת הת'רד כבר עלתה על זה מזמן אז הת'רד מיותר...
פורסם 2010 ביולי 315 שנים ^ ירח אפל, בכל ההרבה זמן שאני מתכנת הצורה הזו בחיים לא עבדה. PHP לגמרי מתבלבלת כשאתה עושה את זה בצורה הנ"ל.החלק המודגש נהיה מאוד לא הגיוני לאור התגובה האחרונה שלך שלא מבינה מה זה type ומה זה name ועם איזה פרמטר בודקים את הערך של הפקד...אגב לגבי השילוב של and ו-or, ברור שזה אפשרי. php ממש לא "לגמרי מתבלבלת", מי שלגמרי מתבלבל הוא כנראה אתה.. בדיוק כמו בשיעורי חשבון, עם פעולות חיבור/חיסור/כפל/חילוק - הכל מתבצע לפי הסדר הכרונולוגי כברירת מחדל, ואם אתה רוצה לקבוע משהו אחר - שים סוגריים, ושים אותם כמו שצריך.
פורסם 2010 ביולי 315 שנים התגובה האחרונה שלי נערכה, חשבתי שהוא מתכוון שה name מציין איזה סוג האינפוט ולא שמתי לב שהיא קראה לפקד בכלל Select.ואני לא מתבלבל, השיטה הנ"ל אף פעם לא עבדה גם עם סוגריים. אולי יש בעיה כלשהי עם המאיץ שאני עובד איתו אם אתה והשאר אומרים שזה עובד.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.