Передать HTML Select в переменную PHP - PullRequest
2 голосов
/ 15 июня 2011

У меня есть несколько операторов 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);
   ?>

На данный момент значения помещаются в базу данных, но значение, вставленное в базу данных, - это число 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 ]

7 голосов
/ 15 июня 2011

Вы можете получить доступ к gamestart, отправленному из формы, используя $_POST['gamestart'] или $_GET['gamestart'] в зависимости от method, установленного в вашей форме (если нетmethod атрибут, это будет GET).

Ваш $gamestart установлен на 25, прежде чем я предполагаю, что цикл 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')";

РЕДАКТИРОВАТЬ: Вы можете получить доступ к своим переменным GET и POST просто как $gamestart, если у вас включен register_globals.Но вы должны отключить его, а не писать какой-либо код, который зависит от него.Для чего ищите его в Google.

2 голосов
/ 15 июня 2011

Ваш тег form должен выглядеть примерно так: <form action="thepage.php" method="post">

Вам необходимо указать URL-адрес файла в атрибуте action (при желании вы можете использовать ту же страницу, на которой находится форма). Когда форма отправлена, данные отправляются на эту страницу через HTTP POST (в этом случае это может быть GET, если вы указали method="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 голосов
/ 15 июня 2011

Ваш тег формы работает не так, как вы хотите.

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

Что он сделает, так это запустит insertstatements, а затем ничего не отобразит, создав таким образом тег формы:

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

Пустое действие сделает скрипт POST для себя.Если это то, что вам нужно, то оставьте его, или вы можете сделать это публикацией на определенной странице, установив действие для этой страницы.

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

Чтобы прочитать переменные из формы, используйте, $_POST,Например: $_POST['gamestart'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...