2011-06-15 81 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,如读的变量。