将HTML Select传递给PHP变量

时间:2011-06-15 17:19:47

标签: php mysql html forms

我有几个select语句看起来像这样。我需要将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进入数据库的值是数字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>

3 个答案:

答案 0 :(得分:7)

您可以使用 gamestart $_POST['gamestart'] 访问表单发送的$_GET['gamestart'],具体取决于{{1}在表单中设置(如果没有method属性,则为GET)。

在我认为for循环在数据库插入逻辑之前之前,method设置为$gamestart,因此其值将设置为25

在将变量放入查询之前,请确保对变量使用25 ,否则您很容易遭受一些 SQL注入攻击。 绝不相信用户输入!

所以一个正确的例子是(我不知道你从哪里得到mysql_real_escape_string,但是如果它也来自表格,那么就这样做了):

$gameend

编辑:如果您$gamestart=mysql_real_escape_string($_POST['gamestart']); $mysql_query = "INSERT INTO soccer_games (gamestart, gameend) VALUES ('$gamestart', '$gameend')"; 已启用,则可以将{GET和POST变量简单地视为$gamestart。但你应该关闭它,而不是写任何依赖它的代码。对于这些为什么,请在Google上搜索。

答案 1 :(得分: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')";

答案 2 :(得分:0)

您的表单标记无法按您的方式运行。

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

这样做是运行insertstatements然后回显任何东西,从而制作一个表格标签,如:

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

空白操作会使脚本POST成为自己。如果这是您想要的,那么请将其保留,或者您可以通过将操作设置到该页面来将其发布到某个页面。

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

要从表单使用$_POST中读取变量,例如:$_POST['gamestart']