2015-02-09 47 views
0

我是PHP新手(已經愛好了) 我有一張表格查找發送「高爾夫球洞」信息並允許高爾夫球員輸入他們洞洞分數的表格。我的問題是,我可以通過查看hole_detail表來呈現第一個洞,但卻無法弄清楚表單在提交表單時如何循環通過表2,3 ... 18。我搜索了stackoverflow,但無法找到任何具體的關於它。我嘗試了if語句,if(isset($ _ POST ['Submit']))嘗試增加$ hole_id。我完全用錯誤的方式去談論它嗎?提前致謝。遞增變量提交更新mysql查詢

<?php 
include ('../scripts/dbconfig.php'); 
# get the most recent course name: 
$get_course_name = mysql_query("SELECT course_name FROM comp ORDER BY PID DESC LIMIT 1"); 
$show_course_name = mysql_fetch_array($get_course_name); 

if (isset($_POST['Submit'])) { 
$hole_id =1; 
else { 
$hole_id = $hole_id + 1; 
} 
} 

# get the hole yardage and SI from most recent selected golf course: 
$get_course_detail = mysql_query("SELECT * FROM `course_detail` WHERE course_name = '". $show_course_name['course_name'] . "'"); 
$show_course_detail = mysql_fetch_array($get_course_detail); 
$get_hole_detail = mysql_query("SELECT * FROM `course_detail`,`phoenix_hole` WHERE Course_ID = 6 AND hole_id = $hole_id"); 
$show_hole_detail = mysql_fetch_array($get_hole_detail); 


?> 
</head> 
<body> 
<table width="300" cellspacing="0" cellpadding="0"> 
<tr> 
    <td width="40"><?php echo $show_course_name['course_name'];?></td> 
</tr> 
<tr> 
    <td width="20">HOLE <?php echo $show_hole_detail['hole_id']?></td> 
    <td width="5"> PAR <?php echo $show_hole_detail['hole_par'];?></td> 
</tr> 
<tr> 
    <td width="20">Yards</td> 
    <td width="20">S.I</td> 
</tr> 
<tr> 
    <td bgcolor="yellow"><?php echo $show_hole_detail['yellow_yards'];?></td> 
    <td><?php echo $show_hole_detail['hole_si'];?></td> 
</tr> 
<tr> 
    <td border="1px" bgcolor="white"><?php echo $show_hole_detail['white_yards'];?></td> 
    <td><?php echo $show_hole_detail['hole_si'];?></td> 
</tr> 
<tr> 
    <td bgcolor="red"><?php echo $show_hole_detail['red_yards'];?></td> 
    <td><?php echo $show_hole_detail['hole_si'];?></td> 
</tr> 
</table> 

</p> 
<form id="game_form" name="game_form" method="post" action="game_form.php"> 
    <table width="300" border="0" align="left" cellpadding="2" cellspacing="0"> 
    <tr> 
     <td><b>Hole Shots</b></td> 
     <td><input name="hole_shots" type="text" class="textfield" id="hole_shots" maxlength="2" size="3" ></td> 
     <td><b>Putts</b></td> 
     <td><input name="putts" type="text" class="textfield" id="putts" maxlength="2" size="3"></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
     <td><input type="submit" name="Submit" value="Next Hole" align="center" /></td> 
    </tr> 
    </table> 
</form> 
</body> 
</html> 
+0

請注意 - 您的SQL語句容易受到[SQL注入](http://php.net/manual/en/security.database.sql-injection.php)的影響。 – 2015-02-09 21:16:24

+0

感謝Ramis Wachtler,這還沒有投入生產。安全將被應用,然後它被釋放到大壞的世界:-) – Conokia 2015-02-10 12:33:46

回答

0

$hole_id,在這種情況下,將永遠1,因爲當用戶點擊該按鈕Submit$_POST['Submit']總會有一個值。您應該做的是$_POST['Submit']包含的值爲$hole + 1。 PHP不會「記住」上一次使用的是什麼$hole_id;這是由你來提醒它。只要向瀏覽器發送請求,除非您使用會話 --PHP忘記了有關該請求的所有內容(HTTP爲「無狀態」)。

<?php 
if (isset($_POST['Submit'])) { 
    $hole_id = (int)$_POST['Submit']; 
} else { 
    $hole_id = 1; 
} 

# other code here 

?> 
You are on hole #<?php echo $hole_id; ?>. 
<form> 
    <!-- form stuff here --> 
    <button type="submit" name="Submit" value="<?php echo $hole_id + 1; ?>">Next hole</button> 
</form> 
+0

嗨,我試了這個,並得到以下致命錯誤:在game_form.php在線16調用未定義的函數int()。第16行是$ hole_id = int ($ _POST [ '提交']);想法? – Conokia 2015-02-10 13:19:09

+0

啊,對不起。應該是'(int)$ _ POST ['Submit']'。我將編輯答案來反映這一點。 – haliphax 2015-02-10 17:05:51

+0

感謝託德,這是一種享受,我需要添加一些邏輯,當高爾夫球手完成洞18(參觀19?lol) – Conokia 2015-02-10 17:54:23

0

或者你可以使用一個隱藏的字段來保存洞號,你可以從php中增加它。