2011-06-15 93 views
2

我有幾個看起來像這樣的選擇語句。我需要將php變量傳入我的數據庫。通過HTML選擇到PHP變量

<select name="gamestart" > 
<?php for($gamestart=1; $gamestart<=24; $gamestart++) 
echo "<option value='$gamestart'>$gamestart:00</option>"; 
?> 
</select> 

這是我的插入語句到我的數據庫與其他類似的變量,我有同樣的問題。

 <?php 
    $mysql_query = "INSERT INTO soccer_games (gamestart, gameend) 
     VALUES ('$gamestart', '$gameend')"; 

    $this->db->query($mysql_query); 
    ?> 

截至目前,價值觀會被放進數據庫中,但無論是INSERT'ed到數據庫中的值是什麼值的25號(甚至在我的循環,你可以看到一個選項)我在表格中選擇。

===============

編輯1: 的問題可能會是,我沒有在我無窮的智慧使用的形式(我不知道我需要一個表格)。

我假設我需要這種性質的東西...

public function insertstatements(){ 
<?php 
    $mysql_query = "INSERT INTO soccer_games (gamestart, gameend) 
     VALUES ('$gamestart', '$gameend')"; 

    $this->db->query($mysql_query); 
    ?> 
} 


<form method="post" action="<?php insertstatements(); ?>"> 


<select name="gamestart" > 
<?php for($gamestart=1; $gamestart<=24; $gamestart++) 
echo "<option value='$gamestart'>$gamestart:00</option>"; 
?> 
</select> 
</form> 
+1

請從HTTP請求中顯示'gamestart'的值如何閱讀 – 2011-06-15 17:22:22

+2

在查詢之前,您在哪裏給'$ gamestart'和'$ gameend'賦值?我有一種感覺,你在提交表單之前運行了插入代碼......(這就是爲什麼'gamestart'是25,它的值是你的循環完成後的值) – 2011-06-15 17:23:28

+0

告訴我們你是如何獲得價值的在您的查詢中爲'$ gamestart'提供GET/POST,以及您使用它進行的所有操作。 Upd:Yay三個同樣的問題打你「帕斯卡」,試圖咀嚼那個......:P – Shef 2011-06-15 17:23:53

回答

7

您可以通過訪問從形式發送的gamestart要麼$_POST['gamestart']$_GET['gamestart']取決於你的形式method集(如果沒有method屬性,它將會是GET)。

您的$gamestart設置爲25,然後我猜for for循環在數據庫插入邏輯之前,所以它的值將被設置爲25

請務必將其放入查詢之前使用您的變量mysql_real_escape_string,否則你可能會受到一些SQL注入攻擊,很容易。 永遠不要相信用戶輸入!

所以正確的例子是(我不知道您取得$gameend,但如果是還從形式,做同樣的話):

$gamestart=mysql_real_escape_string($_POST['gamestart']); 
$mysql_query = "INSERT INTO soccer_games (gamestart, gameend) 
     VALUES ('$gamestart', '$gameend')"; 

編輯:如果您啓用了register_globals,則可以訪問您的GET和POST變量,簡單地爲$gamestart。但是你應該關閉它,不要寫任何依賴它的代碼。對於這些問題,請在Google上進行搜索。

2

form標籤應該是這個樣子:<form action="thepage.php" method="post">

你需要把文件的URL在action屬性(可以使用同一個頁面的形式是,如果你喜歡)。表單提交後,數據通過HTTP POST發送到該頁面(在這種情況下,如果指定了method="get",則可能爲GET)。

在您發送數據的頁面上,您可以使用$_POST["fieldName"]從表單中檢索數據。

你可以因此做這樣的事情(假設gameend是另一個字段的名稱與形式):

$gamestart = mysql_real_escape_string($_POST["gamestart"]); 
$gameend = mysql_real_escape_string($_POST["gameend"]); 
$mysql_query = "INSERT INTO soccer_games(gamestart, gameend) VALUES('$gamestart', '$gameend')"; 
0

你的表單標籤不工作,你所希望的方式。

<form method="post" action="<?php insertstatements(); ?>"> 

這將完成運行insertstatements並沒有呼應,從而使一個表單標籤,如:

<form method="post" action=""> 

一個空白的動作將使得腳本POST本身。如果這是你想要的然後離開它,或者你可以通過設置操作到該頁面來發布到某個頁面。 $_POST['gamestart']

<form method="post" action="submit.php"> 

要從形式使用,$_POST,如讀的變量。